1 |
- {"ast":null,"code":"/*\nLanguage: PHP\nAuthor: Victor Karamzin <Victor.Karamzin@enterra-inc.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: https://www.php.net\nCategory: common\n*/\n\n/**\n * @param {HLJSApi} hljs\n * @returns {LanguageDetail}\n * */\nfunction php(hljs) {\n const regex = hljs.regex;\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n const NOT_PERL_ETC = /(?![A-Za-z0-9])(?![$])/;\n const IDENT_RE = regex.concat(/[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/, NOT_PERL_ETC);\n // Will not detect camelCase classes\n const PASCAL_CASE_CLASS_NAME_RE = regex.concat(/(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}/, NOT_PERL_ETC);\n const VARIABLE = {\n scope: 'variable',\n match: '\\\\$+' + IDENT_RE\n };\n const PREPROCESSOR = {\n scope: 'meta',\n variants: [{\n begin: /<\\?php/,\n relevance: 10\n },\n // boost for obvious PHP\n {\n begin: /<\\?=/\n },\n // less relevant per PSR-1 which says not to use short-tags\n {\n begin: /<\\?/,\n relevance: 0.1\n }, {\n begin: /\\?>/\n } // end php tag\n ]\n };\n const SUBST = {\n scope: 'subst',\n variants: [{\n begin: /\\$\\w+/\n }, {\n begin: /\\{\\$/,\n end: /\\}/\n }]\n };\n const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null\n });\n const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST)\n });\n const HEREDOC = {\n begin: /<<<[ \\t]*(?:(\\w+)|\"(\\w+)\")\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n 'on:begin': (m, resp) => {\n resp.data._beginMatch = m[1] || m[2];\n },\n 'on:end': (m, resp) => {\n if (resp.data._beginMatch !== m[1]) resp.ignoreMatch();\n }\n };\n const NOWDOC = hljs.END_SAME_AS_BEGIN({\n begin: /<<<[ \\t]*'(\\w+)'\\n/,\n end: /[ \\t]*(\\w+)\\b/\n });\n // list of valid whitespaces because non-breaking space might be part of a IDENT_RE\n const WHITESPACE = '[ \\t\\n]';\n const STRING = {\n scope: 'string',\n variants: [DOUBLE_QUOTED, SINGLE_QUOTED, HEREDOC, NOWDOC]\n };\n const NUMBER = {\n scope: 'number',\n variants: [{\n begin: `\\\\b0[bB][01]+(?:_[01]+)*\\\\b`\n },\n // Binary w/ underscore support\n {\n begin: `\\\\b0[oO][0-7]+(?:_[0-7]+)*\\\\b`\n },\n // Octals w/ underscore support\n {\n begin: `\\\\b0[xX][\\\\da-fA-F]+(?:_[\\\\da-fA-F]+)*\\\\b`\n },\n // Hex w/ underscore support\n // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix.\n {\n begin: `(?:\\\\b\\\\d+(?:_\\\\d+)*(\\\\.(?:\\\\d+(?:_\\\\d+)*))?|\\\\B\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?`\n }],\n relevance: 0\n };\n const LITERALS = [\"false\", \"null\", \"true\"];\n const KWS = [\n // Magic constants:\n // <https://www.php.net/manual/en/language.constants.predefined.php>\n \"__CLASS__\", \"__DIR__\", \"__FILE__\", \"__FUNCTION__\", \"__COMPILER_HALT_OFFSET__\", \"__LINE__\", \"__METHOD__\", \"__NAMESPACE__\", \"__TRAIT__\",\n // Function that look like language construct or language construct that look like function:\n // List of keywords that may not require parenthesis\n \"die\", \"echo\", \"exit\", \"include\", \"include_once\", \"print\", \"require\", \"require_once\",\n // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table\n // 'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class ' +\n // Other keywords:\n // <https://www.php.net/manual/en/reserved.php>\n // <https://www.php.net/manual/en/language.types.type-juggling.php>\n \"array\", \"abstract\", \"and\", \"as\", \"binary\", \"bool\", \"boolean\", \"break\", \"callable\", \"case\", \"catch\", \"class\", \"clone\", \"const\", \"continue\", \"declare\", \"default\", \"do\", \"double\", \"else\", \"elseif\", \"empty\", \"enddeclare\", \"endfor\", \"endforeach\", \"endif\", \"endswitch\", \"endwhile\", \"enum\", \"eval\", \"extends\", \"final\", \"finally\", \"float\", \"for\", \"foreach\", \"from\", \"global\", \"goto\", \"if\", \"implements\", \"instanceof\", \"insteadof\", \"int\", \"integer\", \"interface\", \"isset\", \"iterable\", \"list\", \"match|0\", \"mixed\", \"new\", \"never\", \"object\", \"or\", \"private\", \"protected\", \"public\", \"readonly\", \"real\", \"return\", \"string\", \"switch\", \"throw\", \"trait\", \"try\", \"unset\", \"use\", \"var\", \"void\", \"while\", \"xor\", \"yield\"];\n const BUILT_INS = [\n // Standard PHP library:\n // <https://www.php.net/manual/en/book.spl.php>\n \"Error|0\", \"AppendIterator\", \"ArgumentCountError\", \"ArithmeticError\", \"ArrayIterator\", \"ArrayObject\", \"AssertionError\", \"BadFunctionCallException\", \"BadMethodCallException\", \"CachingIterator\", \"CallbackFilterIterator\", \"CompileError\", \"Countable\", \"DirectoryIterator\", \"DivisionByZeroError\", \"DomainException\", \"EmptyIterator\", \"ErrorException\", \"Exception\", \"FilesystemIterator\", \"FilterIterator\", \"GlobIterator\", \"InfiniteIterator\", \"InvalidArgumentException\", \"IteratorIterator\", \"LengthException\", \"LimitIterator\", \"LogicException\", \"MultipleIterator\", \"NoRewindIterator\", \"OutOfBoundsException\", \"OutOfRangeException\", \"OuterIterator\", \"OverflowException\", \"ParentIterator\", \"ParseError\", \"RangeException\", \"RecursiveArrayIterator\", \"RecursiveCachingIterator\", \"RecursiveCallbackFilterIterator\", \"RecursiveDirectoryIterator\", \"RecursiveFilterIterator\", \"RecursiveIterator\", \"RecursiveIteratorIterator\", \"RecursiveRegexIterator\", \"RecursiveTreeIterator\", \"RegexIterator\", \"RuntimeException\", \"SeekableIterator\", \"SplDoublyLinkedList\", \"SplFileInfo\", \"SplFileObject\", \"SplFixedArray\", \"SplHeap\", \"SplMaxHeap\", \"SplMinHeap\", \"SplObjectStorage\", \"SplObserver\", \"SplPriorityQueue\", \"SplQueue\", \"SplStack\", \"SplSubject\", \"SplTempFileObject\", \"TypeError\", \"UnderflowException\", \"UnexpectedValueException\", \"UnhandledMatchError\",\n // Reserved interfaces:\n // <https://www.php.net/manual/en/reserved.interfaces.php>\n \"ArrayAccess\", \"BackedEnum\", \"Closure\", \"Fiber\", \"Generator\", \"Iterator\", \"IteratorAggregate\", \"Serializable\", \"Stringable\", \"Throwable\", \"Traversable\", \"UnitEnum\", \"WeakReference\", \"WeakMap\",\n // Reserved classes:\n // <https://www.php.net/manual/en/reserved.classes.php>\n \"Directory\", \"__PHP_Incomplete_Class\", \"parent\", \"php_user_filter\", \"self\", \"static\", \"stdClass\"];\n\n /** Dual-case keywords\n *\n * [\"then\",\"FILE\"] =>\n * [\"then\", \"THEN\", \"FILE\", \"file\"]\n *\n * @param {string[]} items */\n const dualCase = items => {\n /** @type string[] */\n const result = [];\n items.forEach(item => {\n result.push(item);\n if (item.toLowerCase() === item) {\n result.push(item.toUpperCase());\n } else {\n result.push(item.toLowerCase());\n }\n });\n return result;\n };\n const KEYWORDS = {\n keyword: KWS,\n literal: dualCase(LITERALS),\n built_in: BUILT_INS\n };\n\n /**\n * @param {string[]} items */\n const normalizeKeywords = items => {\n return items.map(item => {\n return item.replace(/\\|\\d+$/, \"\");\n });\n };\n const CONSTRUCTOR_CALL = {\n variants: [{\n match: [/new/, regex.concat(WHITESPACE, \"+\"),\n // to prevent built ins from being confused as the class constructor call\n regex.concat(\"(?!\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"), PASCAL_CASE_CLASS_NAME_RE],\n scope: {\n 1: \"keyword\",\n 4: \"title.class\"\n }\n }]\n };\n const CONSTANT_REFERENCE = regex.concat(IDENT_RE, \"\\\\b(?!\\\\()\");\n const LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON = {\n variants: [{\n match: [regex.concat(/::/, regex.lookahead(/(?!class\\b)/)), CONSTANT_REFERENCE],\n scope: {\n 2: \"variable.constant\"\n }\n }, {\n match: [/::/, /class/],\n scope: {\n 2: \"variable.language\"\n }\n }, {\n match: [PASCAL_CASE_CLASS_NAME_RE, regex.concat(/::/, regex.lookahead(/(?!class\\b)/)), CONSTANT_REFERENCE],\n scope: {\n 1: \"title.class\",\n 3: \"variable.constant\"\n }\n }, {\n match: [PASCAL_CASE_CLASS_NAME_RE, regex.concat(\"::\", regex.lookahead(/(?!class\\b)/))],\n scope: {\n 1: \"title.class\"\n }\n }, {\n match: [PASCAL_CASE_CLASS_NAME_RE, /::/, /class/],\n scope: {\n 1: \"title.class\",\n 3: \"variable.language\"\n }\n }]\n };\n const NAMED_ARGUMENT = {\n scope: 'attr',\n match: regex.concat(IDENT_RE, regex.lookahead(':'), regex.lookahead(/(?!::)/))\n };\n const PARAMS_MODE = {\n relevance: 0,\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [NAMED_ARGUMENT, VARIABLE, LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, hljs.C_BLOCK_COMMENT_MODE, STRING, NUMBER, CONSTRUCTOR_CALL]\n };\n const FUNCTION_INVOKE = {\n relevance: 0,\n match: [/\\b/,\n // to prevent keywords from being confused as the function title\n regex.concat(\"(?!fn\\\\b|function\\\\b|\", normalizeKeywords(KWS).join(\"\\\\b|\"), \"|\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"), IDENT_RE, regex.concat(WHITESPACE, \"*\"), regex.lookahead(/(?=\\()/)],\n scope: {\n 3: \"title.function.invoke\"\n },\n contains: [PARAMS_MODE]\n };\n PARAMS_MODE.contains.push(FUNCTION_INVOKE);\n const ATTRIBUTE_CONTAINS = [NAMED_ARGUMENT, LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, hljs.C_BLOCK_COMMENT_MODE, STRING, NUMBER, CONSTRUCTOR_CALL];\n const ATTRIBUTES = {\n begin: regex.concat(/#\\[\\s*/, PASCAL_CASE_CLASS_NAME_RE),\n beginScope: \"meta\",\n end: /]/,\n endScope: \"meta\",\n keywords: {\n literal: LITERALS,\n keyword: ['new', 'array']\n },\n contains: [{\n begin: /\\[/,\n end: /]/,\n keywords: {\n literal: LITERALS,\n keyword: ['new', 'array']\n },\n contains: ['self', ...ATTRIBUTE_CONTAINS]\n }, ...ATTRIBUTE_CONTAINS, {\n scope: 'meta',\n match: PASCAL_CASE_CLASS_NAME_RE\n }]\n };\n return {\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [ATTRIBUTES, hljs.HASH_COMMENT_MODE, hljs.COMMENT('//', '$'), hljs.COMMENT('/\\\\*', '\\\\*/', {\n contains: [{\n scope: 'doctag',\n match: '@[A-Za-z]+'\n }]\n }), {\n match: /__halt_compiler\\(\\);/,\n keywords: '__halt_compiler',\n starts: {\n scope: \"comment\",\n end: hljs.MATCH_NOTHING_RE,\n contains: [{\n match: /\\?>/,\n scope: \"meta\",\n endsParent: true\n }]\n }\n }, PREPROCESSOR, {\n scope: 'variable.language',\n match: /\\$this\\b/\n }, VARIABLE, FUNCTION_INVOKE, LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, {\n match: [/const/, /\\s/, IDENT_RE],\n scope: {\n 1: \"keyword\",\n 3: \"variable.constant\"\n }\n }, CONSTRUCTOR_CALL, {\n scope: 'function',\n relevance: 0,\n beginKeywords: 'fn function',\n end: /[;{]/,\n excludeEnd: true,\n illegal: '[$%\\\\[]',\n contains: [{\n beginKeywords: 'use'\n }, hljs.UNDERSCORE_TITLE_MODE, {\n begin: '=>',\n // No markup, just a relevance booster\n endsParent: true\n }, {\n scope: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: ['self', VARIABLE, LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON, hljs.C_BLOCK_COMMENT_MODE, STRING, NUMBER]\n }]\n }, {\n scope: 'class',\n variants: [{\n beginKeywords: \"enum\",\n illegal: /[($\"]/\n }, {\n beginKeywords: \"class interface trait\",\n illegal: /[:($\"]/\n }],\n relevance: 0,\n end: /\\{/,\n excludeEnd: true,\n contains: [{\n beginKeywords: 'extends implements'\n }, hljs.UNDERSCORE_TITLE_MODE]\n },\n // both use and namespace still use \"old style\" rules (vs multi-match)\n // because the namespace name can include `\\` and we still want each\n // element to be treated as its own *individual* title\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: ';',\n illegal: /[.']/,\n contains: [hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {\n scope: \"title.class\"\n })]\n }, {\n beginKeywords: 'use',\n relevance: 0,\n end: ';',\n contains: [\n // TODO: title.function vs title.class\n {\n match: /\\b(as|const|function)\\b/,\n scope: \"keyword\"\n },\n // TODO: could be title.class or title.function\n hljs.UNDERSCORE_TITLE_MODE]\n }, STRING, NUMBER]\n };\n}\nmodule.exports = php;","map":{"version":3,"names":["php","hljs","regex","NOT_PERL_ETC","IDENT_RE","concat","PASCAL_CASE_CLASS_NAME_RE","VARIABLE","scope","match","PREPROCESSOR","variants","begin","relevance","SUBST","end","SINGLE_QUOTED","inherit","APOS_STRING_MODE","illegal","DOUBLE_QUOTED","QUOTE_STRING_MODE","contains","HEREDOC","on:begin","m","resp","data","_beginMatch","on:end","ignoreMatch","NOWDOC","END_SAME_AS_BEGIN","WHITESPACE","STRING","NUMBER","LITERALS","KWS","BUILT_INS","dualCase","items","result","forEach","item","push","toLowerCase","toUpperCase","KEYWORDS","keyword","literal","built_in","normalizeKeywords","map","replace","CONSTRUCTOR_CALL","join","CONSTANT_REFERENCE","LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON","lookahead","NAMED_ARGUMENT","PARAMS_MODE","keywords","C_BLOCK_COMMENT_MODE","FUNCTION_INVOKE","ATTRIBUTE_CONTAINS","ATTRIBUTES","beginScope","endScope","case_insensitive","HASH_COMMENT_MODE","COMMENT","starts","MATCH_NOTHING_RE","endsParent","beginKeywords","excludeEnd","UNDERSCORE_TITLE_MODE","excludeBegin","module","exports"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/highlight.js/lib/languages/php.js"],"sourcesContent":["/*\nLanguage: PHP\nAuthor: Victor Karamzin <Victor.Karamzin@enterra-inc.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>, Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: https://www.php.net\nCategory: common\n*/\n\n/**\n * @param {HLJSApi} hljs\n * @returns {LanguageDetail}\n * */\nfunction php(hljs) {\n const regex = hljs.regex;\n // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n const NOT_PERL_ETC = /(?![A-Za-z0-9])(?![$])/;\n const IDENT_RE = regex.concat(\n /[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/,\n NOT_PERL_ETC);\n // Will not detect camelCase classes\n const PASCAL_CASE_CLASS_NAME_RE = regex.concat(\n /(\\\\?[A-Z][a-z0-9_\\x7f-\\xff]+|\\\\?[A-Z]+(?=[A-Z][a-z0-9_\\x7f-\\xff])){1,}/,\n NOT_PERL_ETC);\n const VARIABLE = {\n scope: 'variable',\n match: '\\\\$+' + IDENT_RE,\n };\n const PREPROCESSOR = {\n scope: 'meta',\n variants: [\n { begin: /<\\?php/, relevance: 10 }, // boost for obvious PHP\n { begin: /<\\?=/ },\n // less relevant per PSR-1 which says not to use short-tags\n { begin: /<\\?/, relevance: 0.1 },\n { begin: /\\?>/ } // end php tag\n ]\n };\n const SUBST = {\n scope: 'subst',\n variants: [\n { begin: /\\$\\w+/ },\n {\n begin: /\\{\\$/,\n end: /\\}/\n }\n ]\n };\n const SINGLE_QUOTED = hljs.inherit(hljs.APOS_STRING_MODE, { illegal: null, });\n const DOUBLE_QUOTED = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n });\n\n const HEREDOC = {\n begin: /<<<[ \\t]*(?:(\\w+)|\"(\\w+)\")\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST),\n 'on:begin': (m, resp) => { resp.data._beginMatch = m[1] || m[2]; },\n 'on:end': (m, resp) => { if (resp.data._beginMatch !== m[1]) resp.ignoreMatch(); },\n };\n\n const NOWDOC = hljs.END_SAME_AS_BEGIN({\n begin: /<<<[ \\t]*'(\\w+)'\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n });\n // list of valid whitespaces because non-breaking space might be part of a IDENT_RE\n const WHITESPACE = '[ \\t\\n]';\n const STRING = {\n scope: 'string',\n variants: [\n DOUBLE_QUOTED,\n SINGLE_QUOTED,\n HEREDOC,\n NOWDOC\n ]\n };\n const NUMBER = {\n scope: 'number',\n variants: [\n { begin: `\\\\b0[bB][01]+(?:_[01]+)*\\\\b` }, // Binary w/ underscore support\n { begin: `\\\\b0[oO][0-7]+(?:_[0-7]+)*\\\\b` }, // Octals w/ underscore support\n { begin: `\\\\b0[xX][\\\\da-fA-F]+(?:_[\\\\da-fA-F]+)*\\\\b` }, // Hex w/ underscore support\n // Decimals w/ underscore support, with optional fragments and scientific exponent (e) suffix.\n { begin: `(?:\\\\b\\\\d+(?:_\\\\d+)*(\\\\.(?:\\\\d+(?:_\\\\d+)*))?|\\\\B\\\\.\\\\d+)(?:[eE][+-]?\\\\d+)?` }\n ],\n relevance: 0\n };\n const LITERALS = [\n \"false\",\n \"null\",\n \"true\"\n ];\n const KWS = [\n // Magic constants:\n // <https://www.php.net/manual/en/language.constants.predefined.php>\n \"__CLASS__\",\n \"__DIR__\",\n \"__FILE__\",\n \"__FUNCTION__\",\n \"__COMPILER_HALT_OFFSET__\",\n \"__LINE__\",\n \"__METHOD__\",\n \"__NAMESPACE__\",\n \"__TRAIT__\",\n // Function that look like language construct or language construct that look like function:\n // List of keywords that may not require parenthesis\n \"die\",\n \"echo\",\n \"exit\",\n \"include\",\n \"include_once\",\n \"print\",\n \"require\",\n \"require_once\",\n // These are not language construct (function) but operate on the currently-executing function and can access the current symbol table\n // 'compact extract func_get_arg func_get_args func_num_args get_called_class get_parent_class ' +\n // Other keywords:\n // <https://www.php.net/manual/en/reserved.php>\n // <https://www.php.net/manual/en/language.types.type-juggling.php>\n \"array\",\n \"abstract\",\n \"and\",\n \"as\",\n \"binary\",\n \"bool\",\n \"boolean\",\n \"break\",\n \"callable\",\n \"case\",\n \"catch\",\n \"class\",\n \"clone\",\n \"const\",\n \"continue\",\n \"declare\",\n \"default\",\n \"do\",\n \"double\",\n \"else\",\n \"elseif\",\n \"empty\",\n \"enddeclare\",\n \"endfor\",\n \"endforeach\",\n \"endif\",\n \"endswitch\",\n \"endwhile\",\n \"enum\",\n \"eval\",\n \"extends\",\n \"final\",\n \"finally\",\n \"float\",\n \"for\",\n \"foreach\",\n \"from\",\n \"global\",\n \"goto\",\n \"if\",\n \"implements\",\n \"instanceof\",\n \"insteadof\",\n \"int\",\n \"integer\",\n \"interface\",\n \"isset\",\n \"iterable\",\n \"list\",\n \"match|0\",\n \"mixed\",\n \"new\",\n \"never\",\n \"object\",\n \"or\",\n \"private\",\n \"protected\",\n \"public\",\n \"readonly\",\n \"real\",\n \"return\",\n \"string\",\n \"switch\",\n \"throw\",\n \"trait\",\n \"try\",\n \"unset\",\n \"use\",\n \"var\",\n \"void\",\n \"while\",\n \"xor\",\n \"yield\"\n ];\n\n const BUILT_INS = [\n // Standard PHP library:\n // <https://www.php.net/manual/en/book.spl.php>\n \"Error|0\",\n \"AppendIterator\",\n \"ArgumentCountError\",\n \"ArithmeticError\",\n \"ArrayIterator\",\n \"ArrayObject\",\n \"AssertionError\",\n \"BadFunctionCallException\",\n \"BadMethodCallException\",\n \"CachingIterator\",\n \"CallbackFilterIterator\",\n \"CompileError\",\n \"Countable\",\n \"DirectoryIterator\",\n \"DivisionByZeroError\",\n \"DomainException\",\n \"EmptyIterator\",\n \"ErrorException\",\n \"Exception\",\n \"FilesystemIterator\",\n \"FilterIterator\",\n \"GlobIterator\",\n \"InfiniteIterator\",\n \"InvalidArgumentException\",\n \"IteratorIterator\",\n \"LengthException\",\n \"LimitIterator\",\n \"LogicException\",\n \"MultipleIterator\",\n \"NoRewindIterator\",\n \"OutOfBoundsException\",\n \"OutOfRangeException\",\n \"OuterIterator\",\n \"OverflowException\",\n \"ParentIterator\",\n \"ParseError\",\n \"RangeException\",\n \"RecursiveArrayIterator\",\n \"RecursiveCachingIterator\",\n \"RecursiveCallbackFilterIterator\",\n \"RecursiveDirectoryIterator\",\n \"RecursiveFilterIterator\",\n \"RecursiveIterator\",\n \"RecursiveIteratorIterator\",\n \"RecursiveRegexIterator\",\n \"RecursiveTreeIterator\",\n \"RegexIterator\",\n \"RuntimeException\",\n \"SeekableIterator\",\n \"SplDoublyLinkedList\",\n \"SplFileInfo\",\n \"SplFileObject\",\n \"SplFixedArray\",\n \"SplHeap\",\n \"SplMaxHeap\",\n \"SplMinHeap\",\n \"SplObjectStorage\",\n \"SplObserver\",\n \"SplPriorityQueue\",\n \"SplQueue\",\n \"SplStack\",\n \"SplSubject\",\n \"SplTempFileObject\",\n \"TypeError\",\n \"UnderflowException\",\n \"UnexpectedValueException\",\n \"UnhandledMatchError\",\n // Reserved interfaces:\n // <https://www.php.net/manual/en/reserved.interfaces.php>\n \"ArrayAccess\",\n \"BackedEnum\",\n \"Closure\",\n \"Fiber\",\n \"Generator\",\n \"Iterator\",\n \"IteratorAggregate\",\n \"Serializable\",\n \"Stringable\",\n \"Throwable\",\n \"Traversable\",\n \"UnitEnum\",\n \"WeakReference\",\n \"WeakMap\",\n // Reserved classes:\n // <https://www.php.net/manual/en/reserved.classes.php>\n \"Directory\",\n \"__PHP_Incomplete_Class\",\n \"parent\",\n \"php_user_filter\",\n \"self\",\n \"static\",\n \"stdClass\"\n ];\n\n /** Dual-case keywords\n *\n * [\"then\",\"FILE\"] =>\n * [\"then\", \"THEN\", \"FILE\", \"file\"]\n *\n * @param {string[]} items */\n const dualCase = (items) => {\n /** @type string[] */\n const result = [];\n items.forEach(item => {\n result.push(item);\n if (item.toLowerCase() === item) {\n result.push(item.toUpperCase());\n } else {\n result.push(item.toLowerCase());\n }\n });\n return result;\n };\n\n const KEYWORDS = {\n keyword: KWS,\n literal: dualCase(LITERALS),\n built_in: BUILT_INS,\n };\n\n /**\n * @param {string[]} items */\n const normalizeKeywords = (items) => {\n return items.map(item => {\n return item.replace(/\\|\\d+$/, \"\");\n });\n };\n\n const CONSTRUCTOR_CALL = { variants: [\n {\n match: [\n /new/,\n regex.concat(WHITESPACE, \"+\"),\n // to prevent built ins from being confused as the class constructor call\n regex.concat(\"(?!\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"),\n PASCAL_CASE_CLASS_NAME_RE,\n ],\n scope: {\n 1: \"keyword\",\n 4: \"title.class\",\n },\n }\n ] };\n\n const CONSTANT_REFERENCE = regex.concat(IDENT_RE, \"\\\\b(?!\\\\()\");\n\n const LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON = { variants: [\n {\n match: [\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: { 2: \"variable.constant\", },\n },\n {\n match: [\n /::/,\n /class/,\n ],\n scope: { 2: \"variable.language\", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n /::/,\n regex.lookahead(/(?!class\\b)/)\n ),\n CONSTANT_REFERENCE,\n ],\n scope: {\n 1: \"title.class\",\n 3: \"variable.constant\",\n },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(\n \"::\",\n regex.lookahead(/(?!class\\b)/)\n ),\n ],\n scope: { 1: \"title.class\", },\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n /::/,\n /class/,\n ],\n scope: {\n 1: \"title.class\",\n 3: \"variable.language\",\n },\n }\n ] };\n\n const NAMED_ARGUMENT = {\n scope: 'attr',\n match: regex.concat(IDENT_RE, regex.lookahead(':'), regex.lookahead(/(?!::)/)),\n };\n const PARAMS_MODE = {\n relevance: 0,\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n NAMED_ARGUMENT,\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ],\n };\n const FUNCTION_INVOKE = {\n relevance: 0,\n match: [\n /\\b/,\n // to prevent keywords from being confused as the function title\n regex.concat(\"(?!fn\\\\b|function\\\\b|\", normalizeKeywords(KWS).join(\"\\\\b|\"), \"|\", normalizeKeywords(BUILT_INS).join(\"\\\\b|\"), \"\\\\b)\"),\n IDENT_RE,\n regex.concat(WHITESPACE, \"*\"),\n regex.lookahead(/(?=\\()/)\n ],\n scope: { 3: \"title.function.invoke\", },\n contains: [ PARAMS_MODE ]\n };\n PARAMS_MODE.contains.push(FUNCTION_INVOKE);\n\n const ATTRIBUTE_CONTAINS = [\n NAMED_ARGUMENT,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER,\n CONSTRUCTOR_CALL,\n ];\n\n const ATTRIBUTES = {\n begin: regex.concat(/#\\[\\s*/, PASCAL_CASE_CLASS_NAME_RE),\n beginScope: \"meta\",\n end: /]/,\n endScope: \"meta\",\n keywords: {\n literal: LITERALS,\n keyword: [\n 'new',\n 'array',\n ]\n },\n contains: [\n {\n begin: /\\[/,\n end: /]/,\n keywords: {\n literal: LITERALS,\n keyword: [\n 'new',\n 'array',\n ]\n },\n contains: [\n 'self',\n ...ATTRIBUTE_CONTAINS,\n ]\n },\n ...ATTRIBUTE_CONTAINS,\n {\n scope: 'meta',\n match: PASCAL_CASE_CLASS_NAME_RE\n }\n ]\n };\n\n return {\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n ATTRIBUTES,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('//', '$'),\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n { contains: [\n {\n scope: 'doctag',\n match: '@[A-Za-z]+'\n }\n ] }\n ),\n {\n match: /__halt_compiler\\(\\);/,\n keywords: '__halt_compiler',\n starts: {\n scope: \"comment\",\n end: hljs.MATCH_NOTHING_RE,\n contains: [\n {\n match: /\\?>/,\n scope: \"meta\",\n endsParent: true\n }\n ]\n }\n },\n PREPROCESSOR,\n {\n scope: 'variable.language',\n match: /\\$this\\b/\n },\n VARIABLE,\n FUNCTION_INVOKE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n {\n match: [\n /const/,\n /\\s/,\n IDENT_RE,\n ],\n scope: {\n 1: \"keyword\",\n 3: \"variable.constant\",\n },\n },\n CONSTRUCTOR_CALL,\n {\n scope: 'function',\n relevance: 0,\n beginKeywords: 'fn function',\n end: /[;{]/,\n excludeEnd: true,\n illegal: '[$%\\\\[]',\n contains: [\n { beginKeywords: 'use', },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin: '=>', // No markup, just a relevance booster\n endsParent: true\n },\n {\n scope: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n VARIABLE,\n LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n },\n ]\n },\n {\n scope: 'class',\n variants: [\n {\n beginKeywords: \"enum\",\n illegal: /[($\"]/\n },\n {\n beginKeywords: \"class interface trait\",\n illegal: /[:($\"]/\n }\n ],\n relevance: 0,\n end: /\\{/,\n excludeEnd: true,\n contains: [\n { beginKeywords: 'extends implements' },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n // both use and namespace still use \"old style\" rules (vs multi-match)\n // because the namespace name can include `\\` and we still want each\n // element to be treated as its own *individual* title\n {\n beginKeywords: 'namespace',\n relevance: 0,\n end: ';',\n illegal: /[.']/,\n contains: [ hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, { scope: \"title.class\" }) ]\n },\n {\n beginKeywords: 'use',\n relevance: 0,\n end: ';',\n contains: [\n // TODO: title.function vs title.class\n {\n match: /\\b(as|const|function)\\b/,\n scope: \"keyword\"\n },\n // TODO: could be title.class or title.function\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n STRING,\n NUMBER,\n ]\n };\n}\n\nmodule.exports = php;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAASA,GAAGA,CAACC,IAAI,EAAE;EACjB,MAAMC,KAAK,GAAGD,IAAI,CAACC,KAAK;EACxB;EACA;EACA,MAAMC,YAAY,GAAG,wBAAwB;EAC7C,MAAMC,QAAQ,GAAGF,KAAK,CAACG,MAAM,CAC3B,0CAA0C,EAC1CF,YAAY,CAAC;EACf;EACA,MAAMG,yBAAyB,GAAGJ,KAAK,CAACG,MAAM,CAC5C,wEAAwE,EACxEF,YAAY,CAAC;EACf,MAAMI,QAAQ,GAAG;IACfC,KAAK,EAAE,UAAU;IACjBC,KAAK,EAAE,MAAM,GAAGL;EAClB,CAAC;EACD,MAAMM,YAAY,GAAG;IACnBF,KAAK,EAAE,MAAM;IACbG,QAAQ,EAAE,CACR;MAAEC,KAAK,EAAE,QAAQ;MAAEC,SAAS,EAAE;IAAG,CAAC;IAAE;IACpC;MAAED,KAAK,EAAE;IAAO,CAAC;IACjB;IACA;MAAEA,KAAK,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAI,CAAC,EAChC;MAAED,KAAK,EAAE;IAAM,CAAC,CAAC;IAAA;EAErB,CAAC;EACD,MAAME,KAAK,GAAG;IACZN,KAAK,EAAE,OAAO;IACdG,QAAQ,EAAE,CACR;MAAEC,KAAK,EAAE;IAAQ,CAAC,EAClB;MACEA,KAAK,EAAE,MAAM;MACbG,GAAG,EAAE;IACP,CAAC;EAEL,CAAC;EACD,MAAMC,aAAa,GAAGf,IAAI,CAACgB,OAAO,CAAChB,IAAI,CAACiB,gBAAgB,EAAE;IAAEC,OAAO,EAAE;EAAM,CAAC,CAAC;EAC7E,MAAMC,aAAa,GAAGnB,IAAI,CAACgB,OAAO,CAAChB,IAAI,CAACoB,iBAAiB,EAAE;IACzDF,OAAO,EAAE,IAAI;IACbG,QAAQ,EAAErB,IAAI,CAACoB,iBAAiB,CAACC,QAAQ,CAACjB,MAAM,CAACS,KAAK;EACxD,CAAC,CAAC;EAEF,MAAMS,OAAO,GAAG;IACdX,KAAK,EAAE,8BAA8B;IACrCG,GAAG,EAAE,eAAe;IACpBO,QAAQ,EAAErB,IAAI,CAACoB,iBAAiB,CAACC,QAAQ,CAACjB,MAAM,CAACS,KAAK,CAAC;IACvD,UAAU,EAAEU,CAACC,CAAC,EAAEC,IAAI,KAAK;MAAEA,IAAI,CAACC,IAAI,CAACC,WAAW,GAAGH,CAAC,CAAC,CAAC,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC;IAAE,CAAC;IAClE,QAAQ,EAAEI,CAACJ,CAAC,EAAEC,IAAI,KAAK;MAAE,IAAIA,IAAI,CAACC,IAAI,CAACC,WAAW,KAAKH,CAAC,CAAC,CAAC,CAAC,EAAEC,IAAI,CAACI,WAAW,CAAC,CAAC;IAAE;EACnF,CAAC;EAED,MAAMC,MAAM,GAAG9B,IAAI,CAAC+B,iBAAiB,CAAC;IACpCpB,KAAK,EAAE,oBAAoB;IAC3BG,GAAG,EAAE;EACP,CAAC,CAAC;EACF;EACA,MAAMkB,UAAU,GAAG,SAAS;EAC5B,MAAMC,MAAM,GAAG;IACb1B,KAAK,EAAE,QAAQ;IACfG,QAAQ,EAAE,CACRS,aAAa,EACbJ,aAAa,EACbO,OAAO,EACPQ,MAAM;EAEV,CAAC;EACD,MAAMI,MAAM,GAAG;IACb3B,KAAK,EAAE,QAAQ;IACfG,QAAQ,EAAE,CACR;MAAEC,KAAK,EAAE;IAA8B,CAAC;IAAE;IAC1C;MAAEA,KAAK,EAAE;IAAgC,CAAC;IAAE;IAC5C;MAAEA,KAAK,EAAE;IAA4C,CAAC;IAAE;IACxD;IACA;MAAEA,KAAK,EAAE;IAA6E,CAAC,CACxF;IACDC,SAAS,EAAE;EACb,CAAC;EACD,MAAMuB,QAAQ,GAAG,CACf,OAAO,EACP,MAAM,EACN,MAAM,CACP;EACD,MAAMC,GAAG,GAAG;EACV;EACA;EACA,WAAW,EACX,SAAS,EACT,UAAU,EACV,cAAc,EACd,0BAA0B,EAC1B,UAAU,EACV,YAAY,EACZ,eAAe,EACf,WAAW;EACX;EACA;EACA,KAAK,EACL,MAAM,EACN,MAAM,EACN,SAAS,EACT,cAAc,EACd,OAAO,EACP,SAAS,EACT,cAAc;EACd;EACA;EACA;EACA;EACA;EACA,OAAO,EACP,UAAU,EACV,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,OAAO,EACP,UAAU,EACV,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,WAAW,EACX,UAAU,EACV,MAAM,EACN,MAAM,EACN,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,EACL,SAAS,EACT,MAAM,EACN,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,WAAW,EACX,OAAO,EACP,UAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EACV,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,KAAK,EACL,OAAO,EACP,KAAK,EACL,KAAK,EACL,MAAM,EACN,OAAO,EACP,KAAK,EACL,OAAO,CACR;EAED,MAAMC,SAAS,GAAG;EAChB;EACA;EACA,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,eAAe,EACf,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,0BAA0B,EAC1B,qBAAqB;EACrB;EACA;EACA,aAAa,EACb,YAAY,EACZ,SAAS,EACT,OAAO,EACP,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,eAAe,EACf,SAAS;EACT;EACA;EACA,WAAW,EACX,wBAAwB,EACxB,QAAQ,EACR,iBAAiB,EACjB,MAAM,EACN,QAAQ,EACR,UAAU,CACX;;EAED;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,QAAQ,GAAIC,KAAK,IAAK;IAC1B;IACA,MAAMC,MAAM,GAAG,EAAE;IACjBD,KAAK,CAACE,OAAO,CAACC,IAAI,IAAI;MACpBF,MAAM,CAACG,IAAI,CAACD,IAAI,CAAC;MACjB,IAAIA,IAAI,CAACE,WAAW,CAAC,CAAC,KAAKF,IAAI,EAAE;QAC/BF,MAAM,CAACG,IAAI,CAACD,IAAI,CAACG,WAAW,CAAC,CAAC,CAAC;MACjC,CAAC,MAAM;QACLL,MAAM,CAACG,IAAI,CAACD,IAAI,CAACE,WAAW,CAAC,CAAC,CAAC;MACjC;IACF,CAAC,CAAC;IACF,OAAOJ,MAAM;EACf,CAAC;EAED,MAAMM,QAAQ,GAAG;IACfC,OAAO,EAAEX,GAAG;IACZY,OAAO,EAAEV,QAAQ,CAACH,QAAQ,CAAC;IAC3Bc,QAAQ,EAAEZ;EACZ,CAAC;;EAED;AACF;EACE,MAAMa,iBAAiB,GAAIX,KAAK,IAAK;IACnC,OAAOA,KAAK,CAACY,GAAG,CAACT,IAAI,IAAI;MACvB,OAAOA,IAAI,CAACU,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;IACnC,CAAC,CAAC;EACJ,CAAC;EAED,MAAMC,gBAAgB,GAAG;IAAE3C,QAAQ,EAAE,CACnC;MACEF,KAAK,EAAE,CACL,KAAK,EACLP,KAAK,CAACG,MAAM,CAAC4B,UAAU,EAAE,GAAG,CAAC;MAC7B;MACA/B,KAAK,CAACG,MAAM,CAAC,KAAK,EAAE8C,iBAAiB,CAACb,SAAS,CAAC,CAACiB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EACtEjD,yBAAyB,CAC1B;MACDE,KAAK,EAAE;QACL,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE;MACL;IACF,CAAC;EACD,CAAC;EAEH,MAAMgD,kBAAkB,GAAGtD,KAAK,CAACG,MAAM,CAACD,QAAQ,EAAE,YAAY,CAAC;EAE/D,MAAMqD,mCAAmC,GAAG;IAAE9C,QAAQ,EAAE,CACtD;MACEF,KAAK,EAAE,CACLP,KAAK,CAACG,MAAM,CACV,IAAI,EACJH,KAAK,CAACwD,SAAS,CAAC,aAAa,CAC/B,CAAC,EACDF,kBAAkB,CACnB;MACDhD,KAAK,EAAE;QAAE,CAAC,EAAE;MAAqB;IACnC,CAAC,EACD;MACEC,KAAK,EAAE,CACL,IAAI,EACJ,OAAO,CACR;MACDD,KAAK,EAAE;QAAE,CAAC,EAAE;MAAqB;IACnC,CAAC,EACD;MACEC,KAAK,EAAE,CACLH,yBAAyB,EACzBJ,KAAK,CAACG,MAAM,CACV,IAAI,EACJH,KAAK,CAACwD,SAAS,CAAC,aAAa,CAC/B,CAAC,EACDF,kBAAkB,CACnB;MACDhD,KAAK,EAAE;QACL,CAAC,EAAE,aAAa;QAChB,CAAC,EAAE;MACL;IACF,CAAC,EACD;MACEC,KAAK,EAAE,CACLH,yBAAyB,EACzBJ,KAAK,CAACG,MAAM,CACV,IAAI,EACJH,KAAK,CAACwD,SAAS,CAAC,aAAa,CAC/B,CAAC,CACF;MACDlD,KAAK,EAAE;QAAE,CAAC,EAAE;MAAe;IAC7B,CAAC,EACD;MACEC,KAAK,EAAE,CACLH,yBAAyB,EACzB,IAAI,EACJ,OAAO,CACR;MACDE,KAAK,EAAE;QACL,CAAC,EAAE,aAAa;QAChB,CAAC,EAAE;MACL;IACF,CAAC;EACD,CAAC;EAEH,MAAMmD,cAAc,GAAG;IACrBnD,KAAK,EAAE,MAAM;IACbC,KAAK,EAAEP,KAAK,CAACG,MAAM,CAACD,QAAQ,EAAEF,KAAK,CAACwD,SAAS,CAAC,GAAG,CAAC,EAAExD,KAAK,CAACwD,SAAS,CAAC,QAAQ,CAAC;EAC/E,CAAC;EACD,MAAME,WAAW,GAAG;IAClB/C,SAAS,EAAE,CAAC;IACZD,KAAK,EAAE,IAAI;IACXG,GAAG,EAAE,IAAI;IACT8C,QAAQ,EAAEd,QAAQ;IAClBzB,QAAQ,EAAE,CACRqC,cAAc,EACdpD,QAAQ,EACRkD,mCAAmC,EACnCxD,IAAI,CAAC6D,oBAAoB,EACzB5B,MAAM,EACNC,MAAM,EACNmB,gBAAgB;EAEpB,CAAC;EACD,MAAMS,eAAe,GAAG;IACtBlD,SAAS,EAAE,CAAC;IACZJ,KAAK,EAAE,CACL,IAAI;IACJ;IACAP,KAAK,CAACG,MAAM,CAAC,uBAAuB,EAAE8C,iBAAiB,CAACd,GAAG,CAAC,CAACkB,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,EAAEJ,iBAAiB,CAACb,SAAS,CAAC,CAACiB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAClInD,QAAQ,EACRF,KAAK,CAACG,MAAM,CAAC4B,UAAU,EAAE,GAAG,CAAC,EAC7B/B,KAAK,CAACwD,SAAS,CAAC,QAAQ,CAAC,CAC1B;IACDlD,KAAK,EAAE;MAAE,CAAC,EAAE;IAAyB,CAAC;IACtCc,QAAQ,EAAE,CAAEsC,WAAW;EACzB,CAAC;EACDA,WAAW,CAACtC,QAAQ,CAACsB,IAAI,CAACmB,eAAe,CAAC;EAE1C,MAAMC,kBAAkB,GAAG,CACzBL,cAAc,EACdF,mCAAmC,EACnCxD,IAAI,CAAC6D,oBAAoB,EACzB5B,MAAM,EACNC,MAAM,EACNmB,gBAAgB,CACjB;EAED,MAAMW,UAAU,GAAG;IACjBrD,KAAK,EAAEV,KAAK,CAACG,MAAM,CAAC,QAAQ,EAAEC,yBAAyB,CAAC;IACxD4D,UAAU,EAAE,MAAM;IAClBnD,GAAG,EAAE,GAAG;IACRoD,QAAQ,EAAE,MAAM;IAChBN,QAAQ,EAAE;MACRZ,OAAO,EAAEb,QAAQ;MACjBY,OAAO,EAAE,CACP,KAAK,EACL,OAAO;IAEX,CAAC;IACD1B,QAAQ,EAAE,CACR;MACEV,KAAK,EAAE,IAAI;MACXG,GAAG,EAAE,GAAG;MACR8C,QAAQ,EAAE;QACRZ,OAAO,EAAEb,QAAQ;QACjBY,OAAO,EAAE,CACP,KAAK,EACL,OAAO;MAEX,CAAC;MACD1B,QAAQ,EAAE,CACR,MAAM,EACN,GAAG0C,kBAAkB;IAEzB,CAAC,EACD,GAAGA,kBAAkB,EACrB;MACExD,KAAK,EAAE,MAAM;MACbC,KAAK,EAAEH;IACT,CAAC;EAEL,CAAC;EAED,OAAO;IACL8D,gBAAgB,EAAE,KAAK;IACvBP,QAAQ,EAAEd,QAAQ;IAClBzB,QAAQ,EAAE,CACR2C,UAAU,EACVhE,IAAI,CAACoE,iBAAiB,EACtBpE,IAAI,CAACqE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EACvBrE,IAAI,CAACqE,OAAO,CACV,MAAM,EACN,MAAM,EACN;MAAEhD,QAAQ,EAAE,CACV;QACEd,KAAK,EAAE,QAAQ;QACfC,KAAK,EAAE;MACT,CAAC;IACD,CACJ,CAAC,EACD;MACEA,KAAK,EAAE,sBAAsB;MAC7BoD,QAAQ,EAAE,iBAAiB;MAC3BU,MAAM,EAAE;QACN/D,KAAK,EAAE,SAAS;QAChBO,GAAG,EAAEd,IAAI,CAACuE,gBAAgB;QAC1BlD,QAAQ,EAAE,CACR;UACEb,KAAK,EAAE,KAAK;UACZD,KAAK,EAAE,MAAM;UACbiE,UAAU,EAAE;QACd,CAAC;MAEL;IACF,CAAC,EACD/D,YAAY,EACZ;MACEF,KAAK,EAAE,mBAAmB;MAC1BC,KAAK,EAAE;IACT,CAAC,EACDF,QAAQ,EACRwD,eAAe,EACfN,mCAAmC,EACnC;MACEhD,KAAK,EAAE,CACL,OAAO,EACP,IAAI,EACJL,QAAQ,CACT;MACDI,KAAK,EAAE;QACL,CAAC,EAAE,SAAS;QACZ,CAAC,EAAE;MACL;IACF,CAAC,EACD8C,gBAAgB,EAChB;MACE9C,KAAK,EAAE,UAAU;MACjBK,SAAS,EAAE,CAAC;MACZ6D,aAAa,EAAE,aAAa;MAC5B3D,GAAG,EAAE,MAAM;MACX4D,UAAU,EAAE,IAAI;MAChBxD,OAAO,EAAE,SAAS;MAClBG,QAAQ,EAAE,CACR;QAAEoD,aAAa,EAAE;MAAO,CAAC,EACzBzE,IAAI,CAAC2E,qBAAqB,EAC1B;QACEhE,KAAK,EAAE,IAAI;QAAE;QACb6D,UAAU,EAAE;MACd,CAAC,EACD;QACEjE,KAAK,EAAE,QAAQ;QACfI,KAAK,EAAE,KAAK;QACZG,GAAG,EAAE,KAAK;QACV8D,YAAY,EAAE,IAAI;QAClBF,UAAU,EAAE,IAAI;QAChBd,QAAQ,EAAEd,QAAQ;QAClBzB,QAAQ,EAAE,CACR,MAAM,EACNf,QAAQ,EACRkD,mCAAmC,EACnCxD,IAAI,CAAC6D,oBAAoB,EACzB5B,MAAM,EACNC,MAAM;MAEV,CAAC;IAEL,CAAC,EACD;MACE3B,KAAK,EAAE,OAAO;MACdG,QAAQ,EAAE,CACR;QACE+D,aAAa,EAAE,MAAM;QACrBvD,OAAO,EAAE;MACX,CAAC,EACD;QACEuD,aAAa,EAAE,uBAAuB;QACtCvD,OAAO,EAAE;MACX,CAAC,CACF;MACDN,SAAS,EAAE,CAAC;MACZE,GAAG,EAAE,IAAI;MACT4D,UAAU,EAAE,IAAI;MAChBrD,QAAQ,EAAE,CACR;QAAEoD,aAAa,EAAE;MAAqB,CAAC,EACvCzE,IAAI,CAAC2E,qBAAqB;IAE9B,CAAC;IACD;IACA;IACA;IACA;MACEF,aAAa,EAAE,WAAW;MAC1B7D,SAAS,EAAE,CAAC;MACZE,GAAG,EAAE,GAAG;MACRI,OAAO,EAAE,MAAM;MACfG,QAAQ,EAAE,CAAErB,IAAI,CAACgB,OAAO,CAAChB,IAAI,CAAC2E,qBAAqB,EAAE;QAAEpE,KAAK,EAAE;MAAc,CAAC,CAAC;IAChF,CAAC,EACD;MACEkE,aAAa,EAAE,KAAK;MACpB7D,SAAS,EAAE,CAAC;MACZE,GAAG,EAAE,GAAG;MACRO,QAAQ,EAAE;MACR;MACA;QACEb,KAAK,EAAE,yBAAyB;QAChCD,KAAK,EAAE;MACT,CAAC;MACD;MACAP,IAAI,CAAC2E,qBAAqB;IAE9B,CAAC,EACD1C,MAAM,EACNC,MAAM;EAEV,CAAC;AACH;AAEA2C,MAAM,CAACC,OAAO,GAAG/E,GAAG","ignoreList":[]},"metadata":{},"sourceType":"script","externalDependencies":[]}
|