{
	"information_for_contributors": [
		"This file has been converted from https://github.com/textmate/yaml.tmbundle/blob/master/Syntaxes/YAML.tmLanguage",
		"If you want to provide a fix or improvement, please create a pull request against the original repository.",
		"Once accepted there, we are happy to receive an update request."
	],
	"version": "https://github.com/textmate/yaml.tmbundle/commit/e54ceae3b719506dba7e481a77cea4a8b576ae46",
	"name": "YAML",
	"scopeName": "source.yaml",
	"patterns": [
		{
			"include": "#comment"
		},
		{
			"include": "#property"
		},
		{
			"include": "#directive"
		},
		{
			"match": "^---",
			"name": "entity.other.document.begin.yaml"
		},
		{
			"match": "^\\.{3}",
			"name": "entity.other.document.end.yaml"
		},
		{
			"include": "#node"
		}
	],
	"repository": {
		"block-collection": {
			"patterns": [
				{
					"include": "#block-sequence"
				},
				{
					"include": "#block-mapping"
				}
			]
		},
		"block-mapping": {
			"patterns": [
				{
					"include": "#block-pair"
				}
			]
		},
		"block-node": {
			"patterns": [
				{
					"include": "#prototype"
				},
				{
					"include": "#block-scalar"
				},
				{
					"include": "#block-collection"
				},
				{
					"include": "#flow-scalar-plain-out"
				},
				{
					"include": "#flow-node"
				}
			]
		},
		"block-pair": {
			"patterns": [
				{
					"begin": "\\?",
					"beginCaptures": {
						"1": {
							"name": "punctuation.definition.key-value.begin.yaml"
						}
					},
					"end": "(?=\\?)|^ *(:)|(:)",
					"endCaptures": {
						"1": {
							"name": "punctuation.separator.key-value.mapping.yaml"
						},
						"2": {
							"name": "invalid.illegal.expected-newline.yaml"
						}
					},
					"name": "meta.block-mapping.yaml",
					"patterns": [
						{
							"include": "#block-node"
						}
					]
				},
				{
					"begin": "(?x)\n                        (?=\n                            (?x:\n                                  [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                                | [?:-] \\S\n                            )\n                            (\n                                  [^\\s:]\n                                | : \\S\n                                | \\s+ (?![#\\s])\n                            )*\n                            \\s*\n                            :\n\t\t\t\t\t\t\t(\\s|$)\n                        )\n                    ",
					"end": "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                        )\n                    ",
					"patterns": [
						{
							"include": "#flow-scalar-plain-out-implicit-type"
						},
						{
							"begin": "(?x)\n                                  [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                                | [?:-] \\S\n                            ",
							"beginCaptures": {
								"0": {
									"name": "entity.name.tag.yaml"
								}
							},
							"contentName": "entity.name.tag.yaml",
							"end": "(?x)\n                                (?=\n                                      \\s* $\n                                    | \\s+ \\#\n                                    | \\s* : (\\s|$)\n                                )\n                            ",
							"name": "string.unquoted.plain.out.yaml"
						}
					]
				},
				{
					"match": ":(?=\\s|$)",
					"name": "punctuation.separator.key-value.mapping.yaml"
				}
			]
		},
		"block-scalar": {
			"begin": "(?:(\\|)|(>))([1-9])?([-+])?(.*\\n?)",
			"beginCaptures": {
				"1": {
					"name": "keyword.control.flow.block-scalar.literal.yaml"
				},
				"2": {
					"name": "keyword.control.flow.block-scalar.folded.yaml"
				},
				"3": {
					"name": "constant.numeric.indentation-indicator.yaml"
				},
				"4": {
					"name": "storage.modifier.chomping-indicator.yaml"
				},
				"5": {
					"patterns": [
						{
							"include": "#comment"
						},
						{
							"match": ".+",
							"name": "invalid.illegal.expected-comment-or-newline.yaml"
						}
					]
				}
			},
			"end": "^(?=\\S)|(?!\\G)",
			"patterns": [
				{
					"begin": "^([ ]+)(?! )",
					"end": "^(?!\\1|\\s*$)",
					"name": "string.unquoted.block.yaml"
				}
			]
		},
		"block-sequence": {
			"match": "(-)(?!\\S)",
			"name": "punctuation.definition.block.sequence.item.yaml"
		},
		"comment": {
			"begin": "(?:(^[ \\t]*)|[ \\t]+)(?=#\\p{Print}*$)",
			"beginCaptures": {
				"1": {
					"name": "punctuation.whitespace.comment.leading.yaml"
				}
			},
			"end": "(?!\\G)",
			"patterns": [
				{
					"begin": "#",
					"beginCaptures": {
						"0": {
							"name": "punctuation.definition.comment.yaml"
						}
					},
					"end": "\\n",
					"name": "comment.line.number-sign.yaml"
				}
			]
		},
		"directive": {
			"begin": "^%",
			"beginCaptures": {
				"0": {
					"name": "punctuation.definition.directive.begin.yaml"
				}
			},
			"end": "(?=$|[ \\t]+($|#))",
			"name": "meta.directive.yaml",
			"patterns": [
				{
					"captures": {
						"1": {
							"name": "keyword.other.directive.yaml.yaml"
						},
						"2": {
							"name": "constant.numeric.yaml-version.yaml"
						}
					},
					"match": "\\G(YAML)[ \\t]+(\\d+\\.\\d+)"
				},
				{
					"captures": {
						"1": {
							"name": "keyword.other.directive.tag.yaml"
						},
						"2": {
							"name": "storage.type.tag-handle.yaml"
						},
						"3": {
							"name": "support.type.tag-prefix.yaml"
						}
					},
					"match": "(?x)\n                        \\G\n                        (TAG)\n                        (?:[ \\t]+\n                            ((?:!(?:[0-9A-Za-z\\-]*!)?))\n                            (?:[ \\t]+ (\n                                  !              (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )*\n                                | (?![,!\\[\\]{}]) (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+\n                                )\n                            )?\n                        )?\n                    "
				},
				{
					"captures": {
						"1": {
							"name": "support.other.directive.reserved.yaml"
						},
						"2": {
							"name": "string.unquoted.directive-name.yaml"
						},
						"3": {
							"name": "string.unquoted.directive-parameter.yaml"
						}
					},
					"match": "(?x) \\G (\\w+) (?:[ \\t]+ (\\w+) (?:[ \\t]+ (\\w+))? )?"
				},
				{
					"match": "\\S+",
					"name": "invalid.illegal.unrecognized.yaml"
				}
			]
		},
		"flow-alias": {
			"captures": {
				"1": {
					"name": "keyword.control.flow.alias.yaml"
				},
				"2": {
					"name": "punctuation.definition.alias.yaml"
				},
				"3": {
					"name": "variable.other.alias.yaml"
				},
				"4": {
					"name": "invalid.illegal.character.anchor.yaml"
				}
			},
			"match": "((\\*))([^\\s\\[\\]/{/},]+)([^\\s\\]},]\\S*)?"
		},
		"flow-collection": {
			"patterns": [
				{
					"include": "#flow-sequence"
				},
				{
					"include": "#flow-mapping"
				}
			]
		},
		"flow-mapping": {
			"begin": "\\{",
			"beginCaptures": {
				"0": {
					"name": "punctuation.definition.mapping.begin.yaml"
				}
			},
			"end": "\\}",
			"endCaptures": {
				"0": {
					"name": "punctuation.definition.mapping.end.yaml"
				}
			},
			"name": "meta.flow-mapping.yaml",
			"patterns": [
				{
					"include": "#prototype"
				},
				{
					"match": ",",
					"name": "punctuation.separator.mapping.yaml"
				},
				{
					"include": "#flow-pair"
				}
			]
		},
		"flow-node": {
			"patterns": [
				{
					"include": "#prototype"
				},
				{
					"include": "#flow-alias"
				},
				{
					"include": "#flow-collection"
				},
				{
					"include": "#flow-scalar"
				}
			]
		},
		"flow-pair": {
			"patterns": [
				{
					"begin": "\\?",
					"beginCaptures": {
						"0": {
							"name": "punctuation.definition.key-value.begin.yaml"
						}
					},
					"end": "(?=[},\\]])",
					"name": "meta.flow-pair.explicit.yaml",
					"patterns": [
						{
							"include": "#prototype"
						},
						{
							"include": "#flow-pair"
						},
						{
							"include": "#flow-node"
						},
						{
							"begin": ":(?=\\s|$|[\\[\\]{},])",
							"beginCaptures": {
								"0": {
									"name": "punctuation.separator.key-value.mapping.yaml"
								}
							},
							"end": "(?=[},\\]])",
							"patterns": [
								{
									"include": "#flow-value"
								}
							]
						}
					]
				},
				{
					"begin": "(?x)\n                        (?=\n                            (?:\n                                [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                              | [?:-] [^\\s[\\[\\]{},]]\n                            )\n                            (\n                                  [^\\s:[\\[\\]{},]]\n                                | : [^\\s[\\[\\]{},]]\n                                | \\s+ (?![#\\s])\n                            )*\n                            \\s*\n                            :\n\t\t\t\t\t\t\t(\\s|$)\n                        )\n                    ",
					"end": "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                            | \\s* : [\\[\\]{},]\n                            | \\s* [\\[\\]{},]\n                        )\n                    ",
					"name": "meta.flow-pair.key.yaml",
					"patterns": [
						{
							"include": "#flow-scalar-plain-in-implicit-type"
						},
						{
							"begin": "(?x)\n                                  [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                                | [?:-] [^\\s[\\[\\]{},]]\n                            ",
							"beginCaptures": {
								"0": {
									"name": "entity.name.tag.yaml"
								}
							},
							"contentName": "entity.name.tag.yaml",
							"end": "(?x)\n                                (?=\n                                      \\s* $\n                                    | \\s+ \\#\n                                    | \\s* : (\\s|$)\n                                    | \\s* : [\\[\\]{},]\n                                    | \\s* [\\[\\]{},]\n                                )\n                            ",
							"name": "string.unquoted.plain.in.yaml"
						}
					]
				},
				{
					"include": "#flow-node"
				},
				{
					"begin": ":(?=\\s|$|[\\[\\]{},])",
					"captures": {
						"0": {
							"name": "punctuation.separator.key-value.mapping.yaml"
						}
					},
					"end": "(?=[},\\]])",
					"name": "meta.flow-pair.yaml",
					"patterns": [
						{
							"include": "#flow-value"
						}
					]
				}
			]
		},
		"flow-scalar": {
			"patterns": [
				{
					"include": "#flow-scalar-double-quoted"
				},
				{
					"include": "#flow-scalar-single-quoted"
				},
				{
					"include": "#flow-scalar-plain-in"
				}
			]
		},
		"flow-scalar-double-quoted": {
			"begin": "\"",
			"beginCaptures": {
				"0": {
					"name": "punctuation.definition.string.begin.yaml"
				}
			},
			"end": "\"",
			"endCaptures": {
				"0": {
					"name": "punctuation.definition.string.end.yaml"
				}
			},
			"name": "string.quoted.double.yaml",
			"patterns": [
				{
					"match": "\\\\([0abtnvfre \"/\\\\N_Lp]|x\\d\\d|u\\d{4}|U\\d{8})",
					"name": "constant.character.escape.yaml"
				},
				{
					"match": "\\\\\\n",
					"name": "constant.character.escape.double-quoted.newline.yaml"
				}
			]
		},
		"flow-scalar-plain-in": {
			"patterns": [
				{
					"include": "#flow-scalar-plain-in-implicit-type"
				},
				{
					"begin": "(?x)\n                          [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                        | [?:-] [^\\s[\\[\\]{},]]\n                    ",
					"end": "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                            | \\s* : [\\[\\]{},]\n                            | \\s* [\\[\\]{},]\n                        )\n                    ",
					"name": "string.unquoted.plain.in.yaml"
				}
			]
		},
		"flow-scalar-plain-in-implicit-type": {
			"patterns": [
				{
					"captures": {
						"1": {
							"name": "constant.language.null.yaml"
						},
						"2": {
							"name": "constant.language.boolean.yaml"
						},
						"3": {
							"name": "constant.numeric.integer.yaml"
						},
						"4": {
							"name": "constant.numeric.float.yaml"
						},
						"5": {
							"name": "constant.other.timestamp.yaml"
						},
						"6": {
							"name": "constant.language.value.yaml"
						},
						"7": {
							"name": "constant.language.merge.yaml"
						}
					},
					"match": "(?x)\n                        (?x:\n                              (null|Null|NULL|~)\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n                            | (\n                                (?:\n                                      [-+]? 0b [0-1_]+ # (base 2)\n                                    | [-+]? 0  [0-7_]+ # (base 8)\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n                                )\n                              )\n                            | (\n                                (?x:\n                                      [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n                                    | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n                                    |       \\. (?: nan|NaN|NAN) # (not a number)\n                                )\n                              )\n                            | (\n                                (?x:\n                                    \\d{4} - \\d{2} - \\d{2}           # (y-m-d)\n                                  | \\d{4}                           # (year)\n                                    - \\d{1,2}                       # (month)\n                                    - \\d{1,2}                       # (day)\n                                    (?: [Tt] | [ \\t]+) \\d{1,2}      # (hour)\n                                    : \\d{2}                         # (minute)\n                                    : \\d{2}                         # (second)\n                                    (?: \\.\\d*)?                     # (fraction)\n                                    (?:\n                                          (?:[ \\t]*) Z\n                                        | [-+] \\d{1,2} (?: :\\d{1,2})?\n                                    )?                              # (time zone)\n                                )\n                              )\n                            | (=)\n                            | (<<)\n                        )\n                        (?:\n                            (?=\n                                  \\s* $\n                                | \\s+ \\#\n                                | \\s* : (\\s|$)\n                                | \\s* : [\\[\\]{},]\n                                | \\s* [\\[\\]{},]\n                            )\n                        )\n                    "
				}
			]
		},
		"flow-scalar-plain-out": {
			"patterns": [
				{
					"include": "#flow-scalar-plain-out-implicit-type"
				},
				{
					"begin": "(?x)\n                          [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n                        | [?:-] \\S\n                    ",
					"end": "(?x)\n                        (?=\n                              \\s* $\n                            | \\s+ \\#\n                            | \\s* : (\\s|$)\n                        )\n                    ",
					"name": "string.unquoted.plain.out.yaml"
				}
			]
		},
		"flow-scalar-plain-out-implicit-type": {
			"patterns": [
				{
					"captures": {
						"1": {
							"name": "constant.language.null.yaml"
						},
						"2": {
							"name": "constant.language.boolean.yaml"
						},
						"3": {
							"name": "constant.numeric.integer.yaml"
						},
						"4": {
							"name": "constant.numeric.float.yaml"
						},
						"5": {
							"name": "constant.other.timestamp.yaml"
						},
						"6": {
							"name": "constant.language.value.yaml"
						},
						"7": {
							"name": "constant.language.merge.yaml"
						}
					},
					"match": "(?x)\n                        (?x:\n                              (null|Null|NULL|~)\n                            | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n                            | (\n                                (?:\n                                      [-+]? 0b [0-1_]+ # (base 2)\n                                    | [-+]? 0  [0-7_]+ # (base 8)\n                                    | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n                                    | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n                                    | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n                                )\n                              )\n                            | (\n                                (?x:\n                                      [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n                                    | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n                                    | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n                                    |       \\. (?: nan|NaN|NAN) # (not a number)\n                                )\n                              )\n                            | (\n                                (?x:\n                                    \\d{4} - \\d{2} - \\d{2}           # (y-m-d)\n                                  | \\d{4}                           # (year)\n                                    - \\d{1,2}                       # (month)\n                                    - \\d{1,2}                       # (day)\n                                    (?: [Tt] | [ \\t]+) \\d{1,2}      # (hour)\n                                    : \\d{2}                         # (minute)\n                                    : \\d{2}                         # (second)\n                                    (?: \\.\\d*)?                     # (fraction)\n                                    (?:\n                                          (?:[ \\t]*) Z\n                                        | [-+] \\d{1,2} (?: :\\d{1,2})?\n                                    )?                              # (time zone)\n                                )\n                              )\n                            | (=)\n                            | (<<)\n                        )\n                        (?x:\n                            (?=\n                                  \\s* $\n                                | \\s+ \\#\n                                | \\s* : (\\s|$)\n                            )\n                        )\n                    "
				}
			]
		},
		"flow-scalar-single-quoted": {
			"begin": "'",
			"beginCaptures": {
				"0": {
					"name": "punctuation.definition.string.begin.yaml"
				}
			},
			"end": "'(?!')",
			"endCaptures": {
				"0": {
					"name": "punctuation.definition.string.end.yaml"
				}
			},
			"name": "string.quoted.single.yaml",
			"patterns": [
				{
					"match": "''",
					"name": "constant.character.escape.single-quoted.yaml"
				}
			]
		},
		"flow-sequence": {
			"begin": "\\[",
			"beginCaptures": {
				"0": {
					"name": "punctuation.definition.sequence.begin.yaml"
				}
			},
			"end": "\\]",
			"endCaptures": {
				"0": {
					"name": "punctuation.definition.sequence.end.yaml"
				}
			},
			"name": "meta.flow-sequence.yaml",
			"patterns": [
				{
					"include": "#prototype"
				},
				{
					"match": ",",
					"name": "punctuation.separator.sequence.yaml"
				},
				{
					"include": "#flow-pair"
				},
				{
					"include": "#flow-node"
				}
			]
		},
		"flow-value": {
			"patterns": [
				{
					"begin": "\\G(?![},\\]])",
					"end": "(?=[},\\]])",
					"name": "meta.flow-pair.value.yaml",
					"patterns": [
						{
							"include": "#flow-node"
						}
					]
				}
			]
		},
		"node": {
			"patterns": [
				{
					"include": "#block-node"
				}
			]
		},
		"property": {
			"begin": "(?=!|&)",
			"end": "(?!\\G)",
			"name": "meta.property.yaml",
			"patterns": [
				{
					"captures": {
						"1": {
							"name": "keyword.control.property.anchor.yaml"
						},
						"2": {
							"name": "punctuation.definition.anchor.yaml"
						},
						"3": {
							"name": "entity.name.type.anchor.yaml"
						},
						"4": {
							"name": "invalid.illegal.character.anchor.yaml"
						}
					},
					"match": "\\G((&))([^\\s\\[\\]/{/},]+)(\\S+)?"
				},
				{
					"match": "(?x)\n                        \\G\n                        (?:\n                            ! < (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ >\n                          | (?:!(?:[0-9A-Za-z\\-]*!)?) (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$_.~*'()] )+\n                          | !\n                        )\n                        (?=\\ |\\t|$)\n                    ",
					"name": "storage.type.tag-handle.yaml"
				},
				{
					"match": "\\S+",
					"name": "invalid.illegal.tag-handle.yaml"
				}
			]
		},
		"prototype": {
			"patterns": [
				{
					"include": "#comment"
				},
				{
					"include": "#property"
				}
			]
		}
	}
}