You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

405 lines
1.2 MiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"use strict";
/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
exports.id = "vendor-chunks/highlight.js";
exports.ids = ["vendor-chunks/highlight.js"];
exports.modules = {
/***/ "(ssr)/./node_modules/highlight.js/lib/core.js":
/*!***********************************************!*\
!*** ./node_modules/highlight.js/lib/core.js ***!
\***********************************************/
/***/ ((module) => {
eval("\nvar deepFreezeEs6 = {\n exports: {}\n};\nfunction deepFreeze(obj) {\n if (obj instanceof Map) {\n obj.clear = obj.delete = obj.set = function() {\n throw new Error(\"map is read-only\");\n };\n } else if (obj instanceof Set) {\n obj.add = obj.clear = obj.delete = function() {\n throw new Error(\"set is read-only\");\n };\n }\n // Freeze self\n Object.freeze(obj);\n Object.getOwnPropertyNames(obj).forEach(function(name) {\n var prop = obj[name];\n // Freeze prop if it is an object\n if (typeof prop == \"object\" && !Object.isFrozen(prop)) {\n deepFreeze(prop);\n }\n });\n return obj;\n}\ndeepFreezeEs6.exports = deepFreeze;\ndeepFreezeEs6.exports.default = deepFreeze;\n/** @typedef {import('highlight.js').CallbackResponse} CallbackResponse */ /** @typedef {import('highlight.js').CompiledMode} CompiledMode */ /** @implements CallbackResponse */ class Response {\n /**\n * @param {CompiledMode} mode\n */ constructor(mode){\n // eslint-disable-next-line no-undefined\n if (mode.data === undefined) mode.data = {};\n this.data = mode.data;\n this.isMatchIgnored = false;\n }\n ignoreMatch() {\n this.isMatchIgnored = true;\n }\n}\n/**\n * @param {string} value\n * @returns {string}\n */ function escapeHTML(value) {\n return value.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#x27;\");\n}\n/**\n * performs a shallow merge of multiple objects into one\n *\n * @template T\n * @param {T} original\n * @param {Record<string,any>[]} objects\n * @returns {T} a single new object\n */ function inherit$1(original, ...objects) {\n /** @type Record<string,any> */ const result = Object.create(null);\n for(const key in original){\n result[key] = original[key];\n }\n objects.forEach(function(obj) {\n for(const key in obj){\n result[key] = obj[key];\n }\n });\n return /** @type {T} */ result;\n}\n/**\n * @typedef {object} Renderer\n * @property {(text: string) => void} addText\n * @property {(node: Node) => void} openNode\n * @property {(node: Node) => void} closeNode\n * @property {() => string} value\n */ /** @typedef {{scope?: string, language?: string, sublanguage?: boolean}} Node */ /** @typedef {{walk: (r: Renderer) => void}} Tree */ /** */ const SPAN_CLOSE = \"</span>\";\n/**\n * Determines if a node needs to be wrapped in <span>\n *\n * @param {Node} node */ const emitsWrappingTags = (node)=>{\n // rarely we can have a sublanguage where language is undefined\n // TODO: track down why\n return !!node.scope || node.sublanguage && node.language;\n};\n/**\n *\n * @param {string} name\n * @param {{prefix:string}} options\n */ const scopeToCSSClass = (name, { prefix })=>{\n if (name.includes(\".\")) {\n const pieces = name.split(\".\");\n return [\n `${prefix}${pieces.shift()}`,\n ...pieces.map((x, i)=>`${x}${\"_\".repeat(i + 1)}`)\n ].join(\" \");\n }\n return `${prefix}${name}`;\n};\n/** @type {Renderer} */ class HTMLRenderer {\n /**\n * Creates a new HTMLRenderer\n *\n * @param {Tree} parseTree - the parse tree (must support `walk` API)\n * @param {{classPrefix: string}} options\n */ constructor(parseTree, options){\n this.buffer = \"\";\n this.classPrefix = options.classPrefix;\n parseTree.walk(this);\n }\n /**\n * Adds texts to the output stream\n *\n * @param {string} text */ addText(text) {\n this.buffer += escapeHTML(text);\n }\n /**\n * Adds a node open to the output stream (if needed)\n *\n * @param {Node} node */ openNode(node) {\n if (!emitsWrappingTags(node)) return;\n let className = \"\";\n if (node.sublanguage) {\n className = `language-${node.language}`;\n } else {\n className = scopeToCSSClass(node.scope, {\n prefix: this.classPrefix\n });\n }\n this.span(className);\n }\n /**\n * Adds a node close to the output stream (if needed)\n *\n * @param {Node} node */ closeNode(node) {\n if (!emitsWrappingTags(node)) return;\n this.buffer += SPAN_CLOSE;\n }\n /**\n * returns the accumulated buffer\n */ value() {\n return this.buffer;\n }\n // helpers\n /**\n * Builds a span element\n *\n * @param {string} className */ span(className) {\n this.buffer += `<span class=\"${className}\">`;\n }\n}\n/** @typedef {{scope?: string, language?: string, sublanguage?: boolean, children: Node[]} | string} Node */ /** @typedef {{scope?: string, language?: string, sublanguage?: boolean, children: Node[]} } DataNode */ /** @typedef {import('highlight.js').Emitter} Emitter */ /** */ /** @returns {DataNode} */ const newNode = (opts = {})=>{\n /** @type DataNode */ const result = {\n children: []\n };\n Object.assign(result, opts);\n return result;\n};\nclass TokenTree {\n constructor(){\n /** @type DataNode */ this.rootNode = newNode();\n this.stack = [\n this.rootNode\n ];\n }\n get top() {\n return this.stack[this.stack.length - 1];\n }\n get root() {\n return this.rootNode;\n }\n /** @param {Node} node */ add(node) {\n this.top.children.push(node);\n }\n /** @param {string} scope */ openNode(scope) {\n /** @type Node */ const node = newNode({\n scope\n });\n this.add(node);\n this.stack.push(node);\n }\n closeNode() {\n if (this.stack.length > 1) {\n return this.stack.pop();\n }\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n closeAllNodes() {\n while(this.closeNode());\n }\n toJSON() {\n return JSON.stringify(this.rootNode, null, 4);\n }\n /**\n * @typedef { import(\"./html_renderer\").Renderer } Renderer\n * @param {Renderer} builder\n */ walk(builder) {\n // this does not\n return this.constructor._walk(builder, this.rootNode);\n // this works\n // return TokenTree._walk(builder, this.rootNode);\n }\n /**\n * @param {Renderer} builder\n * @param {Node} node\n */ static _walk(builder, node) {\n if (typeof node === \"string\") {\n builder.addText(node);\n } else if (node.children) {\n builder.openNode(node);\n node.children.forEach((child)=>this._walk(builder, child));\n builder.closeNode(node);\n }\n return builder;\n }\n /**\n * @param {Node} node\n */ static _collapse(node) {\n if (typeof node === \"string\") return;\n if (!node.children) return;\n if (node.children.every((el)=>typeof el === \"string\")) {\n // node.text = node.children.join(\"\");\n // delete node.children;\n node.children = [\n node.children.join(\"\")\n ];\n } else {\n node.children.forEach((child)=>{\n TokenTree._collapse(child);\n });\n }\n }\n}\n/**\n Currently this is all private API, but this is the minimal API necessary\n that an Emitter must implement to fully support the parser.\n\n Minimal interface:\n\n - addKeyword(text, scope)\n - addText(text)\n - addSublanguage(emitter, subLanguageName)\n - finalize()\n - openNode(scope)\n - closeNode()\n - closeAllNodes()\n - toHTML()\n\n*/ /**\n * @implements {Emitter}\n */ class TokenTreeEmitter extends TokenTree {\n /**\n * @param {*} options\n */ constructor(options){\n super();\n this.options = options;\n }\n /**\n * @param {string} text\n * @param {string} scope\n */ addKeyword(text, scope) {\n if (text === \"\") {\n return;\n }\n this.openNode(scope);\n this.addText(text);\n this.closeNode();\n }\n /**\n * @param {string} text\n */ addText(text) {\n if (text === \"\") {\n return;\n }\n this.add(text);\n }\n /**\n * @param {Emitter & {root: DataNode}} emitter\n * @param {string} name\n */ addSublanguage(emitter, name) {\n /** @type DataNode */ const node = emitter.root;\n node.sublanguage = true;\n node.language = name;\n this.add(node);\n }\n toHTML() {\n const renderer = new HTMLRenderer(this, this.options);\n return renderer.value();\n }\n finalize() {\n return true;\n }\n}\n/**\n * @param {string} value\n * @returns {RegExp}\n * */ /**\n * @param {RegExp | string } re\n * @returns {string}\n */ function source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n return re.source;\n}\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */ function lookahead(re) {\n return concat(\"(?=\", re, \")\");\n}\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */ function anyNumberOfTimes(re) {\n return concat(\"(?:\", re, \")*\");\n}\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */ function optional(re) {\n return concat(\"(?:\", re, \")?\");\n}\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */ function concat(...args) {\n const joined = args.map((x)=>source(x)).join(\"\");\n return joined;\n}\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */ function stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n if (typeof opts === \"object\" && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n/** @typedef { {capture?: boolean} } RegexEitherOptions */ /**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */ function either(...args) {\n /** @type { object & {capture?: boolean} } */ const opts = stripOptionsFromArgs(args);\n const joined = \"(\" + (opts.capture ? \"\" : \"?:\") + args.map((x)=>source(x)).join(\"|\") + \")\";\n return joined;\n}\n/**\n * @param {RegExp | string} re\n * @returns {number}\n */ function countMatchGroups(re) {\n return new RegExp(re.toString() + \"|\").exec(\"\").length - 1;\n}\n/**\n * Does lexeme start with a regular expression match at the beginning\n * @param {RegExp} re\n * @param {string} lexeme\n */ function startsWith(re, lexeme) {\n const match = re && re.exec(lexeme);\n return match && match.index === 0;\n}\n// BACKREF_RE matches an open parenthesis or backreference. To avoid\n// an incorrect parse, it additionally matches the following:\n// - [...] elements, where the meaning of parentheses and escapes change\n// - other escape sequences, so we do not misparse escape sequences as\n// interesting elements\n// - non-matching or lookahead parentheses, which do not capture. These\n// follow the '(' with a '?'.\nconst BACKREF_RE = /\\[(?:[^\\\\\\]]|\\\\.)*\\]|\\(\\??|\\\\([1-9][0-9]*)|\\\\./;\n// **INTERNAL** Not intended for outside usage\n// join logically computes regexps.join(separator), but fixes the\n// backreferences so they continue to match.\n// it also places each individual regular expression into it's own\n// match group, keeping track of the sequencing of those match groups\n// is currently an exercise for the caller. :-)\n/**\n * @param {(string | RegExp)[]} regexps\n * @param {{joinWith: string}} opts\n * @returns {string}\n */ function _rewriteBackreferences(regexps, { joinWith }) {\n let numCaptures = 0;\n return regexps.map((regex)=>{\n numCaptures += 1;\n const offset = numCaptures;\n let re = source(regex);\n let out = \"\";\n while(re.length > 0){\n const match = BACKREF_RE.exec(re);\n if (!match) {\n out += re;\n break;\n }\n out += re.substring(0, match.index);\n re = re.substring(match.index + match[0].length);\n if (match[0][0] === \"\\\\\" && match[1]) {\n // Adjust the backreference.\n out += \"\\\\\" + String(Number(match[1]) + offset);\n } else {\n out += match[0];\n if (match[0] === \"(\") {\n numCaptures++;\n }\n }\n }\n return out;\n }).map((re)=>`(${re})`).join(joinWith);\n}\n/** @typedef {import('highlight.js').Mode} Mode */ /** @typedef {import('highlight.js').ModeCallback} ModeCallback */ // Common regexps\nconst MATCH_NOTHING_RE = /\\b\\B/;\nconst IDENT_RE = \"[a-zA-Z]\\\\w*\";\nconst UNDERSCORE_IDENT_RE = \"[a-zA-Z_]\\\\w*\";\nconst NUMBER_RE = \"\\\\b\\\\d+(\\\\.\\\\d+)?\";\nconst C_NUMBER_RE = \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\"; // 0x..., 0..., decimal, float\nconst BINARY_NUMBER_RE = \"\\\\b(0b[01]+)\"; // 0b...\nconst RE_STARTERS_RE = \"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\";\n/**\n* @param { Partial<Mode> & {binary?: string | RegExp} } opts\n*/ const SHEBANG = (opts = {})=>{\n const beginShebang = /^#![ ]*\\//;\n if (opts.binary) {\n opts.begin = concat(beginShebang, /.*\\b/, opts.binary, /\\b.*/);\n }\n return inherit$1({\n scope: \"meta\",\n begin: beginShebang,\n end: /$/,\n relevance: 0,\n /** @type {ModeCallback} */ \"on:begin\": (m, resp)=>{\n if (m.index !== 0) resp.ignoreMatch();\n }\n }, opts);\n};\n// Common modes\nconst BACKSLASH_ESCAPE = {\n begin: \"\\\\\\\\[\\\\s\\\\S]\",\n relevance: 0\n};\nconst APOS_STRING_MODE = {\n scope: \"string\",\n begin: \"'\",\n end: \"'\",\n illegal: \"\\\\n\",\n contains: [\n BACKSLASH_ESCAPE\n ]\n};\nconst QUOTE_STRING_MODE = {\n scope: \"string\",\n begin: '\"',\n end: '\"',\n illegal: \"\\\\n\",\n contains: [\n BACKSLASH_ESCAPE\n ]\n};\nconst PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n};\n/**\n * Creates a comment mode\n *\n * @param {string | RegExp} begin\n * @param {string | RegExp} end\n * @param {Mode | {}} [modeOptions]\n * @returns {Partial<Mode>}\n */ const COMMENT = function(begin, end, modeOptions = {}) {\n const mode = inherit$1({\n scope: \"comment\",\n begin,\n end,\n contains: []\n }, modeOptions);\n mode.contains.push({\n scope: \"doctag\",\n // hack to avoid the space from being included. the space is necessary to\n // match here to prevent the plain text rule below from gobbling up doctags\n begin: \"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)\",\n end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,\n excludeBegin: true,\n relevance: 0\n });\n const ENGLISH_WORD = either(// list of common 1 and 2 letter words in English\n \"I\", \"a\", \"is\", \"so\", \"us\", \"to\", \"at\", \"if\", \"in\", \"it\", \"on\", // note: this is not an exhaustive list of contractions, just popular ones\n /[A-Za-z]+['](d|ve|re|ll|t|s|n)/, /[A-Za-z]+[-][a-z]+/, /[A-Za-z][a-z]{2,}/ // allow capitalized words at beginning of sentences\n );\n // looking like plain text, more likely to be a comment\n mode.contains.push({\n // TODO: how to include \", (, ) without breaking grammars that use these for\n // comment delimiters?\n // begin: /[ ]+([()\"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()\":]?([.][ ]|[ ]|\\))){3}/\n // ---\n // this tries to find sequences of 3 english words in a row (without any\n // \"programming\" type syntax) this gives us a strong signal that we've\n // TRULY found a comment - vs perhaps scanning with the wrong language.\n // It's possible to find something that LOOKS like the start of the\n // comment - but then if there is no readable text - good chance it is a\n // false match and not a comment.\n //\n // for a visual example please see:\n // https://github.com/highlightjs/highlight.js/issues/2827\n begin: concat(/[ ]+/, \"(\", ENGLISH_WORD, /[.]?[:]?([.][ ]|[ ])/, \"){3}\") // look for 3 words in a row\n });\n return mode;\n};\nconst C_LINE_COMMENT_MODE = COMMENT(\"//\", \"$\");\nconst C_BLOCK_COMMENT_MODE = COMMENT(\"/\\\\*\", \"\\\\*/\");\nconst HASH_COMMENT_MODE = COMMENT(\"#\", \"$\");\nconst NUMBER_MODE = {\n scope: \"number\",\n begin: NUMBER_RE,\n relevance: 0\n};\nconst C_NUMBER_MODE = {\n scope: \"number\",\n begin: C_NUMBER_RE,\n relevance: 0\n};\nconst BINARY_NUMBER_MODE = {\n scope: \"number\",\n begin: BINARY_NUMBER_RE,\n relevance: 0\n};\nconst REGEXP_MODE = {\n // this outer rule makes sure we actually have a WHOLE regex and not simply\n // an expression such as:\n //\n // 3 / something\n //\n // (which will then blow up when regex's `illegal` sees the newline)\n begin: /(?=\\/[^/\\n]*\\/)/,\n contains: [\n {\n scope: \"regexp\",\n begin: /\\//,\n end: /\\/[gimuy]*/,\n illegal: /\\n/,\n contains: [\n BACKSLASH_ESCAPE,\n {\n begin: /\\[/,\n end: /\\]/,\n relevance: 0,\n contains: [\n BACKSLASH_ESCAPE\n ]\n }\n ]\n }\n ]\n};\nconst TITLE_MODE = {\n scope: \"title\",\n begin: IDENT_RE,\n relevance: 0\n};\nconst UNDERSCORE_TITLE_MODE = {\n scope: \"title\",\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0\n};\nconst METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: \"\\\\.\\\\s*\" + UNDERSCORE_IDENT_RE,\n relevance: 0\n};\n/**\n * Adds end same as begin mechanics to a mode\n *\n * Your mode must include at least a single () match group as that first match\n * group is what is used for comparison\n * @param {Partial<Mode>} mode\n */ const END_SAME_AS_BEGIN = function(mode) {\n return Object.assign(mode, {\n /** @type {ModeCallback} */ \"on:begin\": (m, resp)=>{\n resp.data._beginMatch = m[1];\n },\n /** @type {ModeCallback} */ \"on:end\": (m, resp)=>{\n if (resp.data._beginMatch !== m[1]) resp.ignoreMatch();\n }\n });\n};\nvar MODES = /*#__PURE__*/ Object.freeze({\n __proto__: null,\n MATCH_NOTHING_RE: MATCH_NOTHING_RE,\n IDENT_RE: IDENT_RE,\n UNDERSCORE_IDENT_RE: UNDERSCORE_IDENT_RE,\n NUMBER_RE: NUMBER_RE,\n C_NUMBER_RE: C_NUMBER_RE,\n BINARY_NUMBER_RE: BINARY_NUMBER_RE,\n RE_STARTERS_RE: RE_STARTERS_RE,\n SHEBANG: SHEBANG,\n BACKSLASH_ESCAPE: BACKSLASH_ESCAPE,\n APOS_STRING_MODE: APOS_STRING_MODE,\n QUOTE_STRING_MODE: QUOTE_STRING_MODE,\n PHRASAL_WORDS_MODE: PHRASAL_WORDS_MODE,\n COMMENT: COMMENT,\n C_LINE_COMMENT_MODE: C_LINE_COMMENT_MODE,\n C_BLOCK_COMMENT_MODE: C_BLOCK_COMMENT_MODE,\n HASH_COMMENT_MODE: HASH_COMMENT_MODE,\n NUMBER_MODE: NUMBER_MODE,\n C_NUMBER_MODE: C_NUMBER_MODE,\n BINARY_NUMBER_MODE: BINARY_NUMBER_MODE,\n REGEXP_MODE: REGEXP_MODE,\n TITLE_MODE: TITLE_MODE,\n UNDERSCORE_TITLE_MODE: UNDERSCORE_TITLE_MODE,\n METHOD_GUARD: METHOD_GUARD,\n END_SAME_AS_BEGIN: END_SAME_AS_BEGIN\n});\n/**\n@typedef {import('highlight.js').CallbackResponse} CallbackResponse\n@typedef {import('highlight.js').CompilerExt} CompilerExt\n*/ // Grammar extensions / plugins\n// See: https://github.com/highlightjs/highlight.js/issues/2833\n// Grammar extensions allow \"syntactic sugar\" to be added to the grammar modes\n// without requiring any underlying changes to the compiler internals.\n// `compileMatch` being the perfect small example of now allowing a grammar\n// author to write `match` when they desire to match a single expression rather\n// than being forced to use `begin`. The extension then just moves `match` into\n// `begin` when it runs. Ie, no features have been added, but we've just made\n// the experience of writing (and reading grammars) a little bit nicer.\n// ------\n// TODO: We need negative look-behind support to do this properly\n/**\n * Skip a match if it has a preceding dot\n *\n * This is used for `beginKeywords` to prevent matching expressions such as\n * `bob.keyword.do()`. The mode compiler automatically wires this up as a\n * special _internal_ 'on:begin' callback for modes with `beginKeywords`\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */ function skipIfHasPrecedingDot(match, response) {\n const before = match.input[match.index - 1];\n if (before === \".\") {\n response.ignoreMatch();\n }\n}\n/**\n *\n * @type {CompilerExt}\n */ function scopeClassName(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.className !== undefined) {\n mode.scope = mode.className;\n delete mode.className;\n }\n}\n/**\n * `beginKeywords` syntactic sugar\n * @type {CompilerExt}\n */ function beginKeywords(mode, parent) {\n if (!parent) return;\n if (!mode.beginKeywords) return;\n // for languages with keywords that include non-word characters checking for\n // a word boundary is not sufficient, so instead we check for a word boundary\n // or whitespace - this does no harm in any case since our keyword engine\n // doesn't allow spaces in keywords anyways and we still check for the boundary\n // first\n mode.begin = \"\\\\b(\" + mode.beginKeywords.split(\" \").join(\"|\") + \")(?!\\\\.)(?=\\\\b|\\\\s)\";\n mode.__beforeBegin = skipIfHasPrecedingDot;\n mode.keywords = mode.keywords || mode.beginKeywords;\n delete mode.beginKeywords;\n // prevents double relevance, the keywords themselves provide\n // relevance, the mode doesn't need to double it\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 0;\n}\n/**\n * Allow `illegal` to contain an array of illegal values\n * @type {CompilerExt}\n */ function compileIllegal(mode, _parent) {\n if (!Array.isArray(mode.illegal)) return;\n mode.illegal = either(...mode.illegal);\n}\n/**\n * `match` to match a single expression for readability\n * @type {CompilerExt}\n */ function compileMatch(mode, _parent) {\n if (!mode.match) return;\n if (mode.begin || mode.end) throw new Error(\"begin & end are not supported with match\");\n mode.begin = mode.match;\n delete mode.match;\n}\n/**\n * provides the default 1 relevance to all modes\n * @type {CompilerExt}\n */ function compileRelevance(mode, _parent) {\n // eslint-disable-next-line no-undefined\n if (mode.relevance === undefined) mode.relevance = 1;\n}\n// allow beforeMatch to act as a \"qualifier\" for the match\n// the full match begin must be [beforeMatch][begin]\nconst beforeMatchExt = (mode, parent)=>{\n if (!mode.beforeMatch) return;\n // starts conflicts with endsParent which we need to make sure the child\n // rule is not matched multiple times\n if (mode.starts) throw new Error(\"beforeMatch cannot be used with starts\");\n const originalMode = Object.assign({}, mode);\n Object.keys(mode).forEach((key)=>{\n delete mode[key];\n });\n mode.keywords = originalMode.keywords;\n mode.begin = concat(originalMode.beforeMatch, lookahead(originalMode.begin));\n mode.starts = {\n relevance: 0,\n contains: [\n Object.assign(originalMode, {\n endsParent: true\n })\n ]\n };\n mode.relevance = 0;\n delete originalMode.beforeMatch;\n};\n// keywords that should have no default relevance value\nconst COMMON_KEYWORDS = [\n \"of\",\n \"and\",\n \"for\",\n \"in\",\n \"not\",\n \"or\",\n \"if\",\n \"then\",\n \"parent\",\n \"list\",\n \"value\" // common variable name\n];\nconst DEFAULT_KEYWORD_SCOPE = \"keyword\";\n/**\n * Given raw keywords from a language definition, compile them.\n *\n * @param {string | Record<string,string|string[]> | Array<string>} rawKeywords\n * @param {boolean} caseInsensitive\n */ function compileKeywords(rawKeywords, caseInsensitive, scopeName = DEFAULT_KEYWORD_SCOPE) {\n /** @type {import(\"highlight.js/private\").KeywordDict} */ const compiledKeywords = Object.create(null);\n // input can be a string of keywords, an array of keywords, or a object with\n // named keys representing scopeName (which can then point to a string or array)\n if (typeof rawKeywords === \"string\") {\n compileList(scopeName, rawKeywords.split(\" \"));\n } else if (Array.isArray(rawKeywords)) {\n compileList(scopeName, rawKeywords);\n } else {\n Object.keys(rawKeywords).forEach(function(scopeName) {\n // collapse all our objects back into the parent object\n Object.assign(compiledKeywords, compileKeywords(rawKeywords[scopeName], caseInsensitive, scopeName));\n });\n }\n return compiledKeywords;\n // ---\n /**\n * Compiles an individual list of keywords\n *\n * Ex: \"for if when while|5\"\n *\n * @param {string} scopeName\n * @param {Array<string>} keywordList\n */ function compileList(scopeName, keywordList) {\n if (caseInsensitive) {\n keywordList = keywordList.map((x)=>x.toLowerCase());\n }\n keywordList.forEach(function(keyword) {\n const pair = keyword.split(\"|\");\n compiledKeywords[pair[0]] = [\n scopeName,\n scoreForKeyword(pair[0], pair[1])\n ];\n });\n }\n}\n/**\n * Returns the proper score for a given keyword\n *\n * Also takes into account comment keywords, which will be scored 0 UNLESS\n * another score has been manually assigned.\n * @param {string} keyword\n * @param {string} [providedScore]\n */ function scoreForKeyword(keyword, providedScore) {\n // manual scores always win over common keywords\n // so you can force a score of 1 if you really insist\n if (providedScore) {\n return Number(providedScore);\n }\n return commonKeyword(keyword) ? 0 : 1;\n}\n/**\n * Determines if a given keyword is common or not\n *\n * @param {string} keyword */ function commonKeyword(keyword) {\n return COMMON_KEYWORDS.includes(keyword.toLowerCase());\n}\n/*\n\nFor the reasoning behind this please see:\nhttps://github.com/highlightjs/highlight.js/issues/2880#issuecomment-747275419\n\n*/ /**\n * @type {Record<string, boolean>}\n */ const seenDeprecations = {};\n/**\n * @param {string} message\n */ const error = (message)=>{\n console.error(message);\n};\n/**\n * @param {string} message\n * @param {any} args\n */ const warn = (message, ...args)=>{\n console.log(`WARN: ${message}`, ...args);\n};\n/**\n * @param {string} version\n * @param {string} message\n */ const deprecated = (version, message)=>{\n if (seenDeprecations[`${version}/${message}`]) return;\n console.log(`Deprecated as of ${version}. ${message}`);\n seenDeprecations[`${version}/${message}`] = true;\n};\n/* eslint-disable no-throw-literal */ /**\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n*/ const MultiClassError = new Error();\n/**\n * Renumbers labeled scope names to account for additional inner match\n * groups that otherwise would break everything.\n *\n * Lets say we 3 match scopes:\n *\n * { 1 => ..., 2 => ..., 3 => ... }\n *\n * So what we need is a clean match like this:\n *\n * (a)(b)(c) => [ \"a\", \"b\", \"c\" ]\n *\n * But this falls apart with inner match groups:\n *\n * (a)(((b)))(c) => [\"a\", \"b\", \"b\", \"b\", \"c\" ]\n *\n * Our scopes are now \"out of alignment\" and we're repeating `b` 3 times.\n * What needs to happen is the numbers are remapped:\n *\n * { 1 => ..., 2 => ..., 5 => ... }\n *\n * We also need to know that the ONLY groups that should be output\n * are 1, 2, and 5. This function handles this behavior.\n *\n * @param {CompiledMode} mode\n * @param {Array<RegExp | string>} regexes\n * @param {{key: \"beginScope\"|\"endScope\"}} opts\n */ function remapScopeNames(mode, regexes, { key }) {\n let offset = 0;\n const scopeNames = mode[key];\n /** @type Record<number,boolean> */ const emit = {};\n /** @type Record<number,string> */ const positions = {};\n for(let i = 1; i <= regexes.length; i++){\n positions[i + offset] = scopeNames[i];\n emit[i + offset] = true;\n offset += countMatchGroups(regexes[i - 1]);\n }\n // we use _emit to keep track of which match groups are \"top-level\" to avoid double\n // output from inside match groups\n mode[key] = positions;\n mode[key]._emit = emit;\n mode[key]._multi = true;\n}\n/**\n * @param {CompiledMode} mode\n */ function beginMultiClass(mode) {\n if (!Array.isArray(mode.begin)) return;\n if (mode.skip || mode.excludeBegin || mode.returnBegin) {\n error(\"skip, excludeBegin, returnBegin not compatible with beginScope: {}\");\n throw MultiClassError;\n }\n if (typeof mode.beginScope !== \"object\" || mode.beginScope === null) {\n error(\"beginScope must be object\");\n throw MultiClassError;\n }\n remapScopeNames(mode, mode.begin, {\n key: \"beginScope\"\n });\n mode.begin = _rewriteBackreferences(mode.begin, {\n joinWith: \"\"\n });\n}\n/**\n * @param {CompiledMode} mode\n */ function endMultiClass(mode) {\n if (!Array.isArray(mode.end)) return;\n if (mode.skip || mode.excludeEnd || mode.returnEnd) {\n error(\"skip, excludeEnd, returnEnd not compatible with endScope: {}\");\n throw MultiClassError;\n }\n if (typeof mode.endScope !== \"object\" || mode.endScope === null) {\n error(\"endScope must be object\");\n throw MultiClassError;\n }\n remapScopeNames(mode, mode.end, {\n key: \"endScope\"\n });\n mode.end = _rewriteBackreferences(mode.end, {\n joinWith: \"\"\n });\n}\n/**\n * this exists only to allow `scope: {}` to be used beside `match:`\n * Otherwise `beginScope` would necessary and that would look weird\n\n {\n match: [ /def/, /\\w+/ ]\n scope: { 1: \"keyword\" , 2: \"title\" }\n }\n\n * @param {CompiledMode} mode\n */ function scopeSugar(mode) {\n if (mode.scope && typeof mode.scope === \"object\" && mode.scope !== null) {\n mode.beginScope = mode.scope;\n delete mode.scope;\n }\n}\n/**\n * @param {CompiledMode} mode\n */ function MultiClass(mode) {\n scopeSugar(mode);\n if (typeof mode.beginScope === \"string\") {\n mode.beginScope = {\n _wrap: mode.beginScope\n };\n }\n if (typeof mode.endScope === \"string\") {\n mode.endScope = {\n _wrap: mode.endScope\n };\n }\n beginMultiClass(mode);\n endMultiClass(mode);\n}\n/**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').CompiledLanguage} CompiledLanguage\n*/ // compilation\n/**\n * Compiles a language definition result\n *\n * Given the raw result of a language definition (Language), compiles this so\n * that it is ready for highlighting code.\n * @param {Language} language\n * @returns {CompiledLanguage}\n */ function compileLanguage(language) {\n /**\n * Builds a regex with the case sensitivity of the current language\n *\n * @param {RegExp | string} value\n * @param {boolean} [global]\n */ function langRe(value, global) {\n return new RegExp(source(value), \"m\" + (language.case_insensitive ? \"i\" : \"\") + (language.unicodeRegex ? \"u\" : \"\") + (global ? \"g\" : \"\"));\n }\n /**\n Stores multiple regular expressions and allows you to quickly search for\n them all in a string simultaneously - returning the first match. It does\n this by creating a huge (a|b|c) regex - each individual item wrapped with ()\n and joined by `|` - using match groups to track position. When a match is\n found checking which position in the array has content allows us to figure\n out which of the original regexes / match groups triggered the match.\n\n The match object itself (the result of `Regex.exec`) is returned but also\n enhanced by merging in any meta-data that was registered with the regex.\n This is how we keep track of which mode matched, and what type of rule\n (`illegal`, `begin`, end, etc).\n */ class MultiRegex {\n constructor(){\n this.matchIndexes = {};\n // @ts-ignore\n this.regexes = [];\n this.matchAt = 1;\n this.position = 0;\n }\n // @ts-ignore\n addRule(re, opts) {\n opts.position = this.position++;\n // @ts-ignore\n this.matchIndexes[this.matchAt] = opts;\n this.regexes.push([\n opts,\n re\n ]);\n this.matchAt += countMatchGroups(re) + 1;\n }\n compile() {\n if (this.regexes.length === 0) {\n // avoids the need to check length every time exec is called\n // @ts-ignore\n this.exec = ()=>null;\n }\n const terminators = this.regexes.map((el)=>el[1]);\n this.matcherRe = langRe(_rewriteBackreferences(terminators, {\n joinWith: \"|\"\n }), true);\n this.lastIndex = 0;\n }\n /** @param {string} s */ exec(s) {\n this.matcherRe.lastIndex = this.lastIndex;\n const match = this.matcherRe.exec(s);\n if (!match) {\n return null;\n }\n // eslint-disable-next-line no-undefined\n const i = match.findIndex((el, i)=>i > 0 && el !== undefined);\n // @ts-ignore\n const matchData = this.matchIndexes[i];\n // trim off any earlier non-relevant match groups (ie, the other regex\n // match groups that make up the multi-matcher)\n match.splice(0, i);\n return Object.assign(match, matchData);\n }\n }\n /*\n Created to solve the key deficiently with MultiRegex - there is no way to\n test for multiple matches at a single location. Why would we need to do\n that? In the future a more dynamic engine will allow certain matches to be\n ignored. An example: if we matched say the 3rd regex in a large group but\n decided to ignore it - we'd need to started testing again at the 4th\n regex... but MultiRegex itself gives us no real way to do that.\n\n So what this class creates MultiRegexs on the fly for whatever search\n position they are needed.\n\n NOTE: These additional MultiRegex objects are created dynamically. For most\n grammars most of the time we will never actually need anything more than the\n first MultiRegex - so this shouldn't have too much overhead.\n\n Say this is our search group, and we match regex3, but wish to ignore it.\n\n regex1 | regex2 | regex3 | regex4 | regex5 ' ie, startAt = 0\n\n What we need is a new MultiRegex that only includes the remaining\n possibilities:\n\n regex4 | regex5 ' ie, startAt = 3\n\n This class wraps all that complexity up in a simple API... `startAt` decides\n where in the array of expressions to start doing the matching. It\n auto-increments, so if a match is found at position 2, then startAt will be\n set to 3. If the end is reached startAt will return to 0.\n\n MOST of the time the parser will be setting startAt manually to 0.\n */ class ResumableMultiRegex {\n constructor(){\n // @ts-ignore\n this.rules = [];\n // @ts-ignore\n this.multiRegexes = [];\n this.count = 0;\n this.lastIndex = 0;\n this.regexIndex = 0;\n }\n // @ts-ignore\n getMatcher(index) {\n if (this.multiRegexes[index]) return this.multiRegexes[index];\n const matcher = new MultiRegex();\n this.rules.slice(index).forEach(([re, opts])=>matcher.addRule(re, opts));\n matcher.compile();\n this.multiRegexes[index] = matcher;\n return matcher;\n }\n resumingScanAtSamePosition() {\n return this.regexIndex !== 0;\n }\n considerAll() {\n this.regexIndex = 0;\n }\n // @ts-ignore\n addRule(re, opts) {\n this.rules.push([\n re,\n opts\n ]);\n if (opts.type === \"begin\") this.count++;\n }\n /** @param {string} s */ exec(s) {\n const m = this.getMatcher(this.regexIndex);\n m.lastIndex = this.lastIndex;\n let result = m.exec(s);\n // The following is because we have no easy way to say \"resume scanning at the\n // existing position but also skip the current rule ONLY\". What happens is\n // all prior rules are also skipped which can result in matching the wrong\n // thing. Example of matching \"booger\":\n // our matcher is [string, \"booger\", number]\n //\n // ....booger....\n // if \"booger\" is ignored then we'd really need a regex to scan from the\n // SAME position for only: [string, number] but ignoring \"booger\" (if it\n // was the first match), a simple resume would scan ahead who knows how\n // far looking only for \"number\", ignoring potential string matches (or\n // future \"booger\" matches that might be valid.)\n // So what we do: We execute two matchers, one resuming at the same\n // position, but the second full matcher starting at the position after:\n // /--- resume first regex match here (for [number])\n // |/---- full match here for [string, \"booger\", number]\n // vv\n // ....booger....\n // Which ever results in a match first is then used. So this 3-4 step\n // process essentially allows us to say \"match at this position, excluding\n // a prior rule that was ignored\".\n //\n // 1. Match \"booger\" first, ignore. Also proves that [string] does non match.\n // 2. Resume matching for [number]\n // 3. Match at index + 1 for [string, \"booger\", number]\n // 4. If #2 and #3 result in matches, which came first?\n if (this.resumingScanAtSamePosition()) {\n if (result && result.index === this.lastIndex) ;\n else {\n const m2 = this.getMatcher(0);\n m2.lastIndex = this.lastIndex + 1;\n result = m2.exec(s);\n }\n }\n if (result) {\n this.regexIndex += result.position + 1;\n if (this.regexIndex === this.count) {\n // wrap-around to considering all matches again\n this.considerAll();\n }\n }\n return result;\n }\n }\n /**\n * Given a mode, builds a huge ResumableMultiRegex that can be used to walk\n * the content and find matches.\n *\n * @param {CompiledMode} mode\n * @returns {ResumableMultiRegex}\n */ function buildModeRegex(mode) {\n const mm = new ResumableMultiRegex();\n mode.contains.forEach((term)=>mm.addRule(term.begin, {\n rule: term,\n type: \"begin\"\n }));\n if (mode.terminatorEnd) {\n mm.addRule(mode.terminatorEnd, {\n type: \"end\"\n });\n }\n if (mode.illegal) {\n mm.addRule(mode.illegal, {\n type: \"illegal\"\n });\n }\n return mm;\n }\n /** skip vs abort vs ignore\n *\n * @skip - The mode is still entered and exited normally (and contains rules apply),\n * but all content is held and added to the parent buffer rather than being\n * output when the mode ends. Mostly used with `sublanguage` to build up\n * a single large buffer than can be parsed by sublanguage.\n *\n * - The mode begin ands ends normally.\n * - Content matched is added to the parent mode buffer.\n * - The parser cursor is moved forward normally.\n *\n * @abort - A hack placeholder until we have ignore. Aborts the mode (as if it\n * never matched) but DOES NOT continue to match subsequent `contains`\n * modes. Abort is bad/suboptimal because it can result in modes\n * farther down not getting applied because an earlier rule eats the\n * content but then aborts.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is added to the mode buffer.\n * - The parser cursor is moved forward accordingly.\n *\n * @ignore - Ignores the mode (as if it never matched) and continues to match any\n * subsequent `contains` modes. Ignore isn't technically possible with\n * the current parser implementation.\n *\n * - The mode does not begin.\n * - Content matched by `begin` is ignored.\n * - The parser cursor is not moved forward.\n */ /**\n * Compiles an individual mode\n *\n * This can raise an error if the mode contains certain detectable known logic\n * issues.\n * @param {Mode} mode\n * @param {CompiledMode | null} [parent]\n * @returns {CompiledMode | never}\n */ function compileMode(mode, parent) {\n const cmode = /** @type CompiledMode */ mode;\n if (mode.isCompiled) return cmode;\n [\n scopeClassName,\n // do this early so compiler extensions generally don't have to worry about\n // the distinction between match/begin\n compileMatch,\n MultiClass,\n beforeMatchExt\n ].forEach((ext)=>ext(mode, parent));\n language.compilerExtensions.forEach((ext)=>ext(mode, parent));\n // __beforeBegin is considered private API, internal use only\n mode.__beforeBegin = null;\n [\n beginKeywords,\n // do this later so compiler extensions that come earlier have access to the\n // raw array if they wanted to perhaps manipulate it, etc.\n compileIllegal,\n // default to 1 relevance if not specified\n compileRelevance\n ].forEach((ext)=>ext(mode, parent));\n mode.isCompiled = true;\n let keywordPattern = null;\n if (typeof mode.keywords === \"object\" && mode.keywords.$pattern) {\n // we need a copy because keywords might be compiled multiple times\n // so we can't go deleting $pattern from the original on the first\n // pass\n mode.keywords = Object.assign({}, mode.keywords);\n keywordPattern = mode.keywords.$pattern;\n delete mode.keywords.$pattern;\n }\n keywordPattern = keywordPattern || /\\w+/;\n if (mode.keywords) {\n mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);\n }\n cmode.keywordPatternRe = langRe(keywordPattern, true);\n if (parent) {\n if (!mode.begin) mode.begin = /\\B|\\b/;\n cmode.beginRe = langRe(cmode.begin);\n if (!mode.end && !mode.endsWithParent) mode.end = /\\B|\\b/;\n if (mode.end) cmode.endRe = langRe(cmode.end);\n cmode.terminatorEnd = source(cmode.end) || \"\";\n if (mode.endsWithParent && parent.terminatorEnd) {\n cmode.terminatorEnd += (mode.end ? \"|\" : \"\") + parent.terminatorEnd;\n }\n }\n if (mode.illegal) cmode.illegalRe = langRe(/** @type {RegExp | string} */ mode.illegal);\n if (!mode.contains) mode.contains = [];\n mode.contains = [].concat(...mode.contains.map(function(c) {\n return expandOrCloneMode(c === \"self\" ? mode : c);\n }));\n mode.contains.forEach(function(c) {\n compileMode(/** @type Mode */ c, cmode);\n });\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n cmode.matcher = buildModeRegex(cmode);\n return cmode;\n }\n if (!language.compilerExtensions) language.compilerExtensions = [];\n // self is not valid at the top-level\n if (language.contains && language.contains.includes(\"self\")) {\n throw new Error(\"ERR: contains `self` is not supported at the top-level of a language. See documentation.\");\n }\n // we need a null object, which inherit will guarantee\n language.classNameAliases = inherit$1(language.classNameAliases || {});\n return compileMode(/** @type Mode */ language);\n}\n/**\n * Determines if a mode has a dependency on it's parent or not\n *\n * If a mode does have a parent dependency then often we need to clone it if\n * it's used in multiple places so that each copy points to the correct parent,\n * where-as modes without a parent can often safely be re-used at the bottom of\n * a mode chain.\n *\n * @param {Mode | null} mode\n * @returns {boolean} - is there a dependency on the parent?\n * */ function dependencyOnParent(mode) {\n if (!mode) return false;\n return mode.endsWithParent || dependencyOnParent(mode.starts);\n}\n/**\n * Expands a mode or clones it if necessary\n *\n * This is necessary for modes with parental dependenceis (see notes on\n * `dependencyOnParent`) and for nodes that have `variants` - which must then be\n * exploded into their own individual modes at compile time.\n *\n * @param {Mode} mode\n * @returns {Mode | Mode[]}\n * */ function expandOrCloneMode(mode) {\n if (mode.variants && !mode.cachedVariants) {\n mode.cachedVariants = mode.variants.map(function(variant) {\n return inherit$1(mode, {\n variants: null\n }, variant);\n });\n }\n // EXPAND\n // if we have variants then essentially \"replace\" the mode with the variants\n // this happens in compileMode, where this function is called from\n if (mode.cachedVariants) {\n return mode.cachedVariants;\n }\n // CLONE\n // if we have dependencies on parents then we need a unique\n // instance of ourselves, so we can be reused with many\n // different parents without issue\n if (dependencyOnParent(mode)) {\n return inherit$1(mode, {\n starts: mode.starts ? inherit$1(mode.starts) : null\n });\n }\n if (Object.isFrozen(mode)) {\n return inherit$1(mode);\n }\n // no special dependency issues, just return ourselves\n return mode;\n}\nvar version = \"11.7.0\";\nclass HTMLInjectionError extends Error {\n constructor(reason, html){\n super(reason);\n this.name = \"HTMLInjectionError\";\n this.html = html;\n }\n}\n/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/ /**\n@typedef {import('highlight.js').Mode} Mode\n@typedef {import('highlight.js').CompiledMode} CompiledMode\n@typedef {import('highlight.js').CompiledScope} CompiledScope\n@typedef {import('highlight.js').Language} Language\n@typedef {import('highlight.js').HLJSApi} HLJSApi\n@typedef {import('highlight.js').HLJSPlugin} HLJSPlugin\n@typedef {import('highlight.js').PluginEvent} PluginEvent\n@typedef {import('highlight.js').HLJSOptions} HLJSOptions\n@typedef {import('highlight.js').LanguageFn} LanguageFn\n@typedef {import('highlight.js').HighlightedHTMLElement} HighlightedHTMLElement\n@typedef {import('highlight.js').BeforeHighlightContext} BeforeHighlightContext\n@typedef {import('highlight.js/private').MatchType} MatchType\n@typedef {import('highlight.js/private').KeywordData} KeywordData\n@typedef {import('highlight.js/private').EnhancedMatch} EnhancedMatch\n@typedef {import('highlight.js/private').AnnotatedError} AnnotatedError\n@typedef {import('highlight.js').AutoHighlightResult} AutoHighlightResult\n@typedef {import('highlight.js').HighlightOptions} HighlightOptions\n@typedef {import('highlight.js').HighlightResult} HighlightResult\n*/ const escape = escapeHTML;\nconst inherit = inherit$1;\nconst NO_MATCH = Symbol(\"nomatch\");\nconst MAX_KEYWORD_HITS = 7;\n/**\n * @param {any} hljs - object that is extended (legacy)\n * @returns {HLJSApi}\n */ const HLJS = function(hljs) {\n // Global internal variables used within the highlight.js library.\n /** @type {Record<string, Language>} */ const languages = Object.create(null);\n /** @type {Record<string, string>} */ const aliases = Object.create(null);\n /** @type {HLJSPlugin[]} */ const plugins = [];\n // safe/production mode - swallows more errors, tries to keep running\n // even if a single syntax or parse hits a fatal error\n let SAFE_MODE = true;\n const LANGUAGE_NOT_FOUND = \"Could not find the language '{}', did you forget to load/include a language module?\";\n /** @type {Language} */ const PLAINTEXT_LANGUAGE = {\n disableAutodetect: true,\n name: \"Plain text\",\n contains: []\n };\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n /** @type HLJSOptions */ let options = {\n ignoreUnescapedHTML: false,\n throwUnescapedHTML: false,\n noHighlightRe: /^(no-?highlight)$/i,\n languageDetectRe: /\\blang(?:uage)?-([\\w-]+)\\b/i,\n classPrefix: \"hljs-\",\n cssSelector: \"pre code\",\n languages: null,\n // beta configuration options, subject to change, welcome to discuss\n // https://github.com/highlightjs/highlight.js/issues/1086\n __emitter: TokenTreeEmitter\n };\n /* Utility functions */ /**\n * Tests a language name to see if highlighting should be skipped\n * @param {string} languageName\n */ function shouldNotHighlight(languageName) {\n return options.noHighlightRe.test(languageName);\n }\n /**\n * @param {HighlightedHTMLElement} block - the HTML element to determine language for\n */ function blockLanguage(block) {\n let classes = block.className + \" \";\n classes += block.parentNode ? block.parentNode.className : \"\";\n // language-* takes precedence over non-prefixed class names.\n const match = options.languageDetectRe.exec(classes);\n if (match) {\n const language = getLanguage(match[1]);\n if (!language) {\n warn(LANGUAGE_NOT_FOUND.replace(\"{}\", match[1]));\n warn(\"Falling back to no-highlight mode for this block.\", block);\n }\n return language ? match[1] : \"no-highlight\";\n }\n return classes.split(/\\s+/).find((_class)=>shouldNotHighlight(_class) || getLanguage(_class));\n }\n /**\n * Core highlighting function.\n *\n * OLD API\n * highlight(lang, code, ignoreIllegals, continuation)\n *\n * NEW API\n * highlight(code, {lang, ignoreIllegals})\n *\n * @param {string} codeOrLanguageName - the language to use for highlighting\n * @param {string | HighlightOptions} optionsOrCode - the code to highlight\n * @param {boolean} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n *\n * @returns {HighlightResult} Result - an object that represents the result\n * @property {string} language - the language name\n * @property {number} relevance - the relevance score\n * @property {string} value - the highlighted HTML code\n * @property {string} code - the original raw code\n * @property {CompiledMode} top - top of the current mode stack\n * @property {boolean} illegal - indicates whether any illegal matches were found\n */ function highlight(codeOrLanguageName, optionsOrCode, ignoreIllegals) {\n let code = \"\";\n let languageName = \"\";\n if (typeof optionsOrCode === \"object\") {\n code = codeOrLanguageName;\n ignoreIllegals = optionsOrCode.ignoreIllegals;\n languageName = optionsOrCode.language;\n } else {\n // old API\n deprecated(\"10.7.0\", \"highlight(lang, code, ...args) has been deprecated.\");\n deprecated(\"10.7.0\", \"Please use highlight(code, options) instead.\\nhttps://github.com/highlightjs/highlight.js/issues/2277\");\n languageName = codeOrLanguageName;\n code = optionsOrCode;\n }\n // https://github.com/highlightjs/highlight.js/issues/3149\n // eslint-disable-next-line no-undefined\n if (ignoreIllegals === undefined) {\n ignoreIllegals = true;\n }\n /** @type {BeforeHighlightContext} */ const context = {\n code,\n language: languageName\n };\n // the plugin can change the desired language or the code to be highlighted\n // just be changing the object it was passed\n fire(\"before:highlight\", context);\n // a before plugin can usurp the result completely by providing it's own\n // in which case we don't even need to call highlight\n const result = context.result ? context.result : _highlight(context.language, context.code, ignoreIllegals);\n result.code = context.code;\n // the plugin can change anything in result to suite it\n fire(\"after:highlight\", result);\n return result;\n }\n /**\n * private highlight that's used internally and does not fire callbacks\n *\n * @param {string} languageName - the language to use for highlighting\n * @param {string} codeToHighlight - the code to highlight\n * @param {boolean?} [ignoreIllegals] - whether to ignore illegal matches, default is to bail\n * @param {CompiledMode?} [continuation] - current continuation mode, if any\n * @returns {HighlightResult} - result of the highlight operation\n */ function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {\n const keywordHits = Object.create(null);\n /**\n * Return keyword data if a match is a keyword\n * @param {CompiledMode} mode - current mode\n * @param {string} matchText - the textual match\n * @returns {KeywordData | false}\n */ function keywordData(mode, matchText) {\n return mode.keywords[matchText];\n }\n function processKeywords() {\n if (!top.keywords) {\n emitter.addText(modeBuffer);\n return;\n }\n let lastIndex = 0;\n top.keywordPatternRe.lastIndex = 0;\n let match = top.keywordPatternRe.exec(modeBuffer);\n let buf = \"\";\n while(match){\n buf += modeBuffer.substring(lastIndex, match.index);\n const word = language.case_insensitive ? match[0].toLowerCase() : match[0];\n const data = keywordData(top, word);\n if (data) {\n const [kind, keywordRelevance] = data;\n emitter.addText(buf);\n buf = \"\";\n keywordHits[word] = (keywordHits[word] || 0) + 1;\n if (keywordHits[word] <= MAX_KEYWORD_HITS) relevance += keywordRelevance;\n if (kind.startsWith(\"_\")) {\n // _ implied for relevance only, do not highlight\n // by applying a class name\n buf += match[0];\n } else {\n const cssClass = language.classNameAliases[kind] || kind;\n emitter.addKeyword(match[0], cssClass);\n }\n } else {\n buf += match[0];\n }\n lastIndex = top.keywordPatternRe.lastIndex;\n match = top.keywordPatternRe.exec(modeBuffer);\n }\n buf += modeBuffer.substring(lastIndex);\n emitter.addText(buf);\n }\n function processSubLanguage() {\n if (modeBuffer === \"\") return;\n /** @type HighlightResult */ let result = null;\n if (typeof top.subLanguage === \"string\") {\n if (!languages[top.subLanguage]) {\n emitter.addText(modeBuffer);\n return;\n }\n result = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);\n continuations[top.subLanguage] = /** @type {CompiledMode} */ result._top;\n } else {\n result = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);\n }\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Use case in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n emitter.addSublanguage(result._emitter, result.language);\n }\n function processBuffer() {\n if (top.subLanguage != null) {\n processSubLanguage();\n } else {\n processKeywords();\n }\n modeBuffer = \"\";\n }\n /**\n * @param {CompiledScope} scope\n * @param {RegExpMatchArray} match\n */ function emitMultiClass(scope, match) {\n let i = 1;\n const max = match.length - 1;\n while(i <= max){\n if (!scope._emit[i]) {\n i++;\n continue;\n }\n const klass = language.classNameAliases[scope[i]] || scope[i];\n const text = match[i];\n if (klass) {\n emitter.addKeyword(text, klass);\n } else {\n modeBuffer = text;\n processKeywords();\n modeBuffer = \"\";\n }\n i++;\n }\n }\n /**\n * @param {CompiledMode} mode - new mode to start\n * @param {RegExpMatchArray} match\n */ function startNewMode(mode, match) {\n if (mode.scope && typeof mode.scope === \"string\") {\n emitter.openNode(language.classNameAliases[mode.scope] || mode.scope);\n }\n if (mode.beginScope) {\n // beginScope just wraps the begin match itself in a scope\n if (mode.beginScope._wrap) {\n emitter.addKeyword(modeBuffer, language.classNameAliases[mode.beginScope._wrap] || mode.beginScope._wrap);\n modeBuffer = \"\";\n } else if (mode.beginScope._multi) {\n // at this point modeBuffer should just be the match\n emitMultiClass(mode.beginScope, match);\n modeBuffer = \"\";\n }\n }\n top = Object.create(mode, {\n parent: {\n value: top\n }\n });\n return top;\n }\n /**\n * @param {CompiledMode } mode - the mode to potentially end\n * @param {RegExpMatchArray} match - the latest match\n * @param {string} matchPlusRemainder - match plus remainder of content\n * @returns {CompiledMode | void} - the next mode, or if void continue on in current mode\n */ function endOfMode(mode, match, matchPlusRemainder) {\n let matched = startsWith(mode.endRe, matchPlusRemainder);\n if (matched) {\n if (mode[\"on:end\"]) {\n const resp = new Response(mode);\n mode[\"on:end\"](match, resp);\n if (resp.isMatchIgnored) matched = false;\n }\n if (matched) {\n while(mode.endsParent && mode.parent){\n mode = mode.parent;\n }\n return mode;\n }\n }\n // even if on:end fires an `ignore` it's still possible\n // that we might trigger the end node because of a parent mode\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, match, matchPlusRemainder);\n }\n }\n /**\n * Handle matching but then ignoring a sequence of text\n *\n * @param {string} lexeme - string containing full match text\n */ function doIgnore(lexeme) {\n if (top.matcher.regexIndex === 0) {\n // no more regexes to potentially match here, so we move the cursor forward one\n // space\n modeBuffer += lexeme[0];\n return 1;\n } else {\n // no need to move the cursor, we still have additional regexes to try and\n // match at this very spot\n resumeScanAtSamePosition = true;\n return 0;\n }\n }\n /**\n * Handle the start of a new potential mode match\n *\n * @param {EnhancedMatch} match - the current match\n * @returns {number} how far to advance the parse cursor\n */ function doBeginMatch(match) {\n const lexeme = match[0];\n const newMode = match.rule;\n const resp = new Response(newMode);\n // first internal before callbacks, then the public ones\n const beforeCallbacks = [\n newMode.__beforeBegin,\n newMode[\"on:begin\"]\n ];\n for (const cb of beforeCallbacks){\n if (!cb) continue;\n cb(match, resp);\n if (resp.isMatchIgnored) return doIgnore(lexeme);\n }\n if (newMode.skip) {\n modeBuffer += lexeme;\n } else {\n if (newMode.excludeBegin) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (!newMode.returnBegin && !newMode.excludeBegin) {\n modeBuffer = lexeme;\n }\n }\n startNewMode(newMode, match);\n return newMode.returnBegin ? 0 : lexeme.length;\n }\n /**\n * Handle the potential end of mode\n *\n * @param {RegExpMatchArray} match - the current match\n */ function doEndMatch(match) {\n const lexeme = match[0];\n const matchPlusRemainder = codeToHighlight.substring(match.index);\n const endMode = endOfMode(top, match, matchPlusRemainder);\n if (!endMode) {\n return NO_MATCH;\n }\n const origin = top;\n if (top.endScope && top.endScope._wrap) {\n processBuffer();\n emitter.addKeyword(lexeme, top.endScope._wrap);\n } else if (top.endScope && top.endScope._multi) {\n processBuffer();\n emitMultiClass(top.endScope, match);\n } else if (origin.skip) {\n modeBuffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n modeBuffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n modeBuffer = lexeme;\n }\n }\n do {\n if (top.scope) {\n emitter.closeNode();\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n }while (top !== endMode.parent);\n if (endMode.starts) {\n startNewMode(endMode.starts, match);\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n function processContinuations() {\n const list = [];\n for(let current = top; current !== language; current = current.parent){\n if (current.scope) {\n list.unshift(current.scope);\n }\n }\n list.forEach((item)=>emitter.openNode(item));\n }\n /** @type {{type?: MatchType, index?: number, rule?: Mode}}} */ let lastMatch = {};\n /**\n * Process an individual match\n *\n * @param {string} textBeforeMatch - text preceding the match (since the last match)\n * @param {EnhancedMatch} [match] - the match itself\n */ function processLexeme(textBeforeMatch, match) {\n const lexeme = match && match[0];\n // add non-matched text to the current mode buffer\n modeBuffer += textBeforeMatch;\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n // we've found a 0 width match and we're stuck, so we need to advance\n // this happens when we have badly behaved rules that have optional matchers to the degree that\n // sometimes they can end up matching nothing at all\n // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n if (lastMatch.type === \"begin\" && match.type === \"end\" && lastMatch.index === match.index && lexeme === \"\") {\n // spit the \"skipped\" character that our regex choked on back into the output sequence\n modeBuffer += codeToHighlight.slice(match.index, match.index + 1);\n if (!SAFE_MODE) {\n /** @type {AnnotatedError} */ const err = new Error(`0 width match regex (${languageName})`);\n err.languageName = languageName;\n err.badRule = lastMatch.rule;\n throw err;\n }\n return 1;\n }\n lastMatch = match;\n if (match.type === \"begin\") {\n return doBeginMatch(match);\n } else if (match.type === \"illegal\" && !ignoreIllegals) {\n // illegal match, we do not continue processing\n /** @type {AnnotatedError} */ const err = new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.scope || \"<unnamed>\") + '\"');\n err.mode = top;\n throw err;\n } else if (match.type === \"end\") {\n const processed = doEndMatch(match);\n if (processed !== NO_MATCH) {\n return processed;\n }\n }\n // edge case for when illegal matches $ (end of line) which is technically\n // a 0 width match but not a begin/end match so it's not caught by the\n // first handler (when ignoreIllegals is true)\n if (match.type === \"illegal\" && lexeme === \"\") {\n // advance so we aren't stuck in an infinite loop\n return 1;\n }\n // infinite loops are BAD, this is a last ditch catch all. if we have a\n // decent number of iterations yet our index (cursor position in our\n // parsing) still 3x behind our index then something is very wrong\n // so we bail\n if (iterations > 100000 && iterations > match.index * 3) {\n const err = new Error(\"potential infinite loop, way more iterations than matches\");\n throw err;\n }\n /*\n Why might be find ourselves here? An potential end match that was\n triggered but could not be completed. IE, `doEndMatch` returned NO_MATCH.\n (this could be because a callback requests the match be ignored, etc)\n\n This causes no real harm other than stopping a few times too many.\n */ modeBuffer += lexeme;\n return lexeme.length;\n }\n const language = getLanguage(languageName);\n if (!language) {\n error(LANGUAGE_NOT_FOUND.replace(\"{}\", languageName));\n throw new Error('Unknown language: \"' + languageName + '\"');\n }\n const md = compileLanguage(language);\n let result = \"\";\n /** @type {CompiledMode} */ let top = continuation || md;\n /** @type Record<string,CompiledMode> */ const continuations = {}; // keep continuations for sub-languages\n const emitter = new options.__emitter(options);\n processContinuations();\n let modeBuffer = \"\";\n let relevance = 0;\n let index = 0;\n let iterations = 0;\n let resumeScanAtSamePosition = false;\n try {\n top.matcher.considerAll();\n for(;;){\n iterations++;\n if (resumeScanAtSamePosition) {\n // only regexes not matched previously will now be\n // considered for a potential match\n resumeScanAtSamePosition = false;\n } else {\n top.matcher.considerAll();\n }\n top.matcher.lastIndex = index;\n const match = top.matcher.exec(codeToHighlight);\n // console.log(\"match\", match[0], match.rule && match.rule.begin)\n if (!match) break;\n const beforeMatch = codeToHighlight.substring(index, match.index);\n const processedCount = processLexeme(beforeMatch, match);\n index = match.index + processedCount;\n }\n processLexeme(codeToHighlight.substring(index));\n emitter.closeAllNodes();\n emitter.finalize();\n result = emitter.toHTML();\n return {\n language: languageName,\n value: result,\n relevance: relevance,\n illegal: false,\n _emitter: emitter,\n _top: top\n };\n } catch (err) {\n if (err.message && err.message.includes(\"Illegal\")) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: true,\n relevance: 0,\n _illegalBy: {\n message: err.message,\n index: index,\n context: codeToHighlight.slice(index - 100, index + 100),\n mode: err.mode,\n resultSoFar: result\n },\n _emitter: emitter\n };\n } else if (SAFE_MODE) {\n return {\n language: languageName,\n value: escape(codeToHighlight),\n illegal: false,\n relevance: 0,\n errorRaised: err,\n _emitter: emitter,\n _top: top\n };\n } else {\n throw err;\n }\n }\n }\n /**\n * returns a valid highlight result, without actually doing any actual work,\n * auto highlight starts with this and it's possible for small snippets that\n * auto-detection may not find a better match\n * @param {string} code\n * @returns {HighlightResult}\n */ function justTextHighlightResult(code) {\n const result = {\n value: escape(code),\n illegal: false,\n relevance: 0,\n _top: PLAINTEXT_LANGUAGE,\n _emitter: new options.__emitter(options)\n };\n result._emitter.addText(code);\n return result;\n }\n /**\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - secondBest (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n @param {string} code\n @param {Array<string>} [languageSubset]\n @returns {AutoHighlightResult}\n */ function highlightAuto(code, languageSubset) {\n languageSubset = languageSubset || options.languages || Object.keys(languages);\n const plaintext = justTextHighlightResult(code);\n const results = languageSubset.filter(getLanguage).filter(autoDetection).map((name)=>_highlight(name, code, false));\n results.unshift(plaintext); // plaintext is always an option\n const sorted = results.sort((a, b)=>{\n // sort base on relevance\n if (a.relevance !== b.relevance) return b.relevance - a.relevance;\n // always award the tie to the base language\n // ie if C++ and Arduino are tied, it's more likely to be C++\n if (a.language && b.language) {\n if (getLanguage(a.language).supersetOf === b.language) {\n return 1;\n } else if (getLanguage(b.language).supersetOf === a.language) {\n return -1;\n }\n }\n // otherwise say they are equal, which has the effect of sorting on\n // relevance while preserving the original ordering - which is how ties\n // have historically been settled, ie the language that comes first always\n // wins in the case of a tie\n return 0;\n });\n const [best, secondBest] = sorted;\n /** @type {AutoHighlightResult} */ const result = best;\n result.secondBest = secondBest;\n return result;\n }\n /**\n * Builds new class name for block given the language name\n *\n * @param {HTMLElement} element\n * @param {string} [currentLang]\n * @param {string} [resultLang]\n */ function updateClassName(element, currentLang, resultLang) {\n const language = currentLang && aliases[currentLang] || resultLang;\n element.classList.add(\"hljs\");\n element.classList.add(`language-${language}`);\n }\n /**\n * Applies highlighting to a DOM node containing code.\n *\n * @param {HighlightedHTMLElement} element - the HTML element to highlight\n */ function highlightElement(element) {\n /** @type HTMLElement */ let node = null;\n const language = blockLanguage(element);\n if (shouldNotHighlight(language)) return;\n fire(\"before:highlightElement\", {\n el: element,\n language: language\n });\n // we should be all text, no child nodes (unescaped HTML) - this is possibly\n // an HTML injection attack - it's likely too late if this is already in\n // production (the code has likely already done its damage by the time\n // we're seeing it)... but we yell loudly about this so that hopefully it's\n // more likely to be caught in development before making it to production\n if (element.children.length > 0) {\n if (!options.ignoreUnescapedHTML) {\n console.warn(\"One of your code blocks includes unescaped HTML. This is a potentially serious security risk.\");\n console.warn(\"https://github.com/highlightjs/highlight.js/wiki/security\");\n console.warn(\"The element with unescaped HTML:\");\n console.warn(element);\n }\n if (options.throwUnescapedHTML) {\n const err = new HTMLInjectionError(\"One of your code blocks includes unescaped HTML.\", element.innerHTML);\n throw err;\n }\n }\n node = element;\n const text = node.textContent;\n const result = language ? highlight(text, {\n language,\n ignoreIllegals: true\n }) : highlightAuto(text);\n element.innerHTML = result.value;\n updateClassName(element, language, result.language);\n element.result = {\n language: result.language,\n // TODO: remove with version 11.0\n re: result.relevance,\n relevance: result.relevance\n };\n if (result.secondBest) {\n element.secondBest = {\n language: result.secondBest.language,\n relevance: result.secondBest.relevance\n };\n }\n fire(\"after:highlightElement\", {\n el: element,\n result,\n text\n });\n }\n /**\n * Updates highlight.js global options with the passed options\n *\n * @param {Partial<HLJSOptions>} userOptions\n */ function configure(userOptions) {\n options = inherit(options, userOptions);\n }\n // TODO: remove v12, deprecated\n const initHighlighting = ()=>{\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlighting() deprecated. Use highlightAll() now.\");\n };\n // TODO: remove v12, deprecated\n function initHighlightingOnLoad() {\n highlightAll();\n deprecated(\"10.6.0\", \"initHighlightingOnLoad() deprecated. Use highlightAll() now.\");\n }\n let wantsHighlight = false;\n /**\n * auto-highlights all pre>code elements on the page\n */ function highlightAll() {\n // if we are called too early in the loading process\n if (document.readyState === \"loading\") {\n wantsHighlight = true;\n return;\n }\n const blocks = document.querySelectorAll(options.cssSelector);\n blocks.forEach(highlightElement);\n }\n function boot() {\n // if a highlight was requested before DOM was loaded, do now\n if (wantsHighlight) highlightAll();\n }\n // make sure we are in the browser environment\n if (false) {}\n /**\n * Register a language grammar module\n *\n * @param {string} languageName\n * @param {LanguageFn} languageDefinition\n */ function registerLanguage(languageName, languageDefinition) {\n let lang = null;\n try {\n lang = languageDefinition(hljs);\n } catch (error$1) {\n error(\"Language definition for '{}' could not be registered.\".replace(\"{}\", languageName));\n // hard or soft error\n if (!SAFE_MODE) {\n throw error$1;\n } else {\n error(error$1);\n }\n // languages that have serious errors are replaced with essentially a\n // \"plaintext\" stand-in so that the code blocks will still get normal\n // css classes applied to them - and one bad language won't break the\n // entire highlighter\n lang = PLAINTEXT_LANGUAGE;\n }\n // give it a temporary name if it doesn't have one in the meta-data\n if (!lang.name) lang.name = languageName;\n languages[languageName] = lang;\n lang.rawDefinition = languageDefinition.bind(null, hljs);\n if (lang.aliases) {\n registerAliases(lang.aliases, {\n languageName\n });\n }\n }\n /**\n * Remove a language grammar module\n *\n * @param {string} languageName\n */ function unregisterLanguage(languageName) {\n delete languages[languageName];\n for (const alias of Object.keys(aliases)){\n if (aliases[alias] === languageName) {\n delete aliases[alias];\n }\n }\n }\n /**\n * @returns {string[]} List of language internal names\n */ function listLanguages() {\n return Object.keys(languages);\n }\n /**\n * @param {string} name - name of the language to retrieve\n * @returns {Language | undefined}\n */ function getLanguage(name) {\n name = (name || \"\").toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n /**\n *\n * @param {string|string[]} aliasList - single alias or list of aliases\n * @param {{languageName: string}} opts\n */ function registerAliases(aliasList, { languageName }) {\n if (typeof aliasList === \"string\") {\n aliasList = [\n aliasList\n ];\n }\n aliasList.forEach((alias)=>{\n aliases[alias.toLowerCase()] = languageName;\n });\n }\n /**\n * Determines if a given language has auto-detection enabled\n * @param {string} name - name of the language\n */ function autoDetection(name) {\n const lang = getLanguage(name);\n return lang && !lang.disableAutodetect;\n }\n /**\n * Upgrades the old highlightBlock plugins to the new\n * highlightElement API\n * @param {HLJSPlugin} plugin\n */ function upgradePluginAPI(plugin) {\n // TODO: remove with v12\n if (plugin[\"before:highlightBlock\"] && !plugin[\"before:highlightElement\"]) {\n plugin[\"before:highlightElement\"] = (data)=>{\n plugin[\"before:highlightBlock\"](Object.assign({\n block: data.el\n }, data));\n };\n }\n if (plugin[\"after:highlightBlock\"] && !plugin[\"after:highlightElement\"]) {\n plugin[\"after:highlightElement\"] = (data)=>{\n plugin[\"after:highlightBlock\"](Object.assign({\n block: data.el\n }, data));\n };\n }\n }\n /**\n * @param {HLJSPlugin} plugin\n */ function addPlugin(plugin) {\n upgradePluginAPI(plugin);\n plugins.push(plugin);\n }\n /**\n *\n * @param {PluginEvent} event\n * @param {any} args\n */ function fire(event, args) {\n const cb = event;\n plugins.forEach(function(plugin) {\n if (plugin[cb]) {\n plugin[cb](args);\n }\n });\n }\n /**\n * DEPRECATED\n * @param {HighlightedHTMLElement} el\n */ function deprecateHighlightBlock(el) {\n deprecated(\"10.7.0\", \"highlightBlock will be removed entirely in v12.0\");\n deprecated(\"10.7.0\", \"Please use highlightElement now.\");\n return highlightElement(el);\n }\n /* Interface definition */ Object.assign(hljs, {\n highlight,\n highlightAuto,\n highlightAll,\n highlightElement,\n // TODO: Remove with v12 API\n highlightBlock: deprecateHighlightBlock,\n configure,\n initHighlighting,\n initHighlightingOnLoad,\n registerLanguage,\n unregisterLanguage,\n listLanguages,\n getLanguage,\n registerAliases,\n autoDetection,\n inherit,\n addPlugin\n });\n hljs.debugMode = function() {\n SAFE_MODE = false;\n };\n hljs.safeMode = function() {\n SAFE_MODE = true;\n };\n hljs.versionString = version;\n hljs.regex = {\n concat: concat,\n lookahead: lookahead,\n either: either,\n optional: optional,\n anyNumberOfTimes: anyNumberOfTimes\n };\n for(const key in MODES){\n // @ts-ignore\n if (typeof MODES[key] === \"object\") {\n // @ts-ignore\n deepFreezeEs6.exports(MODES[key]);\n }\n }\n // merge all the modes/regexes into our main object\n Object.assign(hljs, MODES);\n return hljs;\n};\n// export an \"instance\" of the highlighter\nvar highlight = HLJS({});\nmodule.exports = highlight;\nhighlight.HighlightJS = highlight;\nhighlight.default = highlight;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2xpYi9jb3JlLmpzIiwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxnQkFBZ0I7SUFBQ0MsU0FBUyxDQUFDO0FBQUM7QUFFaEMsU0FBU0MsV0FBV0MsR0FBRztJQUNuQixJQUFJQSxlQUFlQyxLQUFLO1FBQ3BCRCxJQUFJRSxLQUFLLEdBQUdGLElBQUlHLE1BQU0sR0FBR0gsSUFBSUksR0FBRyxHQUFHO1lBQy9CLE1BQU0sSUFBSUMsTUFBTTtRQUNwQjtJQUNKLE9BQU8sSUFBSUwsZUFBZU0sS0FBSztRQUMzQk4sSUFBSU8sR0FBRyxHQUFHUCxJQUFJRSxLQUFLLEdBQUdGLElBQUlHLE1BQU0sR0FBRztZQUMvQixNQUFNLElBQUlFLE1BQU07UUFDcEI7SUFDSjtJQUVBLGNBQWM7SUFDZEcsT0FBT0MsTUFBTSxDQUFDVDtJQUVkUSxPQUFPRSxtQkFBbUIsQ0FBQ1YsS0FBS1csT0FBTyxDQUFDLFNBQVVDLElBQUk7UUFDbEQsSUFBSUMsT0FBT2IsR0FBRyxDQUFDWSxLQUFLO1FBRXBCLGlDQUFpQztRQUNqQyxJQUFJLE9BQU9DLFFBQVEsWUFBWSxDQUFDTCxPQUFPTSxRQUFRLENBQUNELE9BQU87WUFDbkRkLFdBQVdjO1FBQ2Y7SUFDSjtJQUVBLE9BQU9iO0FBQ1g7QUFFQUgsY0FBY0MsT0FBTyxHQUFHQztBQUN4QkYsY0FBY0MsT0FBTyxDQUFDaUIsT0FBTyxHQUFHaEI7QUFFaEMsd0VBQXdFLEdBQ3hFLGdFQUFnRSxHQUNoRSxpQ0FBaUMsR0FFakMsTUFBTWlCO0lBQ0o7O0dBRUMsR0FDREMsWUFBWUMsSUFBSSxDQUFFO1FBQ2hCLHdDQUF3QztRQUN4QyxJQUFJQSxLQUFLQyxJQUFJLEtBQUtDLFdBQVdGLEtBQUtDLElBQUksR0FBRyxDQUFDO1FBRTFDLElBQUksQ0FBQ0EsSUFBSSxHQUFHRCxLQUFLQyxJQUFJO1FBQ3JCLElBQUksQ0FBQ0UsY0FBYyxHQUFHO0lBQ3hCO0lBRUFDLGNBQWM7UUFDWixJQUFJ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QU07UUFDbEJ3QjtRQUNBd0I7UUFDQTREO1FBQ0FOO1FBQ0EsNEJBQTRCO1FBQzVCZ0MsZ0JBQWdCRDtRQUNoQjVCO1FBQ0FFO1FBQ0FFO1FBQ0FTO1FBQ0FPO1FBQ0FFO1FBQ0ExRztRQUNBdUc7UUFDQW5DO1FBQ0E5RjtRQUNBd0k7SUFDRjtJQUVBbkksS0FBS3VJLFNBQVMsR0FBRztRQUFhbkksWUFBWTtJQUFPO0lBQ2pESixLQUFLd0ksUUFBUSxHQUFHO1FBQWFwSSxZQUFZO0lBQU07SUFDL0NKLEtBQUt5SSxhQUFhLEdBQUczTjtJQUVyQmtGLEtBQUsxSyxLQUFLLEdBQUc7UUFDWHRCLFFBQVFBO1FBQ1JELFdBQVdBO1FBQ1hRLFFBQVFBO1FBQ1JMLFVBQVVBO1FBQ1ZELGtCQUFrQkE7SUFDcEI7SUFFQSxJQUFLLE1BQU0vRCxPQUFPK0gsTUFBTztRQUN2QixhQUFhO1FBQ2IsSUFBSSxPQUFPQSxLQUFLLENBQUMvSCxJQUFJLEtBQUssVUFBVTtZQUNsQyxhQUFhO1lBQ2JsQyxjQUFjQyxPQUFPLENBQUNnSyxLQUFLLENBQUMvSCxJQUFJO1FBQ2xDO0lBQ0Y7SUFFQSxtREFBbUQ7SUFDbkR2QixPQUFPd0QsTUFBTSxDQUFDNk4sTUFBTS9IO0lBRXBCLE9BQU8rSDtBQUNUO0FBRUEsMENBQTBDO0FBQzFDLElBQUl3QixZQUFZekIsS0FBSyxDQUFDO0FBRXRCMkksT0FBT3phLE9BQU8sR0FBR3VUO0FBQ2pCQSxVQUFVbUgsV0FBVyxHQUFHbkg7QUFDeEJBLFVBQVV0UyxPQUFPLEdBQUdzUyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9saWIvY29yZS5qcz9kOTU4Il0sInNvdXJjZXNDb250ZW50IjpbInZhciBkZWVwRnJlZXplRXM2ID0ge2V4cG9ydHM6IHt9fTtcblxuZnVuY3Rpb24gZGVlcEZyZWV6ZShvYmopIHtcbiAgICBpZiAob2JqIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgIG9iai5jbGVhciA9IG9iai5kZWxldGUgPSBvYmouc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtYXAgaXMgcmVhZC1vbmx5Jyk7XG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgICAgb2JqLmFkZCA9IG9iai5jbGVhciA9IG9iai5kZWxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldCBpcyByZWFkLW9ubHknKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBGcmVlemUgc2VsZlxuICAgIE9iamVjdC5mcmVlemUob2JqKTtcblxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICB2YXIgcHJvcCA9IG9ialtuYW1lXTtcblxuICAgICAgICAvLyBGcmVlemUgcHJvcCBpZiBpdCBpcyBhbiBvYmplY3RcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09ICdvYmplY3QnICYmICFPYmplY3QuaXNGcm96ZW4ocHJvcCkpIHtcbiAgICAgICAgICAgIGRlZXBGcmVlemUocHJvcCk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBvYmo7XG59XG5cbmRlZXBGcmVlemVFczYuZXhwb3J0cyA9IGRlZXBGcmVlemU7XG5kZWVwRnJlZXplRXM2LmV4cG9ydHMuZGVmYXVsdCA9IGRlZXBGcmVlemU7XG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5DYWxsYmFja1Jlc3BvbnNlfSBDYWxsYmFja1Jlc3BvbnNlICovXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuQ29tcGlsZWRNb2RlfSBDb21waWxlZE1vZGUgKi9cbi8qKiBAaW1wbGVtZW50cyBDYWxsYmFja1Jlc3BvbnNlICovXG5cbmNsYXNzIFJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihtb2RlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmaW5lZFxuICAgIGlmIChtb2RlLmRhdGEgPT09IHVuZGVmaW5lZCkgbW9kZS5kYXRhID0ge307XG5cbiAgICB0aGlzLmRhdGEgPSBtb2RlLmRhdGE7XG4gICAgdGhpcy5pc01hdGNoSWdub3JlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWdub3JlTWF0Y2goKSB7XG4gICAgdGhpcy5pc01hdGNoSWdub3JlZCA9IHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVzY2FwZUhUTUwodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcbiAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxuICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcbiAgICAucmVwbGFjZSgvJy9nLCAnJiN4Mjc7Jyk7XG59XG5cbi8qKlxuICogcGVyZm9ybXMgYSBzaGFsbG93IG1lcmdlIG9mIG11bHRpcGxlIG9iamVjdHMgaW50byBvbmVcbiAqXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHtUfSBvcmlnaW5hbFxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLGFueT5bXX0gb2JqZWN0c1xuICogQHJldHVybnMge1R9IGEgc2luZ2xlIG5ldyBvYmplY3RcbiAqL1xuZnVuY3Rpb24gaW5oZXJpdCQxKG9yaWdpbmFsLCAuLi5vYmplY3RzKSB7XG4gIC8qKiBAdHlwZSBSZWNvcmQ8c3RyaW5nLGFueT4gKi9cbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBvcmlnaW5hbCkge1xuICAgIHJlc3VsdFtrZXldID0gb3JpZ2luYWxba2V5XTtcbiAgfVxuICBvYmplY3RzLmZvckVhY2goZnVuY3Rpb24ob2JqKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICByZXN1bHRba2V5XSA9IG9ialtrZXldO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiAvKiogQHR5cGUge1R9ICovIChyZXN1bHQpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFJlbmRlcmVyXG4gKiBAcHJvcGVydHkgeyh0ZXh0OiBzdHJpbmcpID0+IHZvaWR9IGFkZFRleHRcbiAqIEBwcm9wZXJ0eSB7KG5vZGU6IE5vZGUpID0+IHZvaWR9IG9wZW5Ob2RlXG4gKiBAcHJvcGVydHkgeyhub2RlOiBOb2RlKSA9PiB2b2lkfSBjbG9zZU5vZGVcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gc3RyaW5nfSB2YWx1ZVxuICovXG5cbi8qKiBAdHlwZWRlZiB7e3Njb3BlPzogc3RyaW5nLCBsYW5ndWFnZT86IHN0cmluZywgc3VibGFuZ3VhZ2U/OiBib29sZWFufX0gTm9kZSAqL1xuLyoqIEB0eXBlZGVmIHt7d2FsazogKHI6IFJlbmRlcmVyKSA9PiB2b2lkfX0gVHJlZSAqL1xuLyoqICovXG5cbmNvbnN0IFNQQU5fQ0xPU0UgPSAnPC9zcGFuPic7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIG5vZGUgbmVlZHMgdG8gYmUgd3JhcHBlZCBpbiA8c3Bhbj5cbiAqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgKi9cbmNvbnN0IGVtaXRzV3JhcHBpbmdUYWdzID0gKG5vZGUpID0+IHtcbiAgLy8gcmFyZWx5IHdlIGNhbiBoYXZlIGEgc3VibGFuZ3VhZ2Ugd2hlcmUgbGFuZ3VhZ2UgaXMgdW5kZWZpbmVkXG4gIC8vIFRPRE86IHRyYWNrIGRvd24gd2h5XG4gIHJldHVybiAhIW5vZGUuc2NvcGUgfHwgKG5vZGUuc3VibGFuZ3VhZ2UgJiYgbm9kZS5sYW5ndWFnZSk7XG59O1xuXG4vKipcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHt7cHJlZml4OnN0cmluZ319IG9wdGlvbnNcbiAqL1xuY29uc3Qgc2NvcGVUb0NTU0NsYXNzID0gKG5hbWUsIHsgcHJlZml4IH0pID0+IHtcbiAgaWYgKG5hbWUuaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgY29uc3QgcGllY2VzID0gbmFtZS5zcGxpdChcIi5cIik7XG4gICAgcmV0dXJuIFtcbiAgICAgIGAke3ByZWZpeH0ke3BpZWNlcy5zaGlmdCgpfWAsXG4gICAgICAuLi4ocGllY2VzLm1hcCgoeCwgaSkgPT4gYCR7eH0ke1wiX1wiLnJlcGVhdChpICsgMSl9YCkpXG4gICAgXS5qb2luKFwiIFwiKTtcbiAgfVxuICByZXR1cm4gYCR7cHJlZml4fSR7bmFtZX1gO1xufTtcblxuLyoqIEB0eXBlIHtSZW5kZXJlcn0gKi9cbmNsYXNzIEhUTUxSZW5kZXJlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEhUTUxSZW5kZXJlclxuICAgKlxuICAgKiBAcGFyYW0ge1RyZWV9IHBhcnNlVHJlZSAtIHRoZSBwYXJzZSB0cmVlIChtdXN0IHN1cHBvcnQgYHdhbGtgIEFQSSlcbiAgICogQHBhcmFtIHt7Y2xhc3NQcmVmaXg6IHN0cmluZ319IG9wdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHBhcnNlVHJlZSwgb3B0aW9ucykge1xuICAgIHRoaXMuYnVmZmVyID0gXCJcIjtcbiAgICB0aGlzLmNsYXNzUHJlZml4ID0gb3B0aW9ucy5jbGFzc1ByZWZpeDtcbiAgICBwYXJzZVRyZWUud2Fsayh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHRleHRzIHRvIHRoZSBvdXRwdXQgc3RyZWFtXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICovXG4gIGFkZFRleHQodGV4dCkge1xuICAgIHRoaXMuYnVmZmVyICs9IGVzY2FwZUhUTUwodGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5vZGUgb3BlbiB0byB0aGUgb3V0cHV0IHN0cmVhbSAoaWYgbmVlZGVkKVxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUgKi9cbiAgb3Blbk5vZGUobm9kZSkge1xuICAgIGlmICghZW1pdHNXcmFwcGluZ1RhZ3Mobm9kZSkpIHJldHVybjtcblxuICAgIGxldCBjbGFzc05hbWUgPSBcIlwiO1xuICAgIGlmIChub2RlLnN1Ymxhbmd1YWdlKSB7XG4gICAgICBjbGFzc05hbWUgPSBgbGFuZ3VhZ2UtJHtub2RlLmxhbmd1YWdlfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzTmFtZSA9IHNjb3BlVG9DU1NDbGFzcyhub2RlLnNjb3BlLCB7IHByZWZpeDogdGhpcy5jbGFzc1ByZWZpeCB9KTtcbiAgICB9XG4gICAgdGhpcy5zcGFuKGNsYXNzTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5vZGUgY2xvc2UgdG8gdGhlIG91dHB1dCBzdHJlYW0gKGlmIG5lZWRlZClcbiAgICpcbiAgICogQHBhcmFtIHtOb2RlfSBub2RlICovXG4gIGNsb3NlTm9kZShub2RlKSB7XG4gICAgaWYgKCFlbWl0c1dyYXBwaW5nVGFncyhub2RlKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5idWZmZXIgKz0gU1BBTl9DTE9TRTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCBidWZmZXJcbiAgKi9cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICB9XG5cbiAgLy8gaGVscGVyc1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBzcGFuIGVsZW1lbnRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsYXNzTmFtZSAqL1xuICBzcGFuKGNsYXNzTmFtZSkge1xuICAgIHRoaXMuYnVmZmVyICs9IGA8c3BhbiBjbGFzcz1cIiR7Y2xhc3NOYW1lfVwiPmA7XG4gIH1cbn1cblxuLyoqIEB0eXBlZGVmIHt7c2NvcGU/OiBzdHJpbmcsIGxhbmd1YWdlPzogc3RyaW5nLCBzdWJsYW5ndWFnZT86IGJvb2xlYW4sIGNoaWxkcmVuOiBOb2RlW119IHwgc3RyaW5nfSBOb2RlICovXG4vKiogQHR5cGVkZWYge3tzY29wZT86IHN0cmluZywgbGFuZ3VhZ2U/OiBzdHJpbmcsIHN1Ymxhbmd1YWdlPzogYm9vbGVhbiwgY2hpbGRyZW46IE5vZGVbXX0gfSBEYXRhTm9kZSAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkVtaXR0ZXJ9IEVtaXR0ZXIgKi9cbi8qKiAgKi9cblxuLyoqIEByZXR1cm5zIHtEYXRhTm9kZX0gKi9cbmNvbnN0IG5ld05vZGUgPSAob3B0cyA9IHt9KSA9PiB7XG4gIC8qKiBAdHlwZSBEYXRhTm9kZSAqL1xuICBjb25zdCByZXN1bHQgPSB7IGNoaWxkcmVuOiBbXSB9O1xuICBPYmplY3QuYXNzaWduKHJlc3VsdCwgb3B0cyk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5jbGFzcyBUb2tlblRyZWUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvKiogQHR5cGUgRGF0YU5vZGUgKi9cbiAgICB0aGlzLnJvb3ROb2RlID0gbmV3Tm9kZSgpO1xuICAgIHRoaXMuc3RhY2sgPSBbdGhpcy5yb290Tm9kZV07XG4gIH1cblxuICBnZXQgdG9wKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV07XG4gIH1cblxuICBnZXQgcm9vdCgpIHsgcmV0dXJuIHRoaXMucm9vdE5vZGU7IH1cblxuICAvKiogQHBhcmFtIHtOb2RlfSBub2RlICovXG4gIGFkZChub2RlKSB7XG4gICAgdGhpcy50b3AuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgfVxuXG4gIC8qKiBAcGFyYW0ge3N0cmluZ30gc2NvcGUgKi9cbiAgb3Blbk5vZGUoc2NvcGUpIHtcbiAgICAvKiogQHR5cGUgTm9kZSAqL1xuICAgIGNvbnN0IG5vZGUgPSBuZXdOb2RlKHsgc2NvcGUgfSk7XG4gICAgdGhpcy5hZGQobm9kZSk7XG4gICAgdGhpcy5zdGFjay5wdXNoKG5vZGUpO1xuICB9XG5cbiAgY2xvc2VOb2RlKCkge1xuICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YWNrLnBvcCgpO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZpbmVkXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNsb3NlQWxsTm9kZXMoKSB7XG4gICAgd2hpbGUgKHRoaXMuY2xvc2VOb2RlKCkpO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnJvb3ROb2RlLCBudWxsLCA0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZWRlZiB7IGltcG9ydChcIi4vaHRtbF9yZW5kZXJlclwiKS5SZW5kZXJlciB9IFJlbmRlcmVyXG4gICAqIEBwYXJhbSB7UmVuZGVyZXJ9IGJ1aWxkZXJcbiAgICovXG4gIHdhbGsoYnVpbGRlcikge1xuICAgIC8vIHRoaXMgZG9lcyBub3RcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5fd2FsayhidWlsZGVyLCB0aGlzLnJvb3ROb2RlKTtcbiAgICAvLyB0aGlzIHdvcmtzXG4gICAgLy8gcmV0dXJuIFRva2VuVHJlZS5fd2FsayhidWlsZGVyLCB0aGlzLnJvb3ROb2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlbmRlcmVyfSBidWlsZGVyXG4gICAqIEBwYXJhbSB7Tm9kZX0gbm9kZVxuICAgKi9cbiAgc3RhdGljIF93YWxrKGJ1aWxkZXIsIG5vZGUpIHtcbiAgICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGJ1aWxkZXIuYWRkVGV4dChub2RlKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGJ1aWxkZXIub3Blbk5vZGUobm9kZSk7XG4gICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB0aGlzLl93YWxrKGJ1aWxkZXIsIGNoaWxkKSk7XG4gICAgICBidWlsZGVyLmNsb3NlTm9kZShub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtOb2RlfSBub2RlXG4gICAqL1xuICBzdGF0aWMgX2NvbGxhcHNlKG5vZGUpIHtcbiAgICBpZiAodHlwZW9mIG5vZGUgPT09IFwic3RyaW5nXCIpIHJldHVybjtcbiAgICBpZiAoIW5vZGUuY2hpbGRyZW4pIHJldHVybjtcblxuICAgIGlmIChub2RlLmNoaWxkcmVuLmV2ZXJ5KGVsID0+IHR5cGVvZiBlbCA9PT0gXCJzdHJpbmdcIikpIHtcbiAgICAgIC8vIG5vZGUudGV4dCA9IG5vZGUuY2hpbGRyZW4uam9pbihcIlwiKTtcbiAgICAgIC8vIGRlbGV0ZSBub2RlLmNoaWxkcmVuO1xuICAgICAgbm9kZS5jaGlsZHJlbiA9IFtub2RlLmNoaWxkcmVuLmpvaW4oXCJcIildO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgIFRva2VuVHJlZS5fY29sbGFwc2UoY2hpbGQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICBDdXJyZW50bHkgdGhpcyBpcyBhbGwgcHJpdmF0ZSBBUEksIGJ1dCB0aGlzIGlzIHRoZSBtaW5pbWFsIEFQSSBuZWNlc3NhcnlcbiAgdGhhdCBhbiBFbWl0dGVyIG11c3QgaW1wbGVtZW50IHRvIGZ1bGx5IHN1cHBvcnQgdGhlIHBhcnNlci5cblxuICBNaW5pbWFsIGludGVyZmFjZTpcblxuICAtIGFkZEtleXdvcmQodGV4dCwgc2NvcGUpXG4gIC0gYWRkVGV4dCh0ZXh0KVxuICAtIGFkZFN1Ymxhbmd1YWdlKGVtaXR0ZXIsIHN1Ykxhbmd1YWdlTmFtZSlcbiAgLSBmaW5hbGl6ZSgpXG4gIC0gb3Blbk5vZGUoc2NvcGUpXG4gIC0gY2xvc2VOb2RlKClcbiAgLSBjbG9zZUFsbE5vZGVzKClcbiAgLSB0b0hUTUwoKVxuXG4qL1xuXG4vKipcbiAqIEBpbXBsZW1lbnRzIHtFbWl0dGVyfVxuICovXG5jbGFzcyBUb2tlblRyZWVFbWl0dGVyIGV4dGVuZHMgVG9rZW5UcmVlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Kn0gb3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NvcGVcbiAgICovXG4gIGFkZEtleXdvcmQodGV4dCwgc2NvcGUpIHtcbiAgICBpZiAodGV4dCA9PT0gXCJcIikgeyByZXR1cm47IH1cblxuICAgIHRoaXMub3Blbk5vZGUoc2NvcGUpO1xuICAgIHRoaXMuYWRkVGV4dCh0ZXh0KTtcbiAgICB0aGlzLmNsb3NlTm9kZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gICAqL1xuICBhZGRUZXh0KHRleHQpIHtcbiAgICBpZiAodGV4dCA9PT0gXCJcIikgeyByZXR1cm47IH1cblxuICAgIHRoaXMuYWRkKHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RW1pdHRlciAmIHtyb290OiBEYXRhTm9kZX19IGVtaXR0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICovXG4gIGFkZFN1Ymxhbmd1YWdlKGVtaXR0ZXIsIG5hbWUpIHtcbiAgICAvKiogQHR5cGUgRGF0YU5vZGUgKi9cbiAgICBjb25zdCBub2RlID0gZW1pdHRlci5yb290O1xuICAgIG5vZGUuc3VibGFuZ3VhZ2UgPSB0cnVlO1xuICAgIG5vZGUubGFuZ3VhZ2UgPSBuYW1lO1xuICAgIHRoaXMuYWRkKG5vZGUpO1xuICB9XG5cbiAgdG9IVE1MKCkge1xuICAgIGNvbnN0IHJlbmRlcmVyID0gbmV3IEhUTUxSZW5kZXJlcih0aGlzLCB0aGlzLm9wdGlvbnMpO1xuICAgIHJldHVybiByZW5kZXJlci52YWx1ZSgpO1xuICB9XG5cbiAgZmluYWxpemUoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtSZWdFeHB9XG4gKiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7UmVnRXhwIHwgc3RyaW5nIH0gcmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHNvdXJjZShyZSkge1xuICBpZiAoIXJlKSByZXR1cm4gbnVsbDtcbiAgaWYgKHR5cGVvZiByZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHJlO1xuXG4gIHJldHVybiByZS5zb3VyY2U7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmcgfSByZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gbG9va2FoZWFkKHJlKSB7XG4gIHJldHVybiBjb25jYXQoJyg/PScsIHJlLCAnKScpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVnRXhwIHwgc3RyaW5nIH0gcmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGFueU51bWJlck9mVGltZXMocmUpIHtcbiAgcmV0dXJuIGNvbmNhdCgnKD86JywgcmUsICcpKicpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVnRXhwIHwgc3RyaW5nIH0gcmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG9wdGlvbmFsKHJlKSB7XG4gIHJldHVybiBjb25jYXQoJyg/OicsIHJlLCAnKT8nKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gey4uLihSZWdFeHAgfCBzdHJpbmcpIH0gYXJnc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gY29uY2F0KC4uLmFyZ3MpIHtcbiAgY29uc3Qgam9pbmVkID0gYXJncy5tYXAoKHgpID0+IHNvdXJjZSh4KSkuam9pbihcIlwiKTtcbiAgcmV0dXJuIGpvaW5lZDtcbn1cblxuLyoqXG4gKiBAcGFyYW0geyBBcnJheTxzdHJpbmcgfCBSZWdFeHAgfCBPYmplY3Q+IH0gYXJnc1xuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gc3RyaXBPcHRpb25zRnJvbUFyZ3MoYXJncykge1xuICBjb25zdCBvcHRzID0gYXJnc1thcmdzLmxlbmd0aCAtIDFdO1xuXG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ29iamVjdCcgJiYgb3B0cy5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0KSB7XG4gICAgYXJncy5zcGxpY2UoYXJncy5sZW5ndGggLSAxLCAxKTtcbiAgICByZXR1cm4gb3B0cztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuLyoqIEB0eXBlZGVmIHsge2NhcHR1cmU/OiBib29sZWFufSB9IFJlZ2V4RWl0aGVyT3B0aW9ucyAqL1xuXG4vKipcbiAqIEFueSBvZiB0aGUgcGFzc2VkIGV4cHJlc3NzaW9ucyBtYXkgbWF0Y2hcbiAqXG4gKiBDcmVhdGVzIGEgaHVnZSB0aGlzIHwgdGhpcyB8IHRoYXQgfCB0aGF0IG1hdGNoXG4gKiBAcGFyYW0geyhSZWdFeHAgfCBzdHJpbmcpW10gfCBbLi4uKFJlZ0V4cCB8IHN0cmluZylbXSwgUmVnZXhFaXRoZXJPcHRpb25zXX0gYXJnc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZWl0aGVyKC4uLmFyZ3MpIHtcbiAgLyoqIEB0eXBlIHsgb2JqZWN0ICYge2NhcHR1cmU/OiBib29sZWFufSB9ICAqL1xuICBjb25zdCBvcHRzID0gc3RyaXBPcHRpb25zRnJvbUFyZ3MoYXJncyk7XG4gIGNvbnN0IGpvaW5lZCA9ICcoJ1xuICAgICsgKG9wdHMuY2FwdHVyZSA/IFwiXCIgOiBcIj86XCIpXG4gICAgKyBhcmdzLm1hcCgoeCkgPT4gc291cmNlKHgpKS5qb2luKFwifFwiKSArIFwiKVwiO1xuICByZXR1cm4gam9pbmVkO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVnRXhwIHwgc3RyaW5nfSByZVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gY291bnRNYXRjaEdyb3VwcyhyZSkge1xuICByZXR1cm4gKG5ldyBSZWdFeHAocmUudG9TdHJpbmcoKSArICd8JykpLmV4ZWMoJycpLmxlbmd0aCAtIDE7XG59XG5cbi8qKlxuICogRG9lcyBsZXhlbWUgc3RhcnQgd2l0aCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaCBhdCB0aGUgYmVnaW5uaW5nXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcmVcbiAqIEBwYXJhbSB7c3RyaW5nfSBsZXhlbWVcbiAqL1xuZnVuY3Rpb24gc3RhcnRzV2l0aChyZSwgbGV4ZW1lKSB7XG4gIGNvbnN0IG1hdGNoID0gcmUgJiYgcmUuZXhlYyhsZXhlbWUpO1xuICByZXR1cm4gbWF0Y2ggJiYgbWF0Y2guaW5kZXggPT09IDA7XG59XG5cbi8vIEJBQ0tSRUZfUkUgbWF0Y2hlcyBhbiBvcGVuIHBhcmVudGhlc2lzIG9yIGJhY2tyZWZlcmVuY2UuIFRvIGF2b2lkXG4vLyBhbiBpbmNvcnJlY3QgcGFyc2UsIGl0IGFkZGl0aW9uYWxseSBtYXRjaGVzIHRoZSBmb2xsb3dpbmc6XG4vLyAtIFsuLi5dIGVsZW1lbnRzLCB3aGVyZSB0aGUgbWVhbmluZyBvZiBwYXJlbnRoZXNlcyBhbmQgZXNjYXBlcyBjaGFuZ2Vcbi8vIC0gb3RoZXIgZXNjYXBlIHNlcXVlbmNlcywgc28gd2UgZG8gbm90IG1pc3BhcnNlIGVzY2FwZSBzZXF1ZW5jZXMgYXNcbi8vICAgaW50ZXJlc3RpbmcgZWxlbWVudHNcbi8vIC0gbm9uLW1hdGNoaW5nIG9yIGxvb2thaGVhZCBwYXJlbnRoZXNlcywgd2hpY2ggZG8gbm90IGNhcHR1cmUuIFRoZXNlXG4vLyAgIGZvbGxvdyB0aGUgJygnIHdpdGggYSAnPycuXG5jb25zdCBCQUNLUkVGX1JFID0gL1xcWyg/OlteXFxcXFxcXV18XFxcXC4pKlxcXXxcXChcXD8/fFxcXFwoWzEtOV1bMC05XSopfFxcXFwuLztcblxuLy8gKipJTlRFUk5BTCoqIE5vdCBpbnRlbmRlZCBmb3Igb3V0c2lkZSB1c2FnZVxuLy8gam9pbiBsb2dpY2FsbHkgY29tcHV0ZXMgcmVnZXhwcy5qb2luKHNlcGFyYXRvciksIGJ1dCBmaXhlcyB0aGVcbi8vIGJhY2tyZWZlcmVuY2VzIHNvIHRoZXkgY29udGludWUgdG8gbWF0Y2guXG4vLyBpdCBhbHNvIHBsYWNlcyBlYWNoIGluZGl2aWR1YWwgcmVndWxhciBleHByZXNzaW9uIGludG8gaXQncyBvd25cbi8vIG1hdGNoIGdyb3VwLCBrZWVwaW5nIHRyYWNrIG9mIHRoZSBzZXF1ZW5jaW5nIG9mIHRob3NlIG1hdGNoIGdyb3Vwc1xuLy8gaXMgY3VycmVudGx5IGFuIGV4ZXJjaXNlIGZvciB0aGUgY2FsbGVyLiA6LSlcbi8qKlxuICogQHBhcmFtIHsoc3RyaW5nIHwgUmVnRXhwKVtdfSByZWdleHBzXG4gKiBAcGFyYW0ge3tqb2luV2l0aDogc3RyaW5nfX0gb3B0c1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gX3Jld3JpdGVCYWNrcmVmZXJlbmNlcyhyZWdleHBzLCB7IGpvaW5XaXRoIH0pIHtcbiAgbGV0IG51bUNhcHR1cmVzID0gMDtcblxuICByZXR1cm4gcmVnZXhwcy5tYXAoKHJlZ2V4KSA9PiB7XG4gICAgbnVtQ2FwdHVyZXMgKz0gMTtcbiAgICBjb25zdCBvZmZzZXQgPSBudW1DYXB0dXJlcztcbiAgICBsZXQgcmUgPSBzb3VyY2UocmVnZXgpO1xuICAgIGxldCBvdXQgPSAnJztcblxuICAgIHdoaWxlIChyZS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IEJBQ0tSRUZfUkUuZXhlYyhyZSk7XG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIG91dCArPSByZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBvdXQgKz0gcmUuc3Vic3RyaW5nKDAsIG1hdGNoLmluZGV4KTtcbiAgICAgIHJlID0gcmUuc3Vic3RyaW5nKG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgIGlmIChtYXRjaFswXVswXSA9PT0gJ1xcXFwnICYmIG1hdGNoWzFdKSB7XG4gICAgICAgIC8vIEFkanVzdCB0aGUgYmFja3JlZmVyZW5jZS5cbiAgICAgICAgb3V0ICs9ICdcXFxcJyArIFN0cmluZyhOdW1iZXIobWF0Y2hbMV0pICsgb2Zmc2V0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dCArPSBtYXRjaFswXTtcbiAgICAgICAgaWYgKG1hdGNoWzBdID09PSAnKCcpIHtcbiAgICAgICAgICBudW1DYXB0dXJlcysrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH0pLm1hcChyZSA9PiBgKCR7cmV9KWApLmpvaW4oam9pbldpdGgpO1xufVxuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuTW9kZX0gTW9kZSAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLk1vZGVDYWxsYmFja30gTW9kZUNhbGxiYWNrICovXG5cbi8vIENvbW1vbiByZWdleHBzXG5jb25zdCBNQVRDSF9OT1RISU5HX1JFID0gL1xcYlxcQi87XG5jb25zdCBJREVOVF9SRSA9ICdbYS16QS1aXVxcXFx3Kic7XG5jb25zdCBVTkRFUlNDT1JFX0lERU5UX1JFID0gJ1thLXpBLVpfXVxcXFx3Kic7XG5jb25zdCBOVU1CRVJfUkUgPSAnXFxcXGJcXFxcZCsoXFxcXC5cXFxcZCspPyc7XG5jb25zdCBDX05VTUJFUl9SRSA9ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XSt8KFxcXFxiXFxcXGQrKFxcXFwuXFxcXGQqKT98XFxcXC5cXFxcZCspKFtlRV1bLStdP1xcXFxkKyk/KSc7IC8vIDB4Li4uLCAwLi4uLCBkZWNpbWFsLCBmbG9hdFxuY29uc3QgQklOQVJZX05VTUJFUl9SRSA9ICdcXFxcYigwYlswMV0rKSc7IC8vIDBiLi4uXG5jb25zdCBSRV9TVEFSVEVSU19SRSA9ICchfCE9fCE9PXwlfCU9fCZ8JiZ8Jj18XFxcXCp8XFxcXCo9fFxcXFwrfFxcXFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fD4+fD58XFxcXD98XFxcXFt8XFxcXHt8XFxcXCh8XFxcXF58XFxcXF49fFxcXFx8fFxcXFx8PXxcXFxcfFxcXFx8fH4nO1xuXG4vKipcbiogQHBhcmFtIHsgUGFydGlhbDxNb2RlPiAmIHtiaW5hcnk/OiBzdHJpbmcgfCBSZWdFeHB9IH0gb3B0c1xuKi9cbmNvbnN0IFNIRUJBTkcgPSAob3B0cyA9IHt9KSA9PiB7XG4gIGNvbnN0IGJlZ2luU2hlYmFuZyA9IC9eIyFbIF0qXFwvLztcbiAgaWYgKG9wdHMuYmluYXJ5KSB7XG4gICAgb3B0cy5iZWdpbiA9IGNvbmNhdChcbiAgICAgIGJlZ2luU2hlYmFuZyxcbiAgICAgIC8uKlxcYi8sXG4gICAgICBvcHRzLmJpbmFyeSxcbiAgICAgIC9cXGIuKi8pO1xuICB9XG4gIHJldHVybiBpbmhlcml0JDEoe1xuICAgIHNjb3BlOiAnbWV0YScsXG4gICAgYmVnaW46IGJlZ2luU2hlYmFuZyxcbiAgICBlbmQ6IC8kLyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgLyoqIEB0eXBlIHtNb2RlQ2FsbGJhY2t9ICovXG4gICAgXCJvbjpiZWdpblwiOiAobSwgcmVzcCkgPT4ge1xuICAgICAgaWYgKG0uaW5kZXggIT09IDApIHJlc3AuaWdub3JlTWF0Y2goKTtcbiAgICB9XG4gIH0sIG9wdHMpO1xufTtcblxuLy8gQ29tbW9uIG1vZGVzXG5jb25zdCBCQUNLU0xBU0hfRVNDQVBFID0ge1xuICBiZWdpbjogJ1xcXFxcXFxcW1xcXFxzXFxcXFNdJywgcmVsZXZhbmNlOiAwXG59O1xuY29uc3QgQVBPU19TVFJJTkdfTU9ERSA9IHtcbiAgc2NvcGU6ICdzdHJpbmcnLFxuICBiZWdpbjogJ1xcJycsXG4gIGVuZDogJ1xcJycsXG4gIGlsbGVnYWw6ICdcXFxcbicsXG4gIGNvbnRhaW5zOiBbQkFDS1NMQVNIX0VTQ0FQRV1cbn07XG5jb25zdCBRVU9URV9TVFJJTkdfTU9ERSA9IHtcbiAgc2NvcGU6ICdzdHJpbmcnLFxuICBiZWdpbjogJ1wiJyxcbiAgZW5kOiAnXCInLFxuICBpbGxlZ2FsOiAnXFxcXG4nLFxuICBjb250YWluczogW0JBQ0tTTEFTSF9FU0NBUEVdXG59O1xuY29uc3QgUEhSQVNBTF9XT1JEU19NT0RFID0ge1xuICBiZWdpbjogL1xcYihhfGFufHRoZXxhcmV8SSdtfGlzbid0fGRvbid0fGRvZXNuJ3R8d29uJ3R8YnV0fGp1c3R8c2hvdWxkfHByZXR0eXxzaW1wbHl8ZW5vdWdofGdvbm5hfGdvaW5nfHd0Znxzb3xzdWNofHdpbGx8eW91fHlvdXJ8dGhleXxsaWtlfG1vcmUpXFxiL1xufTtcbi8qKlxuICogQ3JlYXRlcyBhIGNvbW1lbnQgbW9kZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nIHwgUmVnRXhwfSBiZWdpblxuICogQHBhcmFtIHtzdHJpbmcgfCBSZWdFeHB9IGVuZFxuICogQHBhcmFtIHtNb2RlIHwge319IFttb2RlT3B0aW9uc11cbiAqIEByZXR1cm5zIHtQYXJ0aWFsPE1vZGU+fVxuICovXG5jb25zdCBDT01NRU5UID0gZnVuY3Rpb24oYmVnaW4sIGVuZCwgbW9kZU9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBtb2RlID0gaW5oZXJpdCQxKFxuICAgIHtcbiAgICAgIHNjb3BlOiAnY29tbWVudCcsXG4gICAgICBiZWdpbixcbiAgICAgIGVuZCxcbiAgICAgIGNvbnRhaW5zOiBbXVxuICAgIH0sXG4gICAgbW9kZU9wdGlvbnNcbiAgKTtcbiAgbW9kZS5jb250YWlucy5wdXNoKHtcbiAgICBzY29wZTogJ2RvY3RhZycsXG4gICAgLy8gaGFjayB0byBhdm9pZCB0aGUgc3BhY2UgZnJvbSBiZWluZyBpbmNsdWRlZC4gdGhlIHNwYWNlIGlzIG5lY2Vzc2FyeSB0b1xuICAgIC8vIG1hdGNoIGhlcmUgdG8gcHJldmVudCB0aGUgcGxhaW4gdGV4dCBydWxlIGJlbG93IGZyb20gZ29iYmxpbmcgdXAgZG9jdGFnc1xuICAgIGJlZ2luOiAnWyBdKig/PShUT0RPfEZJWE1FfE5PVEV8QlVHfE9QVElNSVpFfEhBQ0t8WFhYKTopJyxcbiAgICBlbmQ6IC8oVE9ET3xGSVhNRXxOT1RFfEJVR3xPUFRJTUlaRXxIQUNLfFhYWCk6LyxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH0pO1xuICBjb25zdCBFTkdMSVNIX1dPUkQgPSBlaXRoZXIoXG4gICAgLy8gbGlzdCBvZiBjb21tb24gMSBhbmQgMiBsZXR0ZXIgd29yZHMgaW4gRW5nbGlzaFxuICAgIFwiSVwiLFxuICAgIFwiYVwiLFxuICAgIFwiaXNcIixcbiAgICBcInNvXCIsXG4gICAgXCJ1c1wiLFxuICAgIFwidG9cIixcbiAgICBcImF0XCIsXG4gICAgXCJpZlwiLFxuICAgIFwiaW5cIixcbiAgICBcIml0XCIsXG4gICAgXCJvblwiLFxuICAgIC8vIG5vdGU6IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCBvZiBjb250cmFjdGlvbnMsIGp1c3QgcG9wdWxhciBvbmVzXG4gICAgL1tBLVphLXpdK1snXShkfHZlfHJlfGxsfHR8c3xuKS8sIC8vIGNvbnRyYWN0aW9ucyAtIGNhbid0IHdlJ2QgdGhleSdyZSBsZXQncywgZXRjXG4gICAgL1tBLVphLXpdK1stXVthLXpdKy8sIC8vIGBuby13YXlgLCBldGMuXG4gICAgL1tBLVphLXpdW2Etel17Mix9LyAvLyBhbGxvdyBjYXBpdGFsaXplZCB3b3JkcyBhdCBiZWdpbm5pbmcgb2Ygc2VudGVuY2VzXG4gICk7XG4gIC8vIGxvb2tpbmcgbGlrZSBwbGFpbiB0ZXh0LCBtb3JlIGxpa2VseSB0byBiZSBhIGNvbW1lbnRcbiAgbW9kZS5jb250YWlucy5wdXNoKFxuICAgIHtcbiAgICAgIC8vIFRPRE86IGhvdyB0byBpbmNsdWRlIFwiLCAoLCApIHdpdGhvdXQgYnJlYWtpbmcgZ3JhbW1hcnMgdGhhdCB1c2UgdGhlc2UgZm9yXG4gICAgICAvLyBjb21tZW50IGRlbGltaXRlcnM/XG4gICAgICAvLyBiZWdpbjogL1sgXSsoWygpXCJdPyhbQS1aYS16Jy1dezMsfXxpc3xhfEl8c298dXN8W3RUXVtvT118YXR8aWZ8aW58aXR8b24pWy5dP1soKVwiOl0/KFsuXVsgXXxbIF18XFwpKSl7M30vXG4gICAgICAvLyAtLS1cblxuICAgICAgLy8gdGhpcyB0cmllcyB0byBmaW5kIHNlcXVlbmNlcyBvZiAzIGVuZ2xpc2ggd29yZHMgaW4gYSByb3cgKHdpdGhvdXQgYW55XG4gICAgICAvLyBcInByb2dyYW1taW5nXCIgdHlwZSBzeW50YXgpIHRoaXMgZ2l2ZXMgdXMgYSBzdHJvbmcgc2lnbmFsIHRoYXQgd2UndmVcbiAgICAgIC8vIFRSVUxZIGZvdW5kIGEgY29tbWVudCAtIHZzIHBlcmhhcHMgc2Nhbm5pbmcgd2l0aCB0aGUgd3JvbmcgbGFuZ3VhZ2UuXG4gICAgICAvLyBJdCdzIHBvc3NpYmxlIHRvIGZpbmQgc29tZXRoaW5nIHRoYXQgTE9PS1MgbGlrZSB0aGUgc3RhcnQgb2YgdGhlXG4gICAgICAvLyBjb21tZW50IC0gYnV0IHRoZW4gaWYgdGhlcmUgaXMgbm8gcmVhZGFibGUgdGV4dCAtIGdvb2QgY2hhbmNlIGl0IGlzIGFcbiAgICAgIC8vIGZhbHNlIG1hdGNoIGFuZCBub3QgYSBjb21tZW50LlxuICAgICAgLy9cbiAgICAgIC8vIGZvciBhIHZpc3VhbCBleGFtcGxlIHBsZWFzZSBzZWU6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yODI3XG5cbiAgICAgIGJlZ2luOiBjb25jYXQoXG4gICAgICAgIC9bIF0rLywgLy8gbmVjZXNzYXJ5IHRvIHByZXZlbnQgdXMgZ29iYmxpbmcgdXAgZG9jdGFncyBsaWtlIC8qIEBhdXRob3IgQm9iIE1jZ2lsbCAqL1xuICAgICAgICAnKCcsXG4gICAgICAgIEVOR0xJU0hfV09SRCxcbiAgICAgICAgL1suXT9bOl0/KFsuXVsgXXxbIF0pLyxcbiAgICAgICAgJyl7M30nKSAvLyBsb29rIGZvciAzIHdvcmRzIGluIGEgcm93XG4gICAgfVxuICApO1xuICByZXR1cm4gbW9kZTtcbn07XG5jb25zdCBDX0xJTkVfQ09NTUVOVF9NT0RFID0gQ09NTUVOVCgnLy8nLCAnJCcpO1xuY29uc3QgQ19CTE9DS19DT01NRU5UX01PREUgPSBDT01NRU5UKCcvXFxcXConLCAnXFxcXCovJyk7XG5jb25zdCBIQVNIX0NPTU1FTlRfTU9ERSA9IENPTU1FTlQoJyMnLCAnJCcpO1xuY29uc3QgTlVNQkVSX01PREUgPSB7XG4gIHNjb3BlOiAnbnVtYmVyJyxcbiAgYmVnaW46IE5VTUJFUl9SRSxcbiAgcmVsZXZhbmNlOiAwXG59O1xuY29uc3QgQ19OVU1CRVJfTU9ERSA9IHtcbiAgc2NvcGU6ICdudW1iZXInLFxuICBiZWdpbjogQ19OVU1CRVJfUkUsXG4gIHJlbGV2YW5jZTogMFxufTtcbmNvbnN0IEJJTkFSWV9OVU1CRVJfTU9ERSA9IHtcbiAgc2NvcGU6ICdudW1iZXInLFxuICBiZWdpbjogQklOQVJZX05VTUJFUl9SRSxcbiAgcmVsZXZhbmNlOiAwXG59O1xuY29uc3QgUkVHRVhQX01PREUgPSB7XG4gIC8vIHRoaXMgb3V0ZXIgcnVsZSBtYWtlcyBzdXJlIHdlIGFjdHVhbGx5IGhhdmUgYSBXSE9MRSByZWdleCBhbmQgbm90IHNpbXBseVxuICAvLyBhbiBleHByZXNzaW9uIHN1Y2ggYXM6XG4gIC8vXG4gIC8vICAgICAzIC8gc29tZXRoaW5nXG4gIC8vXG4gIC8vICh3aGljaCB3aWxsIHRoZW4gYmxvdyB1cCB3aGVuIHJlZ2V4J3MgYGlsbGVnYWxgIHNlZXMgdGhlIG5ld2xpbmUpXG4gIGJlZ2luOiAvKD89XFwvW14vXFxuXSpcXC8pLyxcbiAgY29udGFpbnM6IFt7XG4gICAgc2NvcGU6ICdyZWdleHAnLFxuICAgIGJlZ2luOiAvXFwvLyxcbiAgICBlbmQ6IC9cXC9bZ2ltdXldKi8sXG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxbLyxcbiAgICAgICAgZW5kOiAvXFxdLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW0JBQ0tTTEFTSF9FU0NBUEVdXG4gICAgICB9XG4gICAgXVxuICB9XVxufTtcbmNvbnN0IFRJVExFX01PREUgPSB7XG4gIHNjb3BlOiAndGl0bGUnLFxuICBiZWdpbjogSURFTlRfUkUsXG4gIHJlbGV2YW5jZTogMFxufTtcbmNvbnN0IFVOREVSU0NPUkVfVElUTEVfTU9ERSA9IHtcbiAgc2NvcGU6ICd0aXRsZScsXG4gIGJlZ2luOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICByZWxldmFuY2U6IDBcbn07XG5jb25zdCBNRVRIT0RfR1VBUkQgPSB7XG4gIC8vIGV4Y2x1ZGVzIG1ldGhvZCBuYW1lcyBmcm9tIGtleXdvcmQgcHJvY2Vzc2luZ1xuICBiZWdpbjogJ1xcXFwuXFxcXHMqJyArIFVOREVSU0NPUkVfSURFTlRfUkUsXG4gIHJlbGV2YW5jZTogMFxufTtcblxuLyoqXG4gKiBBZGRzIGVuZCBzYW1lIGFzIGJlZ2luIG1lY2hhbmljcyB0byBhIG1vZGVcbiAqXG4gKiBZb3VyIG1vZGUgbXVzdCBpbmNsdWRlIGF0IGxlYXN0IGEgc2luZ2xlICgpIG1hdGNoIGdyb3VwIGFzIHRoYXQgZmlyc3QgbWF0Y2hcbiAqIGdyb3VwIGlzIHdoYXQgaXMgdXNlZCBmb3IgY29tcGFyaXNvblxuICogQHBhcmFtIHtQYXJ0aWFsPE1vZGU+fSBtb2RlXG4gKi9cbmNvbnN0IEVORF9TQU1FX0FTX0JFR0lOID0gZnVuY3Rpb24obW9kZSkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihtb2RlLFxuICAgIHtcbiAgICAgIC8qKiBAdHlwZSB7TW9kZUNhbGxiYWNrfSAqL1xuICAgICAgJ29uOmJlZ2luJzogKG0sIHJlc3ApID0+IHsgcmVzcC5kYXRhLl9iZWdpbk1hdGNoID0gbVsxXTsgfSxcbiAgICAgIC8qKiBAdHlwZSB7TW9kZUNhbGxiYWNrfSAqL1xuICAgICAgJ29uOmVuZCc6IChtLCByZXNwKSA9PiB7IGlmIChyZXNwLmRhdGEuX2JlZ2luTWF0Y2ggIT09IG1bMV0pIHJlc3AuaWdub3JlTWF0Y2goKTsgfVxuICAgIH0pO1xufTtcblxudmFyIE1PREVTID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBNQVRDSF9OT1RISU5HX1JFOiBNQVRDSF9OT1RISU5HX1JFLFxuICAgIElERU5UX1JFOiBJREVOVF9SRSxcbiAgICBVTkRFUlNDT1JFX0lERU5UX1JFOiBVTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgIE5VTUJFUl9SRTogTlVNQkVSX1JFLFxuICAgIENfTlVNQkVSX1JFOiBDX05VTUJFUl9SRSxcbiAgICBCSU5BUllfTlVNQkVSX1JFOiBCSU5BUllfTlVNQkVSX1JFLFxuICAgIFJFX1NUQVJURVJTX1JFOiBSRV9TVEFSVEVSU19SRSxcbiAgICBTSEVCQU5HOiBTSEVCQU5HLFxuICAgIEJBQ0tTTEFTSF9FU0NBUEU6IEJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgQVBPU19TVFJJTkdfTU9ERTogQVBPU19TVFJJTkdfTU9ERSxcbiAgICBRVU9URV9TVFJJTkdfTU9ERTogUVVPVEVfU1RSSU5HX01PREUsXG4gICAgUEhSQVNBTF9XT1JEU19NT0RFOiBQSFJBU0FMX1dPUkRTX01PREUsXG4gICAgQ09NTUVOVDogQ09NTUVOVCxcbiAgICBDX0xJTkVfQ09NTUVOVF9NT0RFOiBDX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgIENfQkxPQ0tfQ09NTUVOVF9NT0RFOiBDX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBIQVNIX0NPTU1FTlRfTU9ERTogSEFTSF9DT01NRU5UX01PREUsXG4gICAgTlVNQkVSX01PREU6IE5VTUJFUl9NT0RFLFxuICAgIENfTlVNQkVSX01PREU6IENfTlVNQkVSX01PREUsXG4gICAgQklOQVJZX05VTUJFUl9NT0RFOiBCSU5BUllfTlVNQkVSX01PREUsXG4gICAgUkVHRVhQX01PREU6IFJFR0VYUF9NT0RFLFxuICAgIFRJVExFX01PREU6IFRJVExFX01PREUsXG4gICAgVU5ERVJTQ09SRV9USVRMRV9NT0RFOiBVTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgTUVUSE9EX0dVQVJEOiBNRVRIT0RfR1VBUkQsXG4gICAgRU5EX1NBTUVfQVNfQkVHSU46IEVORF9TQU1FX0FTX0JFR0lOXG59KTtcblxuLyoqXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5DYWxsYmFja1Jlc3BvbnNlfSBDYWxsYmFja1Jlc3BvbnNlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Db21waWxlckV4dH0gQ29tcGlsZXJFeHRcbiovXG5cbi8vIEdyYW1tYXIgZXh0ZW5zaW9ucyAvIHBsdWdpbnNcbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMjgzM1xuXG4vLyBHcmFtbWFyIGV4dGVuc2lvbnMgYWxsb3cgXCJzeW50YWN0aWMgc3VnYXJcIiB0byBiZSBhZGRlZCB0byB0aGUgZ3JhbW1hciBtb2Rlc1xuLy8gd2l0aG91dCByZXF1aXJpbmcgYW55IHVuZGVybHlpbmcgY2hhbmdlcyB0byB0aGUgY29tcGlsZXIgaW50ZXJuYWxzLlxuXG4vLyBgY29tcGlsZU1hdGNoYCBiZWluZyB0aGUgcGVyZmVjdCBzbWFsbCBleGFtcGxlIG9mIG5vdyBhbGxvd2luZyBhIGdyYW1tYXJcbi8vIGF1dGhvciB0byB3cml0ZSBgbWF0Y2hgIHdoZW4gdGhleSBkZXNpcmUgdG8gbWF0Y2ggYSBzaW5nbGUgZXhwcmVzc2lvbiByYXRoZXJcbi8vIHRoYW4gYmVpbmcgZm9yY2VkIHRvIHVzZSBgYmVnaW5gLiAgVGhlIGV4dGVuc2lvbiB0aGVuIGp1c3QgbW92ZXMgYG1hdGNoYCBpbnRvXG4vLyBgYmVnaW5gIHdoZW4gaXQgcnVucy4gIEllLCBubyBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQsIGJ1dCB3ZSd2ZSBqdXN0IG1hZGVcbi8vIHRoZSBleHBlcmllbmNlIG9mIHdyaXRpbmcgKGFuZCByZWFkaW5nIGdyYW1tYXJzKSBhIGxpdHRsZSBiaXQgbmljZXIuXG5cbi8vIC0tLS0tLVxuXG4vLyBUT0RPOiBXZSBuZWVkIG5lZ2F0aXZlIGxvb2stYmVoaW5kIHN1cHBvcnQgdG8gZG8gdGhpcyBwcm9wZXJseVxuLyoqXG4gKiBTa2lwIGEgbWF0Y2ggaWYgaXQgaGFzIGEgcHJlY2VkaW5nIGRvdFxuICpcbiAqIFRoaXMgaXMgdXNlZCBmb3IgYGJlZ2luS2V5d29yZHNgIHRvIHByZXZlbnQgbWF0Y2hpbmcgZXhwcmVzc2lvbnMgc3VjaCBhc1xuICogYGJvYi5rZXl3b3JkLmRvKClgLiBUaGUgbW9kZSBjb21waWxlciBhdXRvbWF0aWNhbGx5IHdpcmVzIHRoaXMgdXAgYXMgYVxuICogc3BlY2lhbCBfaW50ZXJuYWxfICdvbjpiZWdpbicgY2FsbGJhY2sgZm9yIG1vZGVzIHdpdGggYGJlZ2luS2V5d29yZHNgXG4gKiBAcGFyYW0ge1JlZ0V4cE1hdGNoQXJyYXl9IG1hdGNoXG4gKiBAcGFyYW0ge0NhbGxiYWNrUmVzcG9uc2V9IHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIHNraXBJZkhhc1ByZWNlZGluZ0RvdChtYXRjaCwgcmVzcG9uc2UpIHtcbiAgY29uc3QgYmVmb3JlID0gbWF0Y2guaW5wdXRbbWF0Y2guaW5kZXggLSAxXTtcbiAgaWYgKGJlZm9yZSA9PT0gXCIuXCIpIHtcbiAgICByZXNwb25zZS5pZ25vcmVNYXRjaCgpO1xuICB9XG59XG5cbi8qKlxuICpcbiAqIEB0eXBlIHtDb21waWxlckV4dH1cbiAqL1xuZnVuY3Rpb24gc2NvcGVDbGFzc05hbWUobW9kZSwgX3BhcmVudCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZpbmVkXG4gIGlmIChtb2RlLmNsYXNzTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbW9kZS5zY29wZSA9IG1vZGUuY2xhc3NOYW1lO1xuICAgIGRlbGV0ZSBtb2RlLmNsYXNzTmFtZTtcbiAgfVxufVxuXG4vKipcbiAqIGBiZWdpbktleXdvcmRzYCBzeW50YWN0aWMgc3VnYXJcbiAqIEB0eXBlIHtDb21waWxlckV4dH1cbiAqL1xuZnVuY3Rpb24gYmVnaW5LZXl3b3Jkcyhtb2RlLCBwYXJlbnQpIHtcbiAgaWYgKCFwYXJlbnQpIHJldHVybjtcbiAgaWYgKCFtb2RlLmJlZ2luS2V5d29yZHMpIHJldHVybjtcblxuICAvLyBmb3IgbGFuZ3VhZ2VzIHdpdGgga2V5d29yZHMgdGhhdCBpbmNsdWRlIG5vbi13b3JkIGNoYXJhY3RlcnMgY2hlY2tpbmcgZm9yXG4gIC8vIGEgd29yZCBib3VuZGFyeSBpcyBub3Qgc3VmZmljaWVudCwgc28gaW5zdGVhZCB3ZSBjaGVjayBmb3IgYSB3b3JkIGJvdW5kYXJ5XG4gIC8vIG9yIHdoaXRlc3BhY2UgLSB0aGlzIGRvZXMgbm8gaGFybSBpbiBhbnkgY2FzZSBzaW5jZSBvdXIga2V5d29yZCBlbmdpbmVcbiAgLy8gZG9lc24ndCBhbGxvdyBzcGFjZXMgaW4ga2V5d29yZHMgYW55d2F5cyBhbmQgd2Ugc3RpbGwgY2hlY2sgZm9yIHRoZSBib3VuZGFyeVxuICAvLyBmaXJzdFxuICBtb2RlLmJlZ2luID0gJ1xcXFxiKCcgKyBtb2RlLmJlZ2luS2V5d29yZHMuc3BsaXQoJyAnKS5qb2luKCd8JykgKyAnKSg/IVxcXFwuKSg/PVxcXFxifFxcXFxzKSc7XG4gIG1vZGUuX19iZWZvcmVCZWdpbiA9IHNraXBJZkhhc1ByZWNlZGluZ0RvdDtcbiAgbW9kZS5rZXl3b3JkcyA9IG1vZGUua2V5d29yZHMgfHwgbW9kZS5iZWdpbktleXdvcmRzO1xuICBkZWxldGUgbW9kZS5iZWdpbktleXdvcmRzO1xuXG4gIC8vIHByZXZlbnRzIGRvdWJsZSByZWxldmFuY2UsIHRoZSBrZXl3b3JkcyB0aGVtc2VsdmVzIHByb3ZpZGVcbiAgLy8gcmVsZXZhbmNlLCB0aGUgbW9kZSBkb2Vzbid0IG5lZWQgdG8gZG91YmxlIGl0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZmluZWRcbiAgaWYgKG1vZGUucmVsZXZhbmNlID09PSB1bmRlZmluZWQpIG1vZGUucmVsZXZhbmNlID0gMDtcbn1cblxuLyoqXG4gKiBBbGxvdyBgaWxsZWdhbGAgdG8gY29udGFpbiBhbiBhcnJheSBvZiBpbGxlZ2FsIHZhbHVlc1xuICogQHR5cGUge0NvbXBpbGVyRXh0fVxuICovXG5mdW5jdGlvbiBjb21waWxlSWxsZWdhbChtb2RlLCBfcGFyZW50KSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShtb2RlLmlsbGVnYWwpKSByZXR1cm47XG5cbiAgbW9kZS5pbGxlZ2FsID0gZWl0aGVyKC4uLm1vZGUuaWxsZWdhbCk7XG59XG5cbi8qKlxuICogYG1hdGNoYCB0byBtYXRjaCBhIHNpbmdsZSBleHByZXNzaW9uIGZvciByZWFkYWJpbGl0eVxuICogQHR5cGUge0NvbXBpbGVyRXh0fVxuICovXG5mdW5jdGlvbiBjb21waWxlTWF0Y2gobW9kZSwgX3BhcmVudCkge1xuICBpZiAoIW1vZGUubWF0Y2gpIHJldHVybjtcbiAgaWYgKG1vZGUuYmVnaW4gfHwgbW9kZS5lbmQpIHRocm93IG5ldyBFcnJvcihcImJlZ2luICYgZW5kIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggbWF0Y2hcIik7XG5cbiAgbW9kZS5iZWdpbiA9IG1vZGUubWF0Y2g7XG4gIGRlbGV0ZSBtb2RlLm1hdGNoO1xufVxuXG4vKipcbiAqIHByb3ZpZGVzIHRoZSBkZWZhdWx0IDEgcmVsZXZhbmNlIHRvIGFsbCBtb2Rlc1xuICogQHR5cGUge0NvbXBpbGVyRXh0fVxuICovXG5mdW5jdGlvbiBjb21waWxlUmVsZXZhbmNlKG1vZGUsIF9wYXJlbnQpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmaW5lZFxuICBpZiAobW9kZS5yZWxldmFuY2UgPT09IHVuZGVmaW5lZCkgbW9kZS5yZWxldmFuY2UgPSAxO1xufVxuXG4vLyBhbGxvdyBiZWZvcmVNYXRjaCB0byBhY3QgYXMgYSBcInF1YWxpZmllclwiIGZvciB0aGUgbWF0Y2hcbi8vIHRoZSBmdWxsIG1hdGNoIGJlZ2luIG11c3QgYmUgW2JlZm9yZU1hdGNoXVtiZWdpbl1cbmNvbnN0IGJlZm9yZU1hdGNoRXh0ID0gKG1vZGUsIHBhcmVudCkgPT4ge1xuICBpZiAoIW1vZGUuYmVmb3JlTWF0Y2gpIHJldHVybjtcbiAgLy8gc3RhcnRzIGNvbmZsaWN0cyB3aXRoIGVuZHNQYXJlbnQgd2hpY2ggd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNoaWxkXG4gIC8vIHJ1bGUgaXMgbm90IG1hdGNoZWQgbXVsdGlwbGUgdGltZXNcbiAgaWYgKG1vZGUuc3RhcnRzKSB0aHJvdyBuZXcgRXJyb3IoXCJiZWZvcmVNYXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIHN0YXJ0c1wiKTtcblxuICBjb25zdCBvcmlnaW5hbE1vZGUgPSBPYmplY3QuYXNzaWduKHt9LCBtb2RlKTtcbiAgT2JqZWN0LmtleXMobW9kZSkuZm9yRWFjaCgoa2V5KSA9PiB7IGRlbGV0ZSBtb2RlW2tleV07IH0pO1xuXG4gIG1vZGUua2V5d29yZHMgPSBvcmlnaW5hbE1vZGUua2V5d29yZHM7XG4gIG1vZGUuYmVnaW4gPSBjb25jYXQob3JpZ2luYWxNb2RlLmJlZm9yZU1hdGNoLCBsb29rYWhlYWQob3JpZ2luYWxNb2RlLmJlZ2luKSk7XG4gIG1vZGUuc3RhcnRzID0ge1xuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAgT2JqZWN0LmFzc2lnbihvcmlnaW5hbE1vZGUsIHsgZW5kc1BhcmVudDogdHJ1ZSB9KVxuICAgIF1cbiAgfTtcbiAgbW9kZS5yZWxldmFuY2UgPSAwO1xuXG4gIGRlbGV0ZSBvcmlnaW5hbE1vZGUuYmVmb3JlTWF0Y2g7XG59O1xuXG4vLyBrZXl3b3JkcyB0aGF0IHNob3VsZCBoYXZlIG5vIGRlZmF1bHQgcmVsZXZhbmNlIHZhbHVlXG5jb25zdCBDT01NT05fS0VZV09SRFMgPSBbXG4gICdvZicsXG4gICdhbmQnLFxuICAnZm9yJyxcbiAgJ2luJyxcbiAgJ25vdCcsXG4gICdvcicsXG4gICdpZicsXG4gICd0aGVuJyxcbiAgJ3BhcmVudCcsIC8vIGNvbW1vbiB2YXJpYWJsZSBuYW1lXG4gICdsaXN0JywgLy8gY29tbW9uIHZhcmlhYmxlIG5hbWVcbiAgJ3ZhbHVlJyAvLyBjb21tb24gdmFyaWFibGUgbmFtZVxuXTtcblxuY29uc3QgREVGQVVMVF9LRVlXT1JEX1NDT1BFID0gXCJrZXl3b3JkXCI7XG5cbi8qKlxuICogR2l2ZW4gcmF3IGtleXdvcmRzIGZyb20gYSBsYW5ndWFnZSBkZWZpbml0aW9uLCBjb21waWxlIHRoZW0uXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLHN0cmluZ3xzdHJpbmdbXT4gfCBBcnJheTxzdHJpbmc+fSByYXdLZXl3b3Jkc1xuICogQHBhcmFtIHtib29sZWFufSBjYXNlSW5zZW5zaXRpdmVcbiAqL1xuZnVuY3Rpb24gY29tcGlsZUtleXdvcmRzKHJhd0tleXdvcmRzLCBjYXNlSW5zZW5zaXRpdmUsIHNjb3BlTmFtZSA9IERFRkFVTFRfS0VZV09SRF9TQ09QRSkge1xuICAvKiogQHR5cGUge2ltcG9ydChcImhpZ2hsaWdodC5qcy9wcml2YXRlXCIpLktleXdvcmREaWN0fSAqL1xuICBjb25zdCBjb21waWxlZEtleXdvcmRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAvLyBpbnB1dCBjYW4gYmUgYSBzdHJpbmcgb2Yga2V5d29yZHMsIGFuIGFycmF5IG9mIGtleXdvcmRzLCBvciBhIG9iamVjdCB3aXRoXG4gIC8vIG5hbWVkIGtleXMgcmVwcmVzZW50aW5nIHNjb3BlTmFtZSAod2hpY2ggY2FuIHRoZW4gcG9pbnQgdG8gYSBzdHJpbmcgb3IgYXJyYXkpXG4gIGlmICh0eXBlb2YgcmF3S2V5d29yZHMgPT09ICdzdHJpbmcnKSB7XG4gICAgY29tcGlsZUxpc3Qoc2NvcGVOYW1lLCByYXdLZXl3b3Jkcy5zcGxpdChcIiBcIikpO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmF3S2V5d29yZHMpKSB7XG4gICAgY29tcGlsZUxpc3Qoc2NvcGVOYW1lLCByYXdLZXl3b3Jkcyk7XG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmtleXMocmF3S2V5d29yZHMpLmZvckVhY2goZnVuY3Rpb24oc2NvcGVOYW1lKSB7XG4gICAgICAvLyBjb2xsYXBzZSBhbGwgb3VyIG9iamVjdHMgYmFjayBpbnRvIHRoZSBwYXJlbnQgb2JqZWN0XG4gICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICBjb21waWxlZEtleXdvcmRzLFxuICAgICAgICBjb21waWxlS2V5d29yZHMocmF3S2V5d29yZHNbc2NvcGVOYW1lXSwgY2FzZUluc2Vuc2l0aXZlLCBzY29wZU5hbWUpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBjb21waWxlZEtleXdvcmRzO1xuXG4gIC8vIC0tLVxuXG4gIC8qKlxuICAgKiBDb21waWxlcyBhbiBpbmRpdmlkdWFsIGxpc3Qgb2Yga2V5d29yZHNcbiAgICpcbiAgICogRXg6IFwiZm9yIGlmIHdoZW4gd2hpbGV8NVwiXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY29wZU5hbWVcbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBrZXl3b3JkTGlzdFxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGlsZUxpc3Qoc2NvcGVOYW1lLCBrZXl3b3JkTGlzdCkge1xuICAgIGlmIChjYXNlSW5zZW5zaXRpdmUpIHtcbiAgICAgIGtleXdvcmRMaXN0ID0ga2V5d29yZExpc3QubWFwKHggPT4geC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAga2V5d29yZExpc3QuZm9yRWFjaChmdW5jdGlvbihrZXl3b3JkKSB7XG4gICAgICBjb25zdCBwYWlyID0ga2V5d29yZC5zcGxpdCgnfCcpO1xuICAgICAgY29tcGlsZWRLZXl3b3Jkc1twYWlyWzBdXSA9IFtzY29wZU5hbWUsIHNjb3JlRm9yS2V5d29yZChwYWlyWzBdLCBwYWlyWzFdKV07XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcm9wZXIgc2NvcmUgZm9yIGEgZ2l2ZW4ga2V5d29yZFxuICpcbiAqIEFsc28gdGFrZXMgaW50byBhY2NvdW50IGNvbW1lbnQga2V5d29yZHMsIHdoaWNoIHdpbGwgYmUgc2NvcmVkIDAgVU5MRVNTXG4gKiBhbm90aGVyIHNjb3JlIGhhcyBiZWVuIG1hbnVhbGx5IGFzc2lnbmVkLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleXdvcmRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcHJvdmlkZWRTY29yZV1cbiAqL1xuZnVuY3Rpb24gc2NvcmVGb3JLZXl3b3JkKGtleXdvcmQsIHByb3ZpZGVkU2NvcmUpIHtcbiAgLy8gbWFudWFsIHNjb3JlcyBhbHdheXMgd2luIG92ZXIgY29tbW9uIGtleXdvcmRzXG4gIC8vIHNvIHlvdSBjYW4gZm9yY2UgYSBzY29yZSBvZiAxIGlmIHlvdSByZWFsbHkgaW5zaXN0XG4gIGlmIChwcm92aWRlZFNjb3JlKSB7XG4gICAgcmV0dXJuIE51bWJlcihwcm92aWRlZFNjb3JlKTtcbiAgfVxuXG4gIHJldHVybiBjb21tb25LZXl3b3JkKGtleXdvcmQpID8gMCA6IDE7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGtleXdvcmQgaXMgY29tbW9uIG9yIG5vdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXl3b3JkICovXG5mdW5jdGlvbiBjb21tb25LZXl3b3JkKGtleXdvcmQpIHtcbiAgcmV0dXJuIENPTU1PTl9LRVlXT1JEUy5pbmNsdWRlcyhrZXl3b3JkLnRvTG93ZXJDYXNlKCkpO1xufVxuXG4vKlxuXG5Gb3IgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcyBwbGVhc2Ugc2VlOlxuaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMjg4MCNpc3N1ZWNvbW1lbnQtNzQ3Mjc1NDE5XG5cbiovXG5cbi8qKlxuICogQHR5cGUge1JlY29yZDxzdHJpbmcsIGJvb2xlYW4+fVxuICovXG5jb25zdCBzZWVuRGVwcmVjYXRpb25zID0ge307XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2VcbiAqL1xuY29uc3QgZXJyb3IgPSAobWVzc2FnZSkgPT4ge1xuICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICogQHBhcmFtIHthbnl9IGFyZ3NcbiAqL1xuY29uc3Qgd2FybiA9IChtZXNzYWdlLCAuLi5hcmdzKSA9PiB7XG4gIGNvbnNvbGUubG9nKGBXQVJOOiAke21lc3NhZ2V9YCwgLi4uYXJncyk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzaW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICovXG5jb25zdCBkZXByZWNhdGVkID0gKHZlcnNpb24sIG1lc3NhZ2UpID0+IHtcbiAgaWYgKHNlZW5EZXByZWNhdGlvbnNbYCR7dmVyc2lvbn0vJHttZXNzYWdlfWBdKSByZXR1cm47XG5cbiAgY29uc29sZS5sb2coYERlcHJlY2F0ZWQgYXMgb2YgJHt2ZXJzaW9ufS4gJHttZXNzYWdlfWApO1xuICBzZWVuRGVwcmVjYXRpb25zW2Ake3ZlcnNpb259LyR7bWVzc2FnZX1gXSA9IHRydWU7XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby10aHJvdy1saXRlcmFsICovXG5cbi8qKlxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuQ29tcGlsZWRNb2RlfSBDb21waWxlZE1vZGVcbiovXG5cbmNvbnN0IE11bHRpQ2xhc3NFcnJvciA9IG5ldyBFcnJvcigpO1xuXG4vKipcbiAqIFJlbnVtYmVycyBsYWJlbGVkIHNjb3BlIG5hbWVzIHRvIGFjY291bnQgZm9yIGFkZGl0aW9uYWwgaW5uZXIgbWF0Y2hcbiAqIGdyb3VwcyB0aGF0IG90aGVyd2lzZSB3b3VsZCBicmVhayBldmVyeXRoaW5nLlxuICpcbiAqIExldHMgc2F5IHdlIDMgbWF0Y2ggc2NvcGVzOlxuICpcbiAqICAgeyAxID0+IC4uLiwgMiA9PiAuLi4sIDMgPT4gLi4uIH1cbiAqXG4gKiBTbyB3aGF0IHdlIG5lZWQgaXMgYSBjbGVhbiBtYXRjaCBsaWtlIHRoaXM6XG4gKlxuICogICAoYSkoYikoYykgPT4gWyBcImFcIiwgXCJiXCIsIFwiY1wiIF1cbiAqXG4gKiBCdXQgdGhpcyBmYWxscyBhcGFydCB3aXRoIGlubmVyIG1hdGNoIGdyb3VwczpcbiAqXG4gKiAoYSkoKChiKSkpKGMpID0+IFtcImFcIiwgXCJiXCIsIFwiYlwiLCBcImJcIiwgXCJjXCIgXVxuICpcbiAqIE91ciBzY29wZXMgYXJlIG5vdyBcIm91dCBvZiBhbGlnbm1lbnRcIiBhbmQgd2UncmUgcmVwZWF0aW5nIGBiYCAzIHRpbWVzLlxuICogV2hhdCBuZWVkcyB0byBoYXBwZW4gaXMgdGhlIG51bWJlcnMgYXJlIHJlbWFwcGVkOlxuICpcbiAqICAgeyAxID0+IC4uLiwgMiA9PiAuLi4sIDUgPT4gLi4uIH1cbiAqXG4gKiBXZSBhbHNvIG5lZWQgdG8ga25vdyB0aGF0IHRoZSBPTkxZIGdyb3VwcyB0aGF0IHNob3VsZCBiZSBvdXRwdXRcbiAqIGFyZSAxLCAyLCBhbmQgNS4gIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGlzIGJlaGF2aW9yLlxuICpcbiAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gKiBAcGFyYW0ge0FycmF5PFJlZ0V4cCB8IHN0cmluZz59IHJlZ2V4ZXNcbiAqIEBwYXJhbSB7e2tleTogXCJiZWdpblNjb3BlXCJ8XCJlbmRTY29wZVwifX0gb3B0c1xuICovXG5mdW5jdGlvbiByZW1hcFNjb3BlTmFtZXMobW9kZSwgcmVnZXhlcywgeyBrZXkgfSkge1xuICBsZXQgb2Zmc2V0ID0gMDtcbiAgY29uc3Qgc2NvcGVOYW1lcyA9IG1vZGVba2V5XTtcbiAgLyoqIEB0eXBlIFJlY29yZDxudW1iZXIsYm9vbGVhbj4gKi9cbiAgY29uc3QgZW1pdCA9IHt9O1xuICAvKiogQHR5cGUgUmVjb3JkPG51bWJlcixzdHJpbmc+ICovXG4gIGNvbnN0IHBvc2l0aW9ucyA9IHt9O1xuXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IHJlZ2V4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBwb3NpdGlvbnNbaSArIG9mZnNldF0gPSBzY29wZU5hbWVzW2ldO1xuICAgIGVtaXRbaSArIG9mZnNldF0gPSB0cnVlO1xuICAgIG9mZnNldCArPSBjb3VudE1hdGNoR3JvdXBzKHJlZ2V4ZXNbaSAtIDFdKTtcbiAgfVxuICAvLyB3ZSB1c2UgX2VtaXQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBtYXRjaCBncm91cHMgYXJlIFwidG9wLWxldmVsXCIgdG8gYXZvaWQgZG91YmxlXG4gIC8vIG91dHB1dCBmcm9tIGluc2lkZSBtYXRjaCBncm91cHNcbiAgbW9kZVtrZXldID0gcG9zaXRpb25zO1xuICBtb2RlW2tleV0uX2VtaXQgPSBlbWl0O1xuICBtb2RlW2tleV0uX211bHRpID0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZVxuICovXG5mdW5jdGlvbiBiZWdpbk11bHRpQ2xhc3MobW9kZSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobW9kZS5iZWdpbikpIHJldHVybjtcblxuICBpZiAobW9kZS5za2lwIHx8IG1vZGUuZXhjbHVkZUJlZ2luIHx8IG1vZGUucmV0dXJuQmVnaW4pIHtcbiAgICBlcnJvcihcInNraXAsIGV4Y2x1ZGVCZWdpbiwgcmV0dXJuQmVnaW4gbm90IGNvbXBhdGlibGUgd2l0aCBiZWdpblNjb3BlOiB7fVwiKTtcbiAgICB0aHJvdyBNdWx0aUNsYXNzRXJyb3I7XG4gIH1cblxuICBpZiAodHlwZW9mIG1vZGUuYmVnaW5TY29wZSAhPT0gXCJvYmplY3RcIiB8fCBtb2RlLmJlZ2luU2NvcGUgPT09IG51bGwpIHtcbiAgICBlcnJvcihcImJlZ2luU2NvcGUgbXVzdCBiZSBvYmplY3RcIik7XG4gICAgdGhyb3cgTXVsdGlDbGFzc0Vycm9yO1xuICB9XG5cbiAgcmVtYXBTY29wZU5hbWVzKG1vZGUsIG1vZGUuYmVnaW4sIHsga2V5OiBcImJlZ2luU2NvcGVcIiB9KTtcbiAgbW9kZS5iZWdpbiA9IF9yZXdyaXRlQmFja3JlZmVyZW5jZXMobW9kZS5iZWdpbiwgeyBqb2luV2l0aDogXCJcIiB9KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZVxuICovXG5mdW5jdGlvbiBlbmRNdWx0aUNsYXNzKG1vZGUpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG1vZGUuZW5kKSkgcmV0dXJuO1xuXG4gIGlmIChtb2RlLnNraXAgfHwgbW9kZS5leGNsdWRlRW5kIHx8IG1vZGUucmV0dXJuRW5kKSB7XG4gICAgZXJyb3IoXCJza2lwLCBleGNsdWRlRW5kLCByZXR1cm5FbmQgbm90IGNvbXBhdGlibGUgd2l0aCBlbmRTY29wZToge31cIik7XG4gICAgdGhyb3cgTXVsdGlDbGFzc0Vycm9yO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBtb2RlLmVuZFNjb3BlICE9PSBcIm9iamVjdFwiIHx8IG1vZGUuZW5kU2NvcGUgPT09IG51bGwpIHtcbiAgICBlcnJvcihcImVuZFNjb3BlIG11c3QgYmUgb2JqZWN0XCIpO1xuICAgIHRocm93IE11bHRpQ2xhc3NFcnJvcjtcbiAgfVxuXG4gIHJlbWFwU2NvcGVOYW1lcyhtb2RlLCBtb2RlLmVuZCwgeyBrZXk6IFwiZW5kU2NvcGVcIiB9KTtcbiAgbW9kZS5lbmQgPSBfcmV3cml0ZUJhY2tyZWZlcmVuY2VzKG1vZGUuZW5kLCB7IGpvaW5XaXRoOiBcIlwiIH0pO1xufVxuXG4vKipcbiAqIHRoaXMgZXhpc3RzIG9ubHkgdG8gYWxsb3cgYHNjb3BlOiB7fWAgdG8gYmUgdXNlZCBiZXNpZGUgYG1hdGNoOmBcbiAqIE90aGVyd2lzZSBgYmVnaW5TY29wZWAgd291bGQgbmVjZXNzYXJ5IGFuZCB0aGF0IHdvdWxkIGxvb2sgd2VpcmRcblxuICB7XG4gICAgbWF0Y2g6IFsgL2RlZi8sIC9cXHcrLyBdXG4gICAgc2NvcGU6IHsgMTogXCJrZXl3b3JkXCIgLCAyOiBcInRpdGxlXCIgfVxuICB9XG5cbiAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gKi9cbmZ1bmN0aW9uIHNjb3BlU3VnYXIobW9kZSkge1xuICBpZiAobW9kZS5zY29wZSAmJiB0eXBlb2YgbW9kZS5zY29wZSA9PT0gXCJvYmplY3RcIiAmJiBtb2RlLnNjb3BlICE9PSBudWxsKSB7XG4gICAgbW9kZS5iZWdpblNjb3BlID0gbW9kZS5zY29wZTtcbiAgICBkZWxldGUgbW9kZS5zY29wZTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlfSBtb2RlXG4gKi9cbmZ1bmN0aW9uIE11bHRpQ2xhc3MobW9kZSkge1xuICBzY29wZVN1Z2FyKG1vZGUpO1xuXG4gIGlmICh0eXBlb2YgbW9kZS5iZWdpblNjb3BlID09PSBcInN0cmluZ1wiKSB7XG4gICAgbW9kZS5iZWdpblNjb3BlID0geyBfd3JhcDogbW9kZS5iZWdpblNjb3BlIH07XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2RlLmVuZFNjb3BlID09PSBcInN0cmluZ1wiKSB7XG4gICAgbW9kZS5lbmRTY29wZSA9IHsgX3dyYXA6IG1vZGUuZW5kU2NvcGUgfTtcbiAgfVxuXG4gIGJlZ2luTXVsdGlDbGFzcyhtb2RlKTtcbiAgZW5kTXVsdGlDbGFzcyhtb2RlKTtcbn1cblxuLyoqXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Nb2RlfSBNb2RlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Db21waWxlZE1vZGV9IENvbXBpbGVkTW9kZVxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuTGFuZ3VhZ2V9IExhbmd1YWdlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5ITEpTUGx1Z2lufSBITEpTUGx1Z2luXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Db21waWxlZExhbmd1YWdlfSBDb21waWxlZExhbmd1YWdlXG4qL1xuXG4vLyBjb21waWxhdGlvblxuXG4vKipcbiAqIENvbXBpbGVzIGEgbGFuZ3VhZ2UgZGVmaW5pdGlvbiByZXN1bHRcbiAqXG4gKiBHaXZlbiB0aGUgcmF3IHJlc3VsdCBvZiBhIGxhbmd1YWdlIGRlZmluaXRpb24gKExhbmd1YWdlKSwgY29tcGlsZXMgdGhpcyBzb1xuICogdGhhdCBpdCBpcyByZWFkeSBmb3IgaGlnaGxpZ2h0aW5nIGNvZGUuXG4gKiBAcGFyYW0ge0xhbmd1YWdlfSBsYW5ndWFnZVxuICogQHJldHVybnMge0NvbXBpbGVkTGFuZ3VhZ2V9XG4gKi9cbmZ1bmN0aW9uIGNvbXBpbGVMYW5ndWFnZShsYW5ndWFnZSkge1xuICAvKipcbiAgICogQnVpbGRzIGEgcmVnZXggd2l0aCB0aGUgY2FzZSBzZW5zaXRpdml0eSBvZiB0aGUgY3VycmVudCBsYW5ndWFnZVxuICAgKlxuICAgKiBAcGFyYW0ge1JlZ0V4cCB8IHN0cmluZ30gdmFsdWVcbiAgICogQHBhcmFtIHtib29sZWFufSBbZ2xvYmFsXVxuICAgKi9cbiAgZnVuY3Rpb24gbGFuZ1JlKHZhbHVlLCBnbG9iYWwpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChcbiAgICAgIHNvdXJjZSh2YWx1ZSksXG4gICAgICAnbSdcbiAgICAgICsgKGxhbmd1YWdlLmNhc2VfaW5zZW5zaXRpdmUgPyAnaScgOiAnJylcbiAgICAgICsgKGxhbmd1YWdlLnVuaWNvZGVSZWdleCA/ICd1JyA6ICcnKVxuICAgICAgKyAoZ2xvYmFsID8gJ2cnIDogJycpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgIFN0b3JlcyBtdWx0aXBsZSByZWd1bGFyIGV4cHJlc3Npb25zIGFuZCBhbGxvd3MgeW91IHRvIHF1aWNrbHkgc2VhcmNoIGZvclxuICAgIHRoZW0gYWxsIGluIGEgc3RyaW5nIHNpbXVsdGFuZW91c2x5IC0gcmV0dXJuaW5nIHRoZSBmaXJzdCBtYXRjaC4gIEl0IGRvZXNcbiAgICB0aGlzIGJ5IGNyZWF0aW5nIGEgaHVnZSAoYXxifGMpIHJlZ2V4IC0gZWFjaCBpbmRpdmlkdWFsIGl0ZW0gd3JhcHBlZCB3aXRoICgpXG4gICAgYW5kIGpvaW5lZCBieSBgfGAgLSB1c2luZyBtYXRjaCBncm91cHMgdG8gdHJhY2sgcG9zaXRpb24uICBXaGVuIGEgbWF0Y2ggaXNcbiAgICBmb3VuZCBjaGVja2luZyB3aGljaCBwb3NpdGlvbiBpbiB0aGUgYXJyYXkgaGFzIGNvbnRlbnQgYWxsb3dzIHVzIHRvIGZpZ3VyZVxuICAgIG91dCB3aGljaCBvZiB0aGUgb3JpZ2luYWwgcmVnZXhlcyAvIG1hdGNoIGdyb3VwcyB0cmlnZ2VyZWQgdGhlIG1hdGNoLlxuXG4gICAgVGhlIG1hdGNoIG9iamVjdCBpdHNlbGYgKHRoZSByZXN1bHQgb2YgYFJlZ2V4LmV4ZWNgKSBpcyByZXR1cm5lZCBidXQgYWxzb1xuICAgIGVuaGFuY2VkIGJ5IG1lcmdpbmcgaW4gYW55IG1ldGEtZGF0YSB0aGF0IHdhcyByZWdpc3RlcmVkIHdpdGggdGhlIHJlZ2V4LlxuICAgIFRoaXMgaXMgaG93IHdlIGtlZXAgdHJhY2sgb2Ygd2hpY2ggbW9kZSBtYXRjaGVkLCBhbmQgd2hhdCB0eXBlIG9mIHJ1bGVcbiAgICAoYGlsbGVnYWxgLCBgYmVnaW5gLCBlbmQsIGV0YykuXG4gICovXG4gIGNsYXNzIE11bHRpUmVnZXgge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgdGhpcy5tYXRjaEluZGV4ZXMgPSB7fTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMucmVnZXhlcyA9IFtdO1xuICAgICAgdGhpcy5tYXRjaEF0ID0gMTtcbiAgICAgIHRoaXMucG9zaXRpb24gPSAwO1xuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBhZGRSdWxlKHJlLCBvcHRzKSB7XG4gICAgICBvcHRzLnBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbisrO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5tYXRjaEluZGV4ZXNbdGhpcy5tYXRjaEF0XSA9IG9wdHM7XG4gICAgICB0aGlzLnJlZ2V4ZXMucHVzaChbb3B0cywgcmVdKTtcbiAgICAgIHRoaXMubWF0Y2hBdCArPSBjb3VudE1hdGNoR3JvdXBzKHJlKSArIDE7XG4gICAgfVxuXG4gICAgY29tcGlsZSgpIHtcbiAgICAgIGlmICh0aGlzLnJlZ2V4ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIC8vIGF2b2lkcyB0aGUgbmVlZCB0byBjaGVjayBsZW5ndGggZXZlcnkgdGltZSBleGVjIGlzIGNhbGxlZFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuZXhlYyA9ICgpID0+IG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCB0ZXJtaW5hdG9ycyA9IHRoaXMucmVnZXhlcy5tYXAoZWwgPT4gZWxbMV0pO1xuICAgICAgdGhpcy5tYXRjaGVyUmUgPSBsYW5nUmUoX3Jld3JpdGVCYWNrcmVmZXJlbmNlcyh0ZXJtaW5hdG9ycywgeyBqb2luV2l0aDogJ3wnIH0pLCB0cnVlKTtcbiAgICAgIHRoaXMubGFzdEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICAvKiogQHBhcmFtIHtzdHJpbmd9IHMgKi9cbiAgICBleGVjKHMpIHtcbiAgICAgIHRoaXMubWF0Y2hlclJlLmxhc3RJbmRleCA9IHRoaXMubGFzdEluZGV4O1xuICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLm1hdGNoZXJSZS5leGVjKHMpO1xuICAgICAgaWYgKCFtYXRjaCkgeyByZXR1cm4gbnVsbDsgfVxuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZpbmVkXG4gICAgICBjb25zdCBpID0gbWF0Y2guZmluZEluZGV4KChlbCwgaSkgPT4gaSA+IDAgJiYgZWwgIT09IHVuZGVmaW5lZCk7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBtYXRjaERhdGEgPSB0aGlzLm1hdGNoSW5kZXhlc1tpXTtcbiAgICAgIC8vIHRyaW0gb2ZmIGFueSBlYXJsaWVyIG5vbi1yZWxldmFudCBtYXRjaCBncm91cHMgKGllLCB0aGUgb3RoZXIgcmVnZXhcbiAgICAgIC8vIG1hdGNoIGdyb3VwcyB0aGF0IG1ha2UgdXAgdGhlIG11bHRpLW1hdGNoZXIpXG4gICAgICBtYXRjaC5zcGxpY2UoMCwgaSk7XG5cbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKG1hdGNoLCBtYXRjaERhdGEpO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICAgQ3JlYXRlZCB0byBzb2x2ZSB0aGUga2V5IGRlZmljaWVudGx5IHdpdGggTXVsdGlSZWdleCAtIHRoZXJlIGlzIG5vIHdheSB0b1xuICAgIHRlc3QgZm9yIG11bHRpcGxlIG1hdGNoZXMgYXQgYSBzaW5nbGUgbG9jYXRpb24uICBXaHkgd291bGQgd2UgbmVlZCB0byBkb1xuICAgIHRoYXQ/ICBJbiB0aGUgZnV0dXJlIGEgbW9yZSBkeW5hbWljIGVuZ2luZSB3aWxsIGFsbG93IGNlcnRhaW4gbWF0Y2hlcyB0byBiZVxuICAgIGlnbm9yZWQuICBBbiBleGFtcGxlOiBpZiB3ZSBtYXRjaGVkIHNheSB0aGUgM3JkIHJlZ2V4IGluIGEgbGFyZ2UgZ3JvdXAgYnV0XG4gICAgZGVjaWRlZCB0byBpZ25vcmUgaXQgLSB3ZSdkIG5lZWQgdG8gc3RhcnRlZCB0ZXN0aW5nIGFnYWluIGF0IHRoZSA0dGhcbiAgICByZWdleC4uLiBidXQgTXVsdGlSZWdleCBpdHNlbGYgZ2l2ZXMgdXMgbm8gcmVhbCB3YXkgdG8gZG8gdGhhdC5cblxuICAgIFNvIHdoYXQgdGhpcyBjbGFzcyBjcmVhdGVzIE11bHRpUmVnZXhzIG9uIHRoZSBmbHkgZm9yIHdoYXRldmVyIHNlYXJjaFxuICAgIHBvc2l0aW9uIHRoZXkgYXJlIG5lZWRlZC5cblxuICAgIE5PVEU6IFRoZXNlIGFkZGl0aW9uYWwgTXVsdGlSZWdleCBvYmplY3RzIGFyZSBjcmVhdGVkIGR5bmFtaWNhbGx5LiAgRm9yIG1vc3RcbiAgICBncmFtbWFycyBtb3N0IG9mIHRoZSB0aW1lIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgbmVlZCBhbnl0aGluZyBtb3JlIHRoYW4gdGhlXG4gICAgZmlyc3QgTXVsdGlSZWdleCAtIHNvIHRoaXMgc2hvdWxkbid0IGhhdmUgdG9vIG11Y2ggb3ZlcmhlYWQuXG5cbiAgICBTYXkgdGhpcyBpcyBvdXIgc2VhcmNoIGdyb3VwLCBhbmQgd2UgbWF0Y2ggcmVnZXgzLCBidXQgd2lzaCB0byBpZ25vcmUgaXQuXG5cbiAgICAgIHJlZ2V4MSB8IHJlZ2V4MiB8IHJlZ2V4MyB8IHJlZ2V4NCB8IHJlZ2V4NSAgICAnIGllLCBzdGFydEF0ID0gMFxuXG4gICAgV2hhdCB3ZSBuZWVkIGlzIGEgbmV3IE11bHRpUmVnZXggdGhhdCBvbmx5IGluY2x1ZGVzIHRoZSByZW1haW5pbmdcbiAgICBwb3NzaWJpbGl0aWVzOlxuXG4gICAgICByZWdleDQgfCByZWdleDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBpZSwgc3RhcnRBdCA9IDNcblxuICAgIFRoaXMgY2xhc3Mgd3JhcHMgYWxsIHRoYXQgY29tcGxleGl0eSB1cCBpbiBhIHNpbXBsZSBBUEkuLi4gYHN0YXJ0QXRgIGRlY2lkZXNcbiAgICB3aGVyZSBpbiB0aGUgYXJyYXkgb2YgZXhwcmVzc2lvbnMgdG8gc3RhcnQgZG9pbmcgdGhlIG1hdGNoaW5nLiBJdFxuICAgIGF1dG8taW5jcmVtZW50cywgc28gaWYgYSBtYXRjaCBpcyBmb3VuZCBhdCBwb3NpdGlvbiAyLCB0aGVuIHN0YXJ0QXQgd2lsbCBiZVxuICAgIHNldCB0byAzLiAgSWYgdGhlIGVuZCBpcyByZWFjaGVkIHN0YXJ0QXQgd2lsbCByZXR1cm4gdG8gMC5cblxuICAgIE1PU1Qgb2YgdGhlIHRpbWUgdGhlIHBhcnNlciB3aWxsIGJlIHNldHRpbmcgc3RhcnRBdCBtYW51YWxseSB0byAwLlxuICAqL1xuICBjbGFzcyBSZXN1bWFibGVNdWx0aVJlZ2V4IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMucnVsZXMgPSBbXTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMubXVsdGlSZWdleGVzID0gW107XG4gICAgICB0aGlzLmNvdW50ID0gMDtcblxuICAgICAgdGhpcy5sYXN0SW5kZXggPSAwO1xuICAgICAgdGhpcy5yZWdleEluZGV4ID0gMDtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgZ2V0TWF0Y2hlcihpbmRleCkge1xuICAgICAgaWYgKHRoaXMubXVsdGlSZWdleGVzW2luZGV4XSkgcmV0dXJuIHRoaXMubXVsdGlSZWdleGVzW2luZGV4XTtcblxuICAgICAgY29uc3QgbWF0Y2hlciA9IG5ldyBNdWx0aVJlZ2V4KCk7XG4gICAgICB0aGlzLnJ1bGVzLnNsaWNlKGluZGV4KS5mb3JFYWNoKChbcmUsIG9wdHNdKSA9PiBtYXRjaGVyLmFkZFJ1bGUocmUsIG9wdHMpKTtcbiAgICAgIG1hdGNoZXIuY29tcGlsZSgpO1xuICAgICAgdGhpcy5tdWx0aVJlZ2V4ZXNbaW5kZXhdID0gbWF0Y2hlcjtcbiAgICAgIHJldHVybiBtYXRjaGVyO1xuICAgIH1cblxuICAgIHJlc3VtaW5nU2NhbkF0U2FtZVBvc2l0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVnZXhJbmRleCAhPT0gMDtcbiAgICB9XG5cbiAgICBjb25zaWRlckFsbCgpIHtcbiAgICAgIHRoaXMucmVnZXhJbmRleCA9IDA7XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGFkZFJ1bGUocmUsIG9wdHMpIHtcbiAgICAgIHRoaXMucnVsZXMucHVzaChbcmUsIG9wdHNdKTtcbiAgICAgIGlmIChvcHRzLnR5cGUgPT09IFwiYmVnaW5cIikgdGhpcy5jb3VudCsrO1xuICAgIH1cblxuICAgIC8qKiBAcGFyYW0ge3N0cmluZ30gcyAqL1xuICAgIGV4ZWMocykge1xuICAgICAgY29uc3QgbSA9IHRoaXMuZ2V0TWF0Y2hlcih0aGlzLnJlZ2V4SW5kZXgpO1xuICAgICAgbS5sYXN0SW5kZXggPSB0aGlzLmxhc3RJbmRleDtcbiAgICAgIGxldCByZXN1bHQgPSBtLmV4ZWMocyk7XG5cbiAgICAgIC8vIFRoZSBmb2xsb3dpbmcgaXMgYmVjYXVzZSB3ZSBoYXZlIG5vIGVhc3kgd2F5IHRvIHNheSBcInJlc3VtZSBzY2FubmluZyBhdCB0aGVcbiAgICAgIC8vIGV4aXN0aW5nIHBvc2l0aW9uIGJ1dCBhbHNvIHNraXAgdGhlIGN1cnJlbnQgcnVsZSBPTkxZXCIuIFdoYXQgaGFwcGVucyBpc1xuICAgICAgLy8gYWxsIHByaW9yIHJ1bGVzIGFyZSBhbHNvIHNraXBwZWQgd2hpY2ggY2FuIHJlc3VsdCBpbiBtYXRjaGluZyB0aGUgd3JvbmdcbiAgICAgIC8vIHRoaW5nLiBFeGFtcGxlIG9mIG1hdGNoaW5nIFwiYm9vZ2VyXCI6XG5cbiAgICAgIC8vIG91ciBtYXRjaGVyIGlzIFtzdHJpbmcsIFwiYm9vZ2VyXCIsIG51bWJlcl1cbiAgICAgIC8vXG4gICAgICAvLyAuLi4uYm9vZ2VyLi4uLlxuXG4gICAgICAvLyBpZiBcImJvb2dlclwiIGlzIGlnbm9yZWQgdGhlbiB3ZSdkIHJlYWxseSBuZWVkIGEgcmVnZXggdG8gc2NhbiBmcm9tIHRoZVxuICAgICAgLy8gU0FNRSBwb3NpdGlvbiBmb3Igb25seTogW3N0cmluZywgbnVtYmVyXSBidXQgaWdub3JpbmcgXCJib29nZXJcIiAoaWYgaXRcbiAgICAgIC8vIHdhcyB0aGUgZmlyc3QgbWF0Y2gpLCBhIHNpbXBsZSByZXN1bWUgd291bGQgc2NhbiBhaGVhZCB3aG8ga25vd3MgaG93XG4gICAgICAvLyBmYXIgbG9va2luZyBvbmx5IGZvciBcIm51bWJlclwiLCBpZ25vcmluZyBwb3RlbnRpYWwgc3RyaW5nIG1hdGNoZXMgKG9yXG4gICAgICAvLyBmdXR1cmUgXCJib29nZXJcIiBtYXRjaGVzIHRoYXQgbWlnaHQgYmUgdmFsaWQuKVxuXG4gICAgICAvLyBTbyB3aGF0IHdlIGRvOiBXZSBleGVjdXRlIHR3byBtYXRjaGVycywgb25lIHJlc3VtaW5nIGF0IHRoZSBzYW1lXG4gICAgICAvLyBwb3NpdGlvbiwgYnV0IHRoZSBzZWNvbmQgZnVsbCBtYXRjaGVyIHN0YXJ0aW5nIGF0IHRoZSBwb3NpdGlvbiBhZnRlcjpcblxuICAgICAgLy8gICAgIC8tLS0gcmVzdW1lIGZpcnN0IHJlZ2V4IG1hdGNoIGhlcmUgKGZvciBbbnVtYmVyXSlcbiAgICAgIC8vICAgICB8Ly0tLS0gZnVsbCBtYXRjaCBoZXJlIGZvciBbc3RyaW5nLCBcImJvb2dlclwiLCBudW1iZXJdXG4gICAgICAvLyAgICAgdnZcbiAgICAgIC8vIC4uLi5ib29nZXIuLi4uXG5cbiAgICAgIC8vIFdoaWNoIGV2ZXIgcmVzdWx0cyBpbiBhIG1hdGNoIGZpcnN0IGlzIHRoZW4gdXNlZC4gU28gdGhpcyAzLTQgc3RlcFxuICAgICAgLy8gcHJvY2VzcyBlc3NlbnRpYWxseSBhbGxvd3MgdXMgdG8gc2F5IFwibWF0Y2ggYXQgdGhpcyBwb3NpdGlvbiwgZXhjbHVkaW5nXG4gICAgICAvLyBhIHByaW9yIHJ1bGUgdGhhdCB3YXMgaWdub3JlZFwiLlxuICAgICAgLy9cbiAgICAgIC8vIDEuIE1hdGNoIFwiYm9vZ2VyXCIgZmlyc3QsIGlnbm9yZS4gQWxzbyBwcm92ZXMgdGhhdCBbc3RyaW5nXSBkb2VzIG5vbiBtYXRjaC5cbiAgICAgIC8vIDIuIFJlc3VtZSBtYXRjaGluZyBmb3IgW251bWJlcl1cbiAgICAgIC8vIDMuIE1hdGNoIGF0IGluZGV4ICsgMSBmb3IgW3N0cmluZywgXCJib29nZXJcIiwgbnVtYmVyXVxuICAgICAgLy8gNC4gSWYgIzIgYW5kICMzIHJlc3VsdCBpbiBtYXRjaGVzLCB3aGljaCBjYW1lIGZpcnN0P1xuICAgICAgaWYgKHRoaXMucmVzdW1pbmdTY2FuQXRTYW1lUG9zaXRpb24oKSkge1xuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbmRleCA9PT0gdGhpcy5sYXN0SW5kZXgpIDsgZWxzZSB7IC8vIHVzZSB0aGUgc2Vjb25kIG1hdGNoZXIgcmVzdWx0XG4gICAgICAgICAgY29uc3QgbTIgPSB0aGlzLmdldE1hdGNoZXIoMCk7XG4gICAgICAgICAgbTIubGFzdEluZGV4ID0gdGhpcy5sYXN0SW5kZXggKyAxO1xuICAgICAgICAgIHJlc3VsdCA9IG0yLmV4ZWMocyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICB0aGlzLnJlZ2V4SW5kZXggKz0gcmVzdWx0LnBvc2l0aW9uICsgMTtcbiAgICAgICAgaWYgKHRoaXMucmVnZXhJbmRleCA9PT0gdGhpcy5jb3VudCkge1xuICAgICAgICAgIC8vIHdyYXAtYXJvdW5kIHRvIGNvbnNpZGVyaW5nIGFsbCBtYXRjaGVzIGFnYWluXG4gICAgICAgICAgdGhpcy5jb25zaWRlckFsbCgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgbW9kZSwgYnVpbGRzIGEgaHVnZSBSZXN1bWFibGVNdWx0aVJlZ2V4IHRoYXQgY2FuIGJlIHVzZWQgdG8gd2Fsa1xuICAgKiB0aGUgY29udGVudCBhbmQgZmluZCBtYXRjaGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZVxuICAgKiBAcmV0dXJucyB7UmVzdW1hYmxlTXVsdGlSZWdleH1cbiAgICovXG4gIGZ1bmN0aW9uIGJ1aWxkTW9kZVJlZ2V4KG1vZGUpIHtcbiAgICBjb25zdCBtbSA9IG5ldyBSZXN1bWFibGVNdWx0aVJlZ2V4KCk7XG5cbiAgICBtb2RlLmNvbnRhaW5zLmZvckVhY2godGVybSA9PiBtbS5hZGRSdWxlKHRlcm0uYmVnaW4sIHsgcnVsZTogdGVybSwgdHlwZTogXCJiZWdpblwiIH0pKTtcblxuICAgIGlmIChtb2RlLnRlcm1pbmF0b3JFbmQpIHtcbiAgICAgIG1tLmFkZFJ1bGUobW9kZS50ZXJtaW5hdG9yRW5kLCB7IHR5cGU6IFwiZW5kXCIgfSk7XG4gICAgfVxuICAgIGlmIChtb2RlLmlsbGVnYWwpIHtcbiAgICAgIG1tLmFkZFJ1bGUobW9kZS5pbGxlZ2FsLCB7IHR5cGU6IFwiaWxsZWdhbFwiIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtbTtcbiAgfVxuXG4gIC8qKiBza2lwIHZzIGFib3J0IHZzIGlnbm9yZVxuICAgKlxuICAgKiBAc2tpcCAgIC0gVGhlIG1vZGUgaXMgc3RpbGwgZW50ZXJlZCBhbmQgZXhpdGVkIG5vcm1hbGx5IChhbmQgY29udGFpbnMgcnVsZXMgYXBwbHkpLFxuICAgKiAgICAgICAgICAgYnV0IGFsbCBjb250ZW50IGlzIGhlbGQgYW5kIGFkZGVkIHRvIHRoZSBwYXJlbnQgYnVmZmVyIHJhdGhlciB0aGFuIGJlaW5nXG4gICAqICAgICAgICAgICBvdXRwdXQgd2hlbiB0aGUgbW9kZSBlbmRzLiAgTW9zdGx5IHVzZWQgd2l0aCBgc3VibGFuZ3VhZ2VgIHRvIGJ1aWxkIHVwXG4gICAqICAgICAgICAgICBhIHNpbmdsZSBsYXJnZSBidWZmZXIgdGhhbiBjYW4gYmUgcGFyc2VkIGJ5IHN1Ymxhbmd1YWdlLlxuICAgKlxuICAgKiAgICAgICAgICAgICAtIFRoZSBtb2RlIGJlZ2luIGFuZHMgZW5kcyBub3JtYWxseS5cbiAgICogICAgICAgICAgICAgLSBDb250ZW50IG1hdGNoZWQgaXMgYWRkZWQgdG8gdGhlIHBhcmVudCBtb2RlIGJ1ZmZlci5cbiAgICogICAgICAgICAgICAgLSBUaGUgcGFyc2VyIGN1cnNvciBpcyBtb3ZlZCBmb3J3YXJkIG5vcm1hbGx5LlxuICAgKlxuICAgKiBAYWJvcnQgIC0gQSBoYWNrIHBsYWNlaG9sZGVyIHVudGlsIHdlIGhhdmUgaWdub3JlLiAgQWJvcnRzIHRoZSBtb2RlIChhcyBpZiBpdFxuICAgKiAgICAgICAgICAgbmV2ZXIgbWF0Y2hlZCkgYnV0IERPRVMgTk9UIGNvbnRpbnVlIHRvIG1hdGNoIHN1YnNlcXVlbnQgYGNvbnRhaW5zYFxuICAgKiAgICAgICAgICAgbW9kZXMuICBBYm9ydCBpcyBiYWQvc3Vib3B0aW1hbCBiZWNhdXNlIGl0IGNhbiByZXN1bHQgaW4gbW9kZXNcbiAgICogICAgICAgICAgIGZhcnRoZXIgZG93biBub3QgZ2V0dGluZyBhcHBsaWVkIGJlY2F1c2UgYW4gZWFybGllciBydWxlIGVhdHMgdGhlXG4gICAqICAgICAgICAgICBjb250ZW50IGJ1dCB0aGVuIGFib3J0cy5cbiAgICpcbiAgICogICAgICAgICAgICAgLSBUaGUgbW9kZSBkb2VzIG5vdCBiZWdpbi5cbiAgICogICAgICAgICAgICAgLSBDb250ZW50IG1hdGNoZWQgYnkgYGJlZ2luYCBpcyBhZGRlZCB0byB0aGUgbW9kZSBidWZmZXIuXG4gICAqICAgICAgICAgICAgIC0gVGhlIHBhcnNlciBjdXJzb3IgaXMgbW92ZWQgZm9yd2FyZCBhY2NvcmRpbmdseS5cbiAgICpcbiAgICogQGlnbm9yZSAtIElnbm9yZXMgdGhlIG1vZGUgKGFzIGlmIGl0IG5ldmVyIG1hdGNoZWQpIGFuZCBjb250aW51ZXMgdG8gbWF0Y2ggYW55XG4gICAqICAgICAgICAgICBzdWJzZXF1ZW50IGBjb250YWluc2AgbW9kZXMuICBJZ25vcmUgaXNuJ3QgdGVjaG5pY2FsbHkgcG9zc2libGUgd2l0aFxuICAgKiAgICAgICAgICAgdGhlIGN1cnJlbnQgcGFyc2VyIGltcGxlbWVudGF0aW9uLlxuICAgKlxuICAgKiAgICAgICAgICAgICAtIFRoZSBtb2RlIGRvZXMgbm90IGJlZ2luLlxuICAgKiAgICAgICAgICAgICAtIENvbnRlbnQgbWF0Y2hlZCBieSBgYmVnaW5gIGlzIGlnbm9yZWQuXG4gICAqICAgICAgICAgICAgIC0gVGhlIHBhcnNlciBjdXJzb3IgaXMgbm90IG1vdmVkIGZvcndhcmQuXG4gICAqL1xuXG4gIC8qKlxuICAgKiBDb21waWxlcyBhbiBpbmRpdmlkdWFsIG1vZGVcbiAgICpcbiAgICogVGhpcyBjYW4gcmFpc2UgYW4gZXJyb3IgaWYgdGhlIG1vZGUgY29udGFpbnMgY2VydGFpbiBkZXRlY3RhYmxlIGtub3duIGxvZ2ljXG4gICAqIGlzc3Vlcy5cbiAgICogQHBhcmFtIHtNb2RlfSBtb2RlXG4gICAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlIHwgbnVsbH0gW3BhcmVudF1cbiAgICogQHJldHVybnMge0NvbXBpbGVkTW9kZSB8IG5ldmVyfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGlsZU1vZGUobW9kZSwgcGFyZW50KSB7XG4gICAgY29uc3QgY21vZGUgPSAvKiogQHR5cGUgQ29tcGlsZWRNb2RlICovIChtb2RlKTtcbiAgICBpZiAobW9kZS5pc0NvbXBpbGVkKSByZXR1cm4gY21vZGU7XG5cbiAgICBbXG4gICAgICBzY29wZUNsYXNzTmFtZSxcbiAgICAgIC8vIGRvIHRoaXMgZWFybHkgc28gY29tcGlsZXIgZXh0ZW5zaW9ucyBnZW5lcmFsbHkgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dFxuICAgICAgLy8gdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gbWF0Y2gvYmVnaW5cbiAgICAgIGNvbXBpbGVNYXRjaCxcbiAgICAgIE11bHRpQ2xhc3MsXG4gICAgICBiZWZvcmVNYXRjaEV4dFxuICAgIF0uZm9yRWFjaChleHQgPT4gZXh0KG1vZGUsIHBhcmVudCkpO1xuXG4gICAgbGFuZ3VhZ2UuY29tcGlsZXJFeHRlbnNpb25zLmZvckVhY2goZXh0ID0+IGV4dChtb2RlLCBwYXJlbnQpKTtcblxuICAgIC8vIF9fYmVmb3JlQmVnaW4gaXMgY29uc2lkZXJlZCBwcml2YXRlIEFQSSwgaW50ZXJuYWwgdXNlIG9ubHlcbiAgICBtb2RlLl9fYmVmb3JlQmVnaW4gPSBudWxsO1xuXG4gICAgW1xuICAgICAgYmVnaW5LZXl3b3JkcyxcbiAgICAgIC8vIGRvIHRoaXMgbGF0ZXIgc28gY29tcGlsZXIgZXh0ZW5zaW9ucyB0aGF0IGNvbWUgZWFybGllciBoYXZlIGFjY2VzcyB0byB0aGVcbiAgICAgIC8vIHJhdyBhcnJheSBpZiB0aGV5IHdhbnRlZCB0byBwZXJoYXBzIG1hbmlwdWxhdGUgaXQsIGV0Yy5cbiAgICAgIGNvbXBpbGVJbGxlZ2FsLFxuICAgICAgLy8gZGVmYXVsdCB0byAxIHJlbGV2YW5jZSBpZiBub3Qgc3BlY2lmaWVkXG4gICAgICBjb21waWxlUmVsZXZhbmNlXG4gICAgXS5mb3JFYWNoKGV4dCA9PiBleHQobW9kZSwgcGFyZW50KSk7XG5cbiAgICBtb2RlLmlzQ29tcGlsZWQgPSB0cnVlO1xuXG4gICAgbGV0IGtleXdvcmRQYXR0ZXJuID0gbnVsbDtcbiAgICBpZiAodHlwZW9mIG1vZGUua2V5d29yZHMgPT09IFwib2JqZWN0XCIgJiYgbW9kZS5rZXl3b3Jkcy4kcGF0dGVybikge1xuICAgICAgLy8gd2UgbmVlZCBhIGNvcHkgYmVjYXVzZSBrZXl3b3JkcyBtaWdodCBiZSBjb21waWxlZCBtdWx0aXBsZSB0aW1lc1xuICAgICAgLy8gc28gd2UgY2FuJ3QgZ28gZGVsZXRpbmcgJHBhdHRlcm4gZnJvbSB0aGUgb3JpZ2luYWwgb24gdGhlIGZpcnN0XG4gICAgICAvLyBwYXNzXG4gICAgICBtb2RlLmtleXdvcmRzID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kZS5rZXl3b3Jkcyk7XG4gICAgICBrZXl3b3JkUGF0dGVybiA9IG1vZGUua2V5d29yZHMuJHBhdHRlcm47XG4gICAgICBkZWxldGUgbW9kZS5rZXl3b3Jkcy4kcGF0dGVybjtcbiAgICB9XG4gICAga2V5d29yZFBhdHRlcm4gPSBrZXl3b3JkUGF0dGVybiB8fCAvXFx3Ky87XG5cbiAgICBpZiAobW9kZS5rZXl3b3Jkcykge1xuICAgICAgbW9kZS5rZXl3b3JkcyA9IGNvbXBpbGVLZXl3b3Jkcyhtb2RlLmtleXdvcmRzLCBsYW5ndWFnZS5jYXNlX2luc2Vuc2l0aXZlKTtcbiAgICB9XG5cbiAgICBjbW9kZS5rZXl3b3JkUGF0dGVyblJlID0gbGFuZ1JlKGtleXdvcmRQYXR0ZXJuLCB0cnVlKTtcblxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGlmICghbW9kZS5iZWdpbikgbW9kZS5iZWdpbiA9IC9cXEJ8XFxiLztcbiAgICAgIGNtb2RlLmJlZ2luUmUgPSBsYW5nUmUoY21vZGUuYmVnaW4pO1xuICAgICAgaWYgKCFtb2RlLmVuZCAmJiAhbW9kZS5lbmRzV2l0aFBhcmVudCkgbW9kZS5lbmQgPSAvXFxCfFxcYi87XG4gICAgICBpZiAobW9kZS5lbmQpIGNtb2RlLmVuZFJlID0gbGFuZ1JlKGNtb2RlLmVuZCk7XG4gICAgICBjbW9kZS50ZXJtaW5hdG9yRW5kID0gc291cmNlKGNtb2RlLmVuZCkgfHwgJyc7XG4gICAgICBpZiAobW9kZS5lbmRzV2l0aFBhcmVudCAmJiBwYXJlbnQudGVybWluYXRvckVuZCkge1xuICAgICAgICBjbW9kZS50ZXJtaW5hdG9yRW5kICs9IChtb2RlLmVuZCA/ICd8JyA6ICcnKSArIHBhcmVudC50ZXJtaW5hdG9yRW5kO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobW9kZS5pbGxlZ2FsKSBjbW9kZS5pbGxlZ2FsUmUgPSBsYW5nUmUoLyoqIEB0eXBlIHtSZWdFeHAgfCBzdHJpbmd9ICovIChtb2RlLmlsbGVnYWwpKTtcbiAgICBpZiAoIW1vZGUuY29udGFpbnMpIG1vZGUuY29udGFpbnMgPSBbXTtcblxuICAgIG1vZGUuY29udGFpbnMgPSBbXS5jb25jYXQoLi4ubW9kZS5jb250YWlucy5tYXAoZnVuY3Rpb24oYykge1xuICAgICAgcmV0dXJuIGV4cGFuZE9yQ2xvbmVNb2RlKGMgPT09ICdzZWxmJyA/IG1vZGUgOiBjKTtcbiAgICB9KSk7XG4gICAgbW9kZS5jb250YWlucy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgY29tcGlsZU1vZGUoLyoqIEB0eXBlIE1vZGUgKi8gKGMpLCBjbW9kZSk7IH0pO1xuXG4gICAgaWYgKG1vZGUuc3RhcnRzKSB7XG4gICAgICBjb21waWxlTW9kZShtb2RlLnN0YXJ0cywgcGFyZW50KTtcbiAgICB9XG5cbiAgICBjbW9kZS5tYXRjaGVyID0gYnVpbGRNb2RlUmVnZXgoY21vZGUpO1xuICAgIHJldHVybiBjbW9kZTtcbiAgfVxuXG4gIGlmICghbGFuZ3VhZ2UuY29tcGlsZXJFeHRlbnNpb25zKSBsYW5ndWFnZS5jb21waWxlckV4dGVuc2lvbnMgPSBbXTtcblxuICAvLyBzZWxmIGlzIG5vdCB2YWxpZCBhdCB0aGUgdG9wLWxldmVsXG4gIGlmIChsYW5ndWFnZS5jb250YWlucyAmJiBsYW5ndWFnZS5jb250YWlucy5pbmNsdWRlcygnc2VsZicpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRVJSOiBjb250YWlucyBgc2VsZmAgaXMgbm90IHN1cHBvcnRlZCBhdCB0aGUgdG9wLWxldmVsIG9mIGEgbGFuZ3VhZ2UuICBTZWUgZG9jdW1lbnRhdGlvbi5cIik7XG4gIH1cblxuICAvLyB3ZSBuZWVkIGEgbnVsbCBvYmplY3QsIHdoaWNoIGluaGVyaXQgd2lsbCBndWFyYW50ZWVcbiAgbGFuZ3VhZ2UuY2xhc3NOYW1lQWxpYXNlcyA9IGluaGVyaXQkMShsYW5ndWFnZS5jbGFzc05hbWVBbGlhc2VzIHx8IHt9KTtcblxuICByZXR1cm4gY29tcGlsZU1vZGUoLyoqIEB0eXBlIE1vZGUgKi8gKGxhbmd1YWdlKSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIG1vZGUgaGFzIGEgZGVwZW5kZW5jeSBvbiBpdCdzIHBhcmVudCBvciBub3RcbiAqXG4gKiBJZiBhIG1vZGUgZG9lcyBoYXZlIGEgcGFyZW50IGRlcGVuZGVuY3kgdGhlbiBvZnRlbiB3ZSBuZWVkIHRvIGNsb25lIGl0IGlmXG4gKiBpdCdzIHVzZWQgaW4gbXVsdGlwbGUgcGxhY2VzIHNvIHRoYXQgZWFjaCBjb3B5IHBvaW50cyB0byB0aGUgY29ycmVjdCBwYXJlbnQsXG4gKiB3aGVyZS1hcyBtb2RlcyB3aXRob3V0IGEgcGFyZW50IGNhbiBvZnRlbiBzYWZlbHkgYmUgcmUtdXNlZCBhdCB0aGUgYm90dG9tIG9mXG4gKiBhIG1vZGUgY2hhaW4uXG4gKlxuICogQHBhcmFtIHtNb2RlIHwgbnVsbH0gbW9kZVxuICogQHJldHVybnMge2Jvb2xlYW59IC0gaXMgdGhlcmUgYSBkZXBlbmRlbmN5IG9uIHRoZSBwYXJlbnQ/XG4gKiAqL1xuZnVuY3Rpb24gZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUpIHtcbiAgaWYgKCFtb2RlKSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIG1vZGUuZW5kc1dpdGhQYXJlbnQgfHwgZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUuc3RhcnRzKTtcbn1cblxuLyoqXG4gKiBFeHBhbmRzIGEgbW9kZSBvciBjbG9uZXMgaXQgaWYgbmVjZXNzYXJ5XG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgZm9yIG1vZGVzIHdpdGggcGFyZW50YWwgZGVwZW5kZW5jZWlzIChzZWUgbm90ZXMgb25cbiAqIGBkZXBlbmRlbmN5T25QYXJlbnRgKSBhbmQgZm9yIG5vZGVzIHRoYXQgaGF2ZSBgdmFyaWFudHNgIC0gd2hpY2ggbXVzdCB0aGVuIGJlXG4gKiBleHBsb2RlZCBpbnRvIHRoZWlyIG93biBpbmRpdmlkdWFsIG1vZGVzIGF0IGNvbXBpbGUgdGltZS5cbiAqXG4gKiBAcGFyYW0ge01vZGV9IG1vZGVcbiAqIEByZXR1cm5zIHtNb2RlIHwgTW9kZVtdfVxuICogKi9cbmZ1bmN0aW9uIGV4cGFuZE9yQ2xvbmVNb2RlKG1vZGUpIHtcbiAgaWYgKG1vZGUudmFyaWFudHMgJiYgIW1vZGUuY2FjaGVkVmFyaWFudHMpIHtcbiAgICBtb2RlLmNhY2hlZFZhcmlhbnRzID0gbW9kZS52YXJpYW50cy5tYXAoZnVuY3Rpb24odmFyaWFudCkge1xuICAgICAgcmV0dXJuIGluaGVyaXQkMShtb2RlLCB7IHZhcmlhbnRzOiBudWxsIH0sIHZhcmlhbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gRVhQQU5EXG4gIC8vIGlmIHdlIGhhdmUgdmFyaWFudHMgdGhlbiBlc3NlbnRpYWxseSBcInJlcGxhY2VcIiB0aGUgbW9kZSB3aXRoIHRoZSB2YXJpYW50c1xuICAvLyB0aGlzIGhhcHBlbnMgaW4gY29tcGlsZU1vZGUsIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb21cbiAgaWYgKG1vZGUuY2FjaGVkVmFyaWFudHMpIHtcbiAgICByZXR1cm4gbW9kZS5jYWNoZWRWYXJpYW50cztcbiAgfVxuXG4gIC8vIENMT05FXG4gIC8vIGlmIHdlIGhhdmUgZGVwZW5kZW5jaWVzIG9uIHBhcmVudHMgdGhlbiB3ZSBuZWVkIGEgdW5pcXVlXG4gIC8vIGluc3RhbmNlIG9mIG91cnNlbHZlcywgc28gd2UgY2FuIGJlIHJldXNlZCB3aXRoIG1hbnlcbiAgLy8gZGlmZmVyZW50IHBhcmVudHMgd2l0aG91dCBpc3N1ZVxuICBpZiAoZGVwZW5kZW5jeU9uUGFyZW50KG1vZGUpKSB7XG4gICAgcmV0dXJuIGluaGVyaXQkMShtb2RlLCB7IHN0YXJ0czogbW9kZS5zdGFydHMgPyBpbmhlcml0JDEobW9kZS5zdGFydHMpIDogbnVsbCB9KTtcbiAgfVxuXG4gIGlmIChPYmplY3QuaXNGcm96ZW4obW9kZSkpIHtcbiAgICByZXR1cm4gaW5oZXJpdCQxKG1vZGUpO1xuICB9XG5cbiAgLy8gbm8gc3BlY2lhbCBkZXBlbmRlbmN5IGlzc3VlcywganVzdCByZXR1cm4gb3Vyc2VsdmVzXG4gIHJldHVybiBtb2RlO1xufVxuXG52YXIgdmVyc2lvbiA9IFwiMTEuNy4wXCI7XG5cbmNsYXNzIEhUTUxJbmplY3Rpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IocmVhc29uLCBodG1sKSB7XG4gICAgc3VwZXIocmVhc29uKTtcbiAgICB0aGlzLm5hbWUgPSBcIkhUTUxJbmplY3Rpb25FcnJvclwiO1xuICAgIHRoaXMuaHRtbCA9IGh0bWw7XG4gIH1cbn1cblxuLypcblN5bnRheCBoaWdobGlnaHRpbmcgd2l0aCBsYW5ndWFnZSBhdXRvZGV0ZWN0aW9uLlxuaHR0cHM6Ly9oaWdobGlnaHRqcy5vcmcvXG4qL1xuXG4vKipcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLk1vZGV9IE1vZGVcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkNvbXBpbGVkTW9kZX0gQ29tcGlsZWRNb2RlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5Db21waWxlZFNjb3BlfSBDb21waWxlZFNjb3BlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5MYW5ndWFnZX0gTGFuZ3VhZ2VcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkhMSlNBcGl9IEhMSlNBcGlcbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLkhMSlNQbHVnaW59IEhMSlNQbHVnaW5cbkB0eXBlZGVmIHtpbXBvcnQoJ2hpZ2hsaWdodC5qcycpLlBsdWdpbkV2ZW50fSBQbHVnaW5FdmVudFxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuSExKU09wdGlvbnN9IEhMSlNPcHRpb25zXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5MYW5ndWFnZUZufSBMYW5ndWFnZUZuXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5IaWdobGlnaHRlZEhUTUxFbGVtZW50fSBIaWdobGlnaHRlZEhUTUxFbGVtZW50XG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMnKS5CZWZvcmVIaWdobGlnaHRDb250ZXh0fSBCZWZvcmVIaWdobGlnaHRDb250ZXh0XG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMvcHJpdmF0ZScpLk1hdGNoVHlwZX0gTWF0Y2hUeXBlXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMvcHJpdmF0ZScpLktleXdvcmREYXRhfSBLZXl3b3JkRGF0YVxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzL3ByaXZhdGUnKS5FbmhhbmNlZE1hdGNofSBFbmhhbmNlZE1hdGNoXG5AdHlwZWRlZiB7aW1wb3J0KCdoaWdobGlnaHQuanMvcHJpdmF0ZScpLkFubm90YXRlZEVycm9yfSBBbm5vdGF0ZWRFcnJvclxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuQXV0b0hpZ2hsaWdodFJlc3VsdH0gQXV0b0hpZ2hsaWdodFJlc3VsdFxuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuSGlnaGxpZ2h0T3B0aW9uc30gSGlnaGxpZ2h0T3B0aW9uc1xuQHR5cGVkZWYge2ltcG9ydCgnaGlnaGxpZ2h0LmpzJykuSGlnaGxpZ2h0UmVzdWx0fSBIaWdobGlnaHRSZXN1bHRcbiovXG5cblxuY29uc3QgZXNjYXBlID0gZXNjYXBlSFRNTDtcbmNvbnN0IGluaGVyaXQgPSBpbmhlcml0JDE7XG5jb25zdCBOT19NQVRDSCA9IFN5bWJvbChcIm5vbWF0Y2hcIik7XG5jb25zdCBNQVhfS0VZV09SRF9ISVRTID0gNztcblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gaGxqcyAtIG9iamVjdCB0aGF0IGlzIGV4dGVuZGVkIChsZWdhY3kpXG4gKiBAcmV0dXJucyB7SExKU0FwaX1cbiAqL1xuY29uc3QgSExKUyA9IGZ1bmN0aW9uKGhsanMpIHtcbiAgLy8gR2xvYmFsIGludGVybmFsIHZhcmlhYmxlcyB1c2VkIHdpdGhpbiB0aGUgaGlnaGxpZ2h0LmpzIGxpYnJhcnkuXG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgTGFuZ3VhZ2U+fSAqL1xuICBjb25zdCBsYW5ndWFnZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZz59ICovXG4gIGNvbnN0IGFsaWFzZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvKiogQHR5cGUge0hMSlNQbHVnaW5bXX0gKi9cbiAgY29uc3QgcGx1Z2lucyA9IFtdO1xuXG4gIC8vIHNhZmUvcHJvZHVjdGlvbiBtb2RlIC0gc3dhbGxvd3MgbW9yZSBlcnJvcnMsIHRyaWVzIHRvIGtlZXAgcnVubmluZ1xuICAvLyBldmVuIGlmIGEgc2luZ2xlIHN5bnRheCBvciBwYXJzZSBoaXRzIGEgZmF0YWwgZXJyb3JcbiAgbGV0IFNBRkVfTU9ERSA9IHRydWU7XG4gIGNvbnN0IExBTkdVQUdFX05PVF9GT1VORCA9IFwiQ291bGQgbm90IGZpbmQgdGhlIGxhbmd1YWdlICd7fScsIGRpZCB5b3UgZm9yZ2V0IHRvIGxvYWQvaW5jbHVkZSBhIGxhbmd1YWdlIG1vZHVsZT9cIjtcbiAgLyoqIEB0eXBlIHtMYW5ndWFnZX0gKi9cbiAgY29uc3QgUExBSU5URVhUX0xBTkdVQUdFID0geyBkaXNhYmxlQXV0b2RldGVjdDogdHJ1ZSwgbmFtZTogJ1BsYWluIHRleHQnLCBjb250YWluczogW10gfTtcblxuICAvLyBHbG9iYWwgb3B0aW9ucyB1c2VkIHdoZW4gd2l0aGluIGV4dGVybmFsIEFQSXMuIFRoaXMgaXMgbW9kaWZpZWQgd2hlblxuICAvLyBjYWxsaW5nIHRoZSBgaGxqcy5jb25maWd1cmVgIGZ1bmN0aW9uLlxuICAvKiogQHR5cGUgSExKU09wdGlvbnMgKi9cbiAgbGV0IG9wdGlvbnMgPSB7XG4gICAgaWdub3JlVW5lc2NhcGVkSFRNTDogZmFsc2UsXG4gICAgdGhyb3dVbmVzY2FwZWRIVE1MOiBmYWxzZSxcbiAgICBub0hpZ2hsaWdodFJlOiAvXihuby0/aGlnaGxpZ2h0KSQvaSxcbiAgICBsYW5ndWFnZURldGVjdFJlOiAvXFxibGFuZyg/OnVhZ2UpPy0oW1xcdy1dKylcXGIvaSxcbiAgICBjbGFzc1ByZWZpeDogJ2hsanMtJyxcbiAgICBjc3NTZWxlY3RvcjogJ3ByZSBjb2RlJyxcbiAgICBsYW5ndWFnZXM6IG51bGwsXG4gICAgLy8gYmV0YSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHN1YmplY3QgdG8gY2hhbmdlLCB3ZWxjb21lIHRvIGRpc2N1c3NcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8xMDg2XG4gICAgX19lbWl0dGVyOiBUb2tlblRyZWVFbWl0dGVyXG4gIH07XG5cbiAgLyogVXRpbGl0eSBmdW5jdGlvbnMgKi9cblxuICAvKipcbiAgICogVGVzdHMgYSBsYW5ndWFnZSBuYW1lIHRvIHNlZSBpZiBoaWdobGlnaHRpbmcgc2hvdWxkIGJlIHNraXBwZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlTmFtZVxuICAgKi9cbiAgZnVuY3Rpb24gc2hvdWxkTm90SGlnaGxpZ2h0KGxhbmd1YWdlTmFtZSkge1xuICAgIHJldHVybiBvcHRpb25zLm5vSGlnaGxpZ2h0UmUudGVzdChsYW5ndWFnZU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7SGlnaGxpZ2h0ZWRIVE1MRWxlbWVudH0gYmxvY2sgLSB0aGUgSFRNTCBlbGVtZW50IHRvIGRldGVybWluZSBsYW5ndWFnZSBmb3JcbiAgICovXG4gIGZ1bmN0aW9uIGJsb2NrTGFuZ3VhZ2UoYmxvY2spIHtcbiAgICBsZXQgY2xhc3NlcyA9IGJsb2NrLmNsYXNzTmFtZSArICcgJztcblxuICAgIGNsYXNzZXMgKz0gYmxvY2sucGFyZW50Tm9kZSA/IGJsb2NrLnBhcmVudE5vZGUuY2xhc3NOYW1lIDogJyc7XG5cbiAgICAvLyBsYW5ndWFnZS0qIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBub24tcHJlZml4ZWQgY2xhc3MgbmFtZXMuXG4gICAgY29uc3QgbWF0Y2ggPSBvcHRpb25zLmxhbmd1YWdlRGV0ZWN0UmUuZXhlYyhjbGFzc2VzKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UobWF0Y2hbMV0pO1xuICAgICAgaWYgKCFsYW5ndWFnZSkge1xuICAgICAgICB3YXJuKExBTkdVQUdFX05PVF9GT1VORC5yZXBsYWNlKFwie31cIiwgbWF0Y2hbMV0pKTtcbiAgICAgICAgd2FybihcIkZhbGxpbmcgYmFjayB0byBuby1oaWdobGlnaHQgbW9kZSBmb3IgdGhpcyBibG9jay5cIiwgYmxvY2spO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxhbmd1YWdlID8gbWF0Y2hbMV0gOiAnbm8taGlnaGxpZ2h0JztcbiAgICB9XG5cbiAgICByZXR1cm4gY2xhc3Nlc1xuICAgICAgLnNwbGl0KC9cXHMrLylcbiAgICAgIC5maW5kKChfY2xhc3MpID0+IHNob3VsZE5vdEhpZ2hsaWdodChfY2xhc3MpIHx8IGdldExhbmd1YWdlKF9jbGFzcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcmUgaGlnaGxpZ2h0aW5nIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBPTEQgQVBJXG4gICAqIGhpZ2hsaWdodChsYW5nLCBjb2RlLCBpZ25vcmVJbGxlZ2FscywgY29udGludWF0aW9uKVxuICAgKlxuICAgKiBORVcgQVBJXG4gICAqIGhpZ2hsaWdodChjb2RlLCB7bGFuZywgaWdub3JlSWxsZWdhbHN9KVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29kZU9yTGFuZ3VhZ2VOYW1lIC0gdGhlIGxhbmd1YWdlIHRvIHVzZSBmb3IgaGlnaGxpZ2h0aW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgSGlnaGxpZ2h0T3B0aW9uc30gb3B0aW9uc09yQ29kZSAtIHRoZSBjb2RlIHRvIGhpZ2hsaWdodFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpZ25vcmVJbGxlZ2Fsc10gLSB3aGV0aGVyIHRvIGlnbm9yZSBpbGxlZ2FsIG1hdGNoZXMsIGRlZmF1bHQgaXMgdG8gYmFpbFxuICAgKlxuICAgKiBAcmV0dXJucyB7SGlnaGxpZ2h0UmVzdWx0fSBSZXN1bHQgLSBhbiBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSByZXN1bHRcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IGxhbmd1YWdlIC0gdGhlIGxhbmd1YWdlIG5hbWVcbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IHJlbGV2YW5jZSAtIHRoZSByZWxldmFuY2Ugc2NvcmVcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IHZhbHVlIC0gdGhlIGhpZ2hsaWdodGVkIEhUTUwgY29kZVxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gY29kZSAtIHRoZSBvcmlnaW5hbCByYXcgY29kZVxuICAgKiBAcHJvcGVydHkge0NvbXBpbGVkTW9kZX0gdG9wIC0gdG9wIG9mIHRoZSBjdXJyZW50IG1vZGUgc3RhY2tcbiAgICogQHByb3BlcnR5IHtib29sZWFufSBpbGxlZ2FsIC0gaW5kaWNhdGVzIHdoZXRoZXIgYW55IGlsbGVnYWwgbWF0Y2hlcyB3ZXJlIGZvdW5kXG4gICovXG4gIGZ1bmN0aW9uIGhpZ2hsaWdodChjb2RlT3JMYW5ndWFnZU5hbWUsIG9wdGlvbnNPckNvZGUsIGlnbm9yZUlsbGVnYWxzKSB7XG4gICAgbGV0IGNvZGUgPSBcIlwiO1xuICAgIGxldCBsYW5ndWFnZU5hbWUgPSBcIlwiO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uc09yQ29kZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgY29kZSA9IGNvZGVPckxhbmd1YWdlTmFtZTtcbiAgICAgIGlnbm9yZUlsbGVnYWxzID0gb3B0aW9uc09yQ29kZS5pZ25vcmVJbGxlZ2FscztcbiAgICAgIGxhbmd1YWdlTmFtZSA9IG9wdGlvbnNPckNvZGUubGFuZ3VhZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG9sZCBBUElcbiAgICAgIGRlcHJlY2F0ZWQoXCIxMC43LjBcIiwgXCJoaWdobGlnaHQobGFuZywgY29kZSwgLi4uYXJncykgaGFzIGJlZW4gZGVwcmVjYXRlZC5cIik7XG4gICAgICBkZXByZWNhdGVkKFwiMTAuNy4wXCIsIFwiUGxlYXNlIHVzZSBoaWdobGlnaHQoY29kZSwgb3B0aW9ucykgaW5zdGVhZC5cXG5odHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0LmpzL2lzc3Vlcy8yMjc3XCIpO1xuICAgICAgbGFuZ3VhZ2VOYW1lID0gY29kZU9yTGFuZ3VhZ2VOYW1lO1xuICAgICAgY29kZSA9IG9wdGlvbnNPckNvZGU7XG4gICAgfVxuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMzE0OVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZmluZWRcbiAgICBpZiAoaWdub3JlSWxsZWdhbHMgPT09IHVuZGVmaW5lZCkgeyBpZ25vcmVJbGxlZ2FscyA9IHRydWU7IH1cblxuICAgIC8qKiBAdHlwZSB7QmVmb3JlSGlnaGxpZ2h0Q29udGV4dH0gKi9cbiAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgY29kZSxcbiAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZU5hbWVcbiAgICB9O1xuICAgIC8vIHRoZSBwbHVnaW4gY2FuIGNoYW5nZSB0aGUgZGVzaXJlZCBsYW5ndWFnZSBvciB0aGUgY29kZSB0byBiZSBoaWdobGlnaHRlZFxuICAgIC8vIGp1c3QgYmUgY2hhbmdpbmcgdGhlIG9iamVjdCBpdCB3YXMgcGFzc2VkXG4gICAgZmlyZShcImJlZm9yZTpoaWdobGlnaHRcIiwgY29udGV4dCk7XG5cbiAgICAvLyBhIGJlZm9yZSBwbHVnaW4gY2FuIHVzdXJwIHRoZSByZXN1bHQgY29tcGxldGVseSBieSBwcm92aWRpbmcgaXQncyBvd25cbiAgICAvLyBpbiB3aGljaCBjYXNlIHdlIGRvbid0IGV2ZW4gbmVlZCB0byBjYWxsIGhpZ2hsaWdodFxuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnRleHQucmVzdWx0XG4gICAgICA/IGNvbnRleHQucmVzdWx0XG4gICAgICA6IF9oaWdobGlnaHQoY29udGV4dC5sYW5ndWFnZSwgY29udGV4dC5jb2RlLCBpZ25vcmVJbGxlZ2Fscyk7XG5cbiAgICByZXN1bHQuY29kZSA9IGNvbnRleHQuY29kZTtcbiAgICAvLyB0aGUgcGx1Z2luIGNhbiBjaGFuZ2UgYW55dGhpbmcgaW4gcmVzdWx0IHRvIHN1aXRlIGl0XG4gICAgZmlyZShcImFmdGVyOmhpZ2hsaWdodFwiLCByZXN1bHQpO1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBwcml2YXRlIGhpZ2hsaWdodCB0aGF0J3MgdXNlZCBpbnRlcm5hbGx5IGFuZCBkb2VzIG5vdCBmaXJlIGNhbGxiYWNrc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGFuZ3VhZ2VOYW1lIC0gdGhlIGxhbmd1YWdlIHRvIHVzZSBmb3IgaGlnaGxpZ2h0aW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlVG9IaWdobGlnaHQgLSB0aGUgY29kZSB0byBoaWdobGlnaHRcbiAgICogQHBhcmFtIHtib29sZWFuP30gW2lnbm9yZUlsbGVnYWxzXSAtIHdoZXRoZXIgdG8gaWdub3JlIGlsbGVnYWwgbWF0Y2hlcywgZGVmYXVsdCBpcyB0byBiYWlsXG4gICAqIEBwYXJhbSB7Q29tcGlsZWRNb2RlP30gW2NvbnRpbnVhdGlvbl0gLSBjdXJyZW50IGNvbnRpbnVhdGlvbiBtb2RlLCBpZiBhbnlcbiAgICogQHJldHVybnMge0hpZ2hsaWdodFJlc3VsdH0gLSByZXN1bHQgb2YgdGhlIGhpZ2hsaWdodCBvcGVyYXRpb25cbiAgKi9cbiAgZnVuY3Rpb24gX2hpZ2hsaWdodChsYW5ndWFnZU5hbWUsIGNvZGVUb0hpZ2hsaWdodCwgaWdub3JlSWxsZWdhbHMsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGtleXdvcmRIaXRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybiBrZXl3b3JkIGRhdGEgaWYgYSBtYXRjaCBpcyBhIGtleXdvcmRcbiAgICAgKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZSAtIGN1cnJlbnQgbW9kZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRjaFRleHQgLSB0aGUgdGV4dHVhbCBtYXRjaFxuICAgICAqIEByZXR1cm5zIHtLZXl3b3JkRGF0YSB8IGZhbHNlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXdvcmREYXRhKG1vZGUsIG1hdGNoVGV4dCkge1xuICAgICAgcmV0dXJuIG1vZGUua2V5d29yZHNbbWF0Y2hUZXh0XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzS2V5d29yZHMoKSB7XG4gICAgICBpZiAoIXRvcC5rZXl3b3Jkcykge1xuICAgICAgICBlbWl0dGVyLmFkZFRleHQobW9kZUJ1ZmZlcik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IGxhc3RJbmRleCA9IDA7XG4gICAgICB0b3Aua2V5d29yZFBhdHRlcm5SZS5sYXN0SW5kZXggPSAwO1xuICAgICAgbGV0IG1hdGNoID0gdG9wLmtleXdvcmRQYXR0ZXJuUmUuZXhlYyhtb2RlQnVmZmVyKTtcbiAgICAgIGxldCBidWYgPSBcIlwiO1xuXG4gICAgICB3aGlsZSAobWF0Y2gpIHtcbiAgICAgICAgYnVmICs9IG1vZGVCdWZmZXIuc3Vic3RyaW5nKGxhc3RJbmRleCwgbWF0Y2guaW5kZXgpO1xuICAgICAgICBjb25zdCB3b3JkID0gbGFuZ3VhZ2UuY2FzZV9pbnNlbnNpdGl2ZSA/IG1hdGNoWzBdLnRvTG93ZXJDYXNlKCkgOiBtYXRjaFswXTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGtleXdvcmREYXRhKHRvcCwgd29yZCk7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgY29uc3QgW2tpbmQsIGtleXdvcmRSZWxldmFuY2VdID0gZGF0YTtcbiAgICAgICAgICBlbWl0dGVyLmFkZFRleHQoYnVmKTtcbiAgICAgICAgICBidWYgPSBcIlwiO1xuXG4gICAgICAgICAga2V5d29yZEhpdHNbd29yZF0gPSAoa2V5d29yZEhpdHNbd29yZF0gfHwgMCkgKyAxO1xuICAgICAgICAgIGlmIChrZXl3b3JkSGl0c1t3b3JkXSA8PSBNQVhfS0VZV09SRF9ISVRTKSByZWxldmFuY2UgKz0ga2V5d29yZFJlbGV2YW5jZTtcbiAgICAgICAgICBpZiAoa2luZC5zdGFydHNXaXRoKFwiX1wiKSkge1xuICAgICAgICAgICAgLy8gXyBpbXBsaWVkIGZvciByZWxldmFuY2Ugb25seSwgZG8gbm90IGhpZ2hsaWdodFxuICAgICAgICAgICAgLy8gYnkgYXBwbHlpbmcgYSBjbGFzcyBuYW1lXG4gICAgICAgICAgICBidWYgKz0gbWF0Y2hbMF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNzc0NsYXNzID0gbGFuZ3VhZ2UuY2xhc3NOYW1lQWxpYXNlc1traW5kXSB8fCBraW5kO1xuICAgICAgICAgICAgZW1pdHRlci5hZGRLZXl3b3JkKG1hdGNoWzBdLCBjc3NDbGFzcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1ZiArPSBtYXRjaFswXTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0SW5kZXggPSB0b3Aua2V5d29yZFBhdHRlcm5SZS5sYXN0SW5kZXg7XG4gICAgICAgIG1hdGNoID0gdG9wLmtleXdvcmRQYXR0ZXJuUmUuZXhlYyhtb2RlQnVmZmVyKTtcbiAgICAgIH1cbiAgICAgIGJ1ZiArPSBtb2RlQnVmZmVyLnN1YnN0cmluZyhsYXN0SW5kZXgpO1xuICAgICAgZW1pdHRlci5hZGRUZXh0KGJ1Zik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvY2Vzc1N1Ykxhbmd1YWdlKCkge1xuICAgICAgaWYgKG1vZGVCdWZmZXIgPT09IFwiXCIpIHJldHVybjtcbiAgICAgIC8qKiBAdHlwZSBIaWdobGlnaHRSZXN1bHQgKi9cbiAgICAgIGxldCByZXN1bHQgPSBudWxsO1xuXG4gICAgICBpZiAodHlwZW9mIHRvcC5zdWJMYW5ndWFnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKCFsYW5ndWFnZXNbdG9wLnN1Ykxhbmd1YWdlXSkge1xuICAgICAgICAgIGVtaXR0ZXIuYWRkVGV4dChtb2RlQnVmZmVyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gX2hpZ2hsaWdodCh0b3Auc3ViTGFuZ3VhZ2UsIG1vZGVCdWZmZXIsIHRydWUsIGNvbnRpbnVhdGlvbnNbdG9wLnN1Ykxhbmd1YWdlXSk7XG4gICAgICAgIGNvbnRpbnVhdGlvbnNbdG9wLnN1Ykxhbmd1YWdlXSA9IC8qKiBAdHlwZSB7Q29tcGlsZWRNb2RlfSAqLyAocmVzdWx0Ll90b3ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gaGlnaGxpZ2h0QXV0byhtb2RlQnVmZmVyLCB0b3Auc3ViTGFuZ3VhZ2UubGVuZ3RoID8gdG9wLnN1Ykxhbmd1YWdlIDogbnVsbCk7XG4gICAgICB9XG5cbiAgICAgIC8vIENvdW50aW5nIGVtYmVkZGVkIGxhbmd1YWdlIHNjb3JlIHRvd2FyZHMgdGhlIGhvc3QgbGFuZ3VhZ2UgbWF5IGJlIGRpc2FibGVkXG4gICAgICAvLyB3aXRoIHplcm9pbmcgdGhlIGNvbnRhaW5pbmcgbW9kZSByZWxldmFuY2UuIFVzZSBjYXNlIGluIHBvaW50IGlzIE1hcmtkb3duIHRoYXRcbiAgICAgIC8vIGFsbG93cyBYTUwgZXZlcnl3aGVyZSBhbmQgbWFrZXMgZXZlcnkgWE1MIHNuaXBwZXQgdG8gaGF2ZSBhIG11Y2ggbGFyZ2VyIE1hcmtkb3duXG4gICAgICAvLyBzY29yZS5cbiAgICAgIGlmICh0b3AucmVsZXZhbmNlID4gMCkge1xuICAgICAgICByZWxldmFuY2UgKz0gcmVzdWx0LnJlbGV2YW5jZTtcbiAgICAgIH1cbiAgICAgIGVtaXR0ZXIuYWRkU3VibGFuZ3VhZ2UocmVzdWx0Ll9lbWl0dGVyLCByZXN1bHQubGFuZ3VhZ2UpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NCdWZmZXIoKSB7XG4gICAgICBpZiAodG9wLnN1Ykxhbmd1YWdlICE9IG51bGwpIHtcbiAgICAgICAgcHJvY2Vzc1N1Ykxhbmd1YWdlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzS2V5d29yZHMoKTtcbiAgICAgIH1cbiAgICAgIG1vZGVCdWZmZXIgPSAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0NvbXBpbGVkU2NvcGV9IHNjb3BlXG4gICAgICogQHBhcmFtIHtSZWdFeHBNYXRjaEFycmF5fSBtYXRjaFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVtaXRNdWx0aUNsYXNzKHNjb3BlLCBtYXRjaCkge1xuICAgICAgbGV0IGkgPSAxO1xuICAgICAgY29uc3QgbWF4ID0gbWF0Y2gubGVuZ3RoIC0gMTtcbiAgICAgIHdoaWxlIChpIDw9IG1heCkge1xuICAgICAgICBpZiAoIXNjb3BlLl9lbWl0W2ldKSB7IGkrKzsgY29udGludWU7IH1cbiAgICAgICAgY29uc3Qga2xhc3MgPSBsYW5ndWFnZS5jbGFzc05hbWVBbGlhc2VzW3Njb3BlW2ldXSB8fCBzY29wZVtpXTtcbiAgICAgICAgY29uc3QgdGV4dCA9IG1hdGNoW2ldO1xuICAgICAgICBpZiAoa2xhc3MpIHtcbiAgICAgICAgICBlbWl0dGVyLmFkZEtleXdvcmQodGV4dCwga2xhc3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1vZGVCdWZmZXIgPSB0ZXh0O1xuICAgICAgICAgIHByb2Nlc3NLZXl3b3JkcygpO1xuICAgICAgICAgIG1vZGVCdWZmZXIgPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0NvbXBpbGVkTW9kZX0gbW9kZSAtIG5ldyBtb2RlIHRvIHN0YXJ0XG4gICAgICogQHBhcmFtIHtSZWdFeHBNYXRjaEFycmF5fSBtYXRjaFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0TmV3TW9kZShtb2RlLCBtYXRjaCkge1xuICAgICAgaWYgKG1vZGUuc2NvcGUgJiYgdHlwZW9mIG1vZGUuc2NvcGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZW1pdHRlci5vcGVuTm9kZShsYW5ndWFnZS5jbGFzc05hbWVBbGlhc2VzW21vZGUuc2NvcGVdIHx8IG1vZGUuc2NvcGUpO1xuICAgICAgfVxuICAgICAgaWYgKG1vZGUuYmVnaW5TY29wZSkge1xuICAgICAgICAvLyBiZWdpblNjb3BlIGp1c3Qgd3JhcHMgdGhlIGJlZ2luIG1hdGNoIGl0c2VsZiBpbiBhIHNjb3BlXG4gICAgICAgIGlmIChtb2RlLmJlZ2luU2NvcGUuX3dyYXApIHtcbiAgICAgICAgICBlbWl0dGVyLmFkZEtleXdvcmQobW9kZUJ1ZmZlciwgbGFuZ3VhZ2UuY2xhc3NOYW1lQWxpYXNlc1ttb2RlLmJlZ2luU2NvcGUuX3dyYXBdIHx8IG1vZGUuYmVnaW5TY29wZS5fd3JhcCk7XG4gICAgICAgICAgbW9kZUJ1ZmZlciA9IFwiXCI7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZS5iZWdpblNjb3BlLl9tdWx0aSkge1xuICAgICAgICAgIC8vIGF0IHRoaXMgcG9pbnQgbW9kZUJ1ZmZlciBzaG91bGQganVzdCBiZSB0aGUgbWF0Y2hcbiAgICAgICAgICBlbWl0TXVsdGlDbGFzcyhtb2RlLmJlZ2luU2NvcGUsIG1hdGNoKTtcbiAgICAgICAgICBtb2RlQnVmZmVyID0gXCJcIjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b3AgPSBPYmplY3QuY3JlYXRlKG1vZGUsIHsgcGFyZW50OiB7IHZhbHVlOiB0b3AgfSB9KTtcbiAgICAgIHJldHVybiB0b3A7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtDb21waWxlZE1vZGUgfSBtb2RlIC0gdGhlIG1vZGUgdG8gcG90ZW50aWFsbHkgZW5kXG4gICAgICogQHBhcmFtIHtSZWdFeHBNYXRjaEFycmF5fSBtYXRjaCAtIHRoZSBsYXRlc3QgbWF0Y2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2hQbHVzUmVtYWluZGVyIC0gbWF0Y2ggcGx1cyByZW1haW5kZXIgb2YgY29udGVudFxuICAgICAqIEByZXR1cm5zIHtDb21waWxlZE1vZGUgfCB2b2lkfSAtIHRoZSBuZXh0IG1vZGUsIG9yIGlmIHZvaWQgY29udGludWUgb24gaW4gY3VycmVudCBtb2RlXG4gICAgICovXG4gICAgZnVuY3Rpb24gZW5kT2ZNb2RlKG1vZGUsIG1hdGNoLCBtYXRjaFBsdXNSZW1haW5kZXIpIHtcbiAgICAgIGxldCBtYXRjaGVkID0gc3RhcnRzV2l0aChtb2RlLmVuZFJlLCBtYXRjaFBsdXNSZW1haW5kZXIpO1xuXG4gICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICBpZiAobW9kZVtcIm9uOmVuZFwiXSkge1xuICAgICAgICAgIGNvbnN0IHJlc3AgPSBuZXcgUmVzcG9uc2UobW9kZSk7XG4gICAgICAgICAgbW9kZVtcIm9uOmVuZFwiXShtYXRjaCwgcmVzcCk7XG4gICAgICAgICAgaWYgKHJlc3AuaXNNYXRjaElnbm9yZWQpIG1hdGNoZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgd2hpbGUgKG1vZGUuZW5kc1BhcmVudCAmJiBtb2RlLnBhcmVudCkge1xuICAgICAgICAgICAgbW9kZSA9IG1vZGUucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbW9kZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gZXZlbiBpZiBvbjplbmQgZmlyZXMgYW4gYGlnbm9yZWAgaXQncyBzdGlsbCBwb3NzaWJsZVxuICAgICAgLy8gdGhhdCB3ZSBtaWdodCB0cmlnZ2VyIHRoZSBlbmQgbm9kZSBiZWNhdXNlIG9mIGEgcGFyZW50IG1vZGVcbiAgICAgIGlmIChtb2RlLmVuZHNXaXRoUGFyZW50KSB7XG4gICAgICAgIHJldHVybiBlbmRPZk1vZGUobW9kZS5wYXJlbnQsIG1hdGNoLCBtYXRjaFBsdXNSZW1haW5kZXIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBtYXRjaGluZyBidXQgdGhlbiBpZ25vcmluZyBhIHNlcXVlbmNlIG9mIHRleHRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsZXhlbWUgLSBzdHJpbmcgY29udGFpbmluZyBmdWxsIG1hdGNoIHRleHRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb0lnbm9yZShsZXhlbWUpIHtcbiAgICAgIGlmICh0b3AubWF0Y2hlci5yZWdleEluZGV4ID09PSAwKSB7XG4gICAgICAgIC8vIG5vIG1vcmUgcmVnZXhlcyB0byBwb3RlbnRpYWxseSBtYXRjaCBoZXJlLCBzbyB3ZSBtb3ZlIHRoZSBjdXJzb3IgZm9yd2FyZCBvbmVcbiAgICAgICAgLy8gc3BhY2VcbiAgICAgICAgbW9kZUJ1ZmZlciArPSBsZXhlbWVbMF07XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm8gbmVlZCB0byBtb3ZlIHRoZSBjdXJzb3IsIHdlIHN0aWxsIGhhdmUgYWRkaXRpb25hbCByZWdleGVzIHRvIHRyeSBhbmRcbiAgICAgICAgLy8gbWF0Y2ggYXQgdGhpcyB2ZXJ5IHNwb3RcbiAgICAgICAgcmVzdW1lU2NhbkF0U2FtZVBvc2l0aW9uID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHRoZSBzdGFydCBvZiBhIG5ldyBwb3RlbnRpYWwgbW9kZSBtYXRjaFxuICAgICAqXG4gICAgICogQHBhcmFtIHtFbmhhbmNlZE1hdGNofSBtYXRjaCAtIHRoZSBjdXJyZW50IG1hdGNoXG4gICAgICogQHJldHVybnMge251bWJlcn0gaG93IGZhciB0byBhZHZhbmNlIHRoZSBwYXJzZSBjdXJzb3JcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb0JlZ2luTWF0Y2gobWF0Y2gpIHtcbiAgICAgIGNvbnN0IGxleGVtZSA9IG1hdGNoWzBdO1xuICAgICAgY29uc3QgbmV3TW9kZSA9IG1hdGNoLnJ1bGU7XG5cbiAgICAgIGNvbnN0IHJlc3AgPSBuZXcgUmVzcG9uc2UobmV3TW9kZSk7XG4gICAgICAvLyBmaXJzdCBpbnRlcm5hbCBiZWZvcmUgY2FsbGJhY2tzLCB0aGVuIHRoZSBwdWJsaWMgb25lc1xuICAgICAgY29uc3QgYmVmb3JlQ2FsbGJhY2tzID0gW25ld01vZGUuX19iZWZvcmVCZWdpbiwgbmV3TW9kZVtcIm9uOmJlZ2luXCJdXTtcbiAgICAgIGZvciAoY29uc3QgY2Igb2YgYmVmb3JlQ2FsbGJhY2tzKSB7XG4gICAgICAgIGlmICghY2IpIGNvbnRpbnVlO1xuICAgICAgICBjYihtYXRjaCwgcmVzcCk7XG4gICAgICAgIGlmIChyZXNwLmlzTWF0Y2hJZ25vcmVkKSByZXR1cm4gZG9JZ25vcmUobGV4ZW1lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld01vZGUuc2tpcCkge1xuICAgICAgICBtb2RlQnVmZmVyICs9IGxleGVtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3NCdWZmZXIoKTtcbiAgICAgICAgaWYgKCFuZXdNb2RlLnJldHVybkJlZ2luICYmICFuZXdNb2RlLmV4Y2x1ZGVCZWdpbikge1xuICAgICAgICAgIG1vZGVCdWZmZXIgPSBsZXhlbWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHN0YXJ0TmV3TW9kZShuZXdNb2RlLCBtYXRjaCk7XG4gICAgICByZXR1cm4gbmV3TW9kZS5yZXR1cm5CZWdpbiA/IDAgOiBsZXhlbWUubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSB0aGUgcG90ZW50aWFsIGVuZCBvZiBtb2RlXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cE1hdGNoQXJyYXl9IG1hdGNoIC0gdGhlIGN1cnJlbnQgbWF0Y2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb0VuZE1hdGNoKG1hdGNoKSB7XG4gICAgICBjb25zdCBsZXhlbWUgPSBtYXRjaFswXTtcbiAgICAgIGNvbnN0IG1hdGNoUGx1c1JlbWFpbmRlciA9IGNvZGVUb0hpZ2hsaWdodC5zdWJzdHJpbmcobWF0Y2guaW5kZXgpO1xuXG4gICAgICBjb25zdCBlbmRNb2RlID0gZW5kT2ZNb2RlKHRvcCwgbWF0Y2gsIG1hdGNoUGx1c1JlbWFpbmRlcik7XG4gICAgICBpZiAoIWVuZE1vZGUpIHsgcmV0dXJuIE5PX01BVENIOyB9XG5cbiAgICAgIGNvbnN0IG9yaWdpbiA9IHRvcDtcbiAgICAgIGlmICh0b3AuZW5kU2NvcGUgJiYgdG9wLmVuZFNjb3BlLl93cmFwKSB7XG4gICAgICAgIHByb2Nlc3NCdWZmZXIoKTtcbiAgICAgICAgZW1pdHRlci5hZGRLZXl3b3JkKGxleGVtZSwgdG9wLmVuZFNjb3BlLl93cmFwKTtcbiAgICAgIH0gZWxzZSBpZiAodG9wLmVuZFNjb3BlICYmIHRvcC5lbmRTY29wZS5fbXVsdGkpIHtcbiAgICAgICAgcHJvY2Vzc0J1ZmZlcigpO1xuICAgICAgICBlbWl0TXVsdGlDbGFzcyh0b3AuZW5kU2NvcGUsIG1hdGNoKTtcbiAgICAgIH0gZWxzZSBpZiAob3JpZ2luLnNraXApIHtcbiAgICAgICAgbW9kZUJ1ZmZlciArPSBsZXhlbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIShvcmlnaW4ucmV0dXJuRW5kIHx8IG9yaWdpbi5leGNsdWRlRW5kKSkge1xuICAgICAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3NCdWZmZXIoKTtcbiAgICAgICAgaWYgKG9yaWdpbi5leGNsdWRlRW5kKSB7XG4gICAgICAgICAgbW9kZUJ1ZmZlciA9IGxleGVtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZG8ge1xuICAgICAgICBpZiAodG9wLnNjb3BlKSB7XG4gICAgICAgICAgZW1pdHRlci5jbG9zZU5vZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRvcC5za2lwICYmICF0b3Auc3ViTGFuZ3VhZ2UpIHtcbiAgICAgICAgICByZWxldmFuY2UgKz0gdG9wLnJlbGV2YW5jZTtcbiAgICAgICAgfVxuICAgICAgICB0b3AgPSB0b3AucGFyZW50O1xuICAgICAgfSB3aGlsZSAodG9wICE9PSBlbmRNb2RlLnBhcmVudCk7XG4gICAgICBpZiAoZW5kTW9kZS5zdGFydHMpIHtcbiAgICAgICAgc3RhcnROZXdNb2RlKGVuZE1vZGUuc3RhcnRzLCBtYXRjaCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3JpZ2luLnJldHVybkVuZCA/IDAgOiBsZXhlbWUubGVuZ3RoO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NDb250aW51YXRpb25zKCkge1xuICAgICAgY29uc3QgbGlzdCA9IFtdO1xuICAgICAgZm9yIChsZXQgY3VycmVudCA9IHRvcDsgY3VycmVudCAhPT0gbGFuZ3VhZ2U7IGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudCkge1xuICAgICAgICBpZiAoY3VycmVudC5zY29wZSkge1xuICAgICAgICAgIGxpc3QudW5zaGlmdChjdXJyZW50LnNjb3BlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4gZW1pdHRlci5vcGVuTm9kZShpdGVtKSk7XG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHt7dHlwZT86IE1hdGNoVHlwZSwgaW5kZXg/OiBudW1iZXIsIHJ1bGU/OiBNb2RlfX19ICovXG4gICAgbGV0IGxhc3RNYXRjaCA9IHt9O1xuXG4gICAgLyoqXG4gICAgICogIFByb2Nlc3MgYW4gaW5kaXZpZHVhbCBtYXRjaFxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHRCZWZvcmVNYXRjaCAtIHRleHQgcHJlY2VkaW5nIHRoZSBtYXRjaCAoc2luY2UgdGhlIGxhc3QgbWF0Y2gpXG4gICAgICogQHBhcmFtIHtFbmhhbmNlZE1hdGNofSBbbWF0Y2hdIC0gdGhlIG1hdGNoIGl0c2VsZlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb2Nlc3NMZXhlbWUodGV4dEJlZm9yZU1hdGNoLCBtYXRjaCkge1xuICAgICAgY29uc3QgbGV4ZW1lID0gbWF0Y2ggJiYgbWF0Y2hbMF07XG5cbiAgICAgIC8vIGFkZCBub24tbWF0Y2hlZCB0ZXh0IHRvIHRoZSBjdXJyZW50IG1vZGUgYnVmZmVyXG4gICAgICBtb2RlQnVmZmVyICs9IHRleHRCZWZvcmVNYXRjaDtcblxuICAgICAgaWYgKGxleGVtZSA9PSBudWxsKSB7XG4gICAgICAgIHByb2Nlc3NCdWZmZXIoKTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG5cbiAgICAgIC8vIHdlJ3ZlIGZvdW5kIGEgMCB3aWR0aCBtYXRjaCBhbmQgd2UncmUgc3R1Y2ssIHNvIHdlIG5lZWQgdG8gYWR2YW5jZVxuICAgICAgLy8gdGhpcyBoYXBwZW5zIHdoZW4gd2UgaGF2ZSBiYWRseSBiZWhhdmVkIHJ1bGVzIHRoYXQgaGF2ZSBvcHRpb25hbCBtYXRjaGVycyB0byB0aGUgZGVncmVlIHRoYXRcbiAgICAgIC8vIHNvbWV0aW1lcyB0aGV5IGNhbiBlbmQgdXAgbWF0Y2hpbmcgbm90aGluZyBhdCBhbGxcbiAgICAgIC8vIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMjE0MFxuICAgICAgaWYgKGxhc3RNYXRjaC50eXBlID09PSBcImJlZ2luXCIgJiYgbWF0Y2gudHlwZSA9PT0gXCJlbmRcIiAmJiBsYXN0TWF0Y2guaW5kZXggPT09IG1hdGNoLmluZGV4ICYmIGxleGVtZSA9PT0gXCJcIikge1xuICAgICAgICAvLyBzcGl0IHRoZSBcInNraXBwZWRcIiBjaGFyYWN0ZXIgdGhhdCBvdXIgcmVnZXggY2hva2VkIG9uIGJhY2sgaW50byB0aGUgb3V0cHV0IHNlcXVlbmNlXG4gICAgICAgIG1vZGVCdWZmZXIgKz0gY29kZVRvSGlnaGxpZ2h0LnNsaWNlKG1hdGNoLmluZGV4LCBtYXRjaC5pbmRleCArIDEpO1xuICAgICAgICBpZiAoIVNBRkVfTU9ERSkge1xuICAgICAgICAgIC8qKiBAdHlwZSB7QW5ub3RhdGVkRXJyb3J9ICovXG4gICAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKGAwIHdpZHRoIG1hdGNoIHJlZ2V4ICgke2xhbmd1YWdlTmFtZX0pYCk7XG4gICAgICAgICAgZXJyLmxhbmd1YWdlTmFtZSA9IGxhbmd1YWdlTmFtZTtcbiAgICAgICAgICBlcnIuYmFkUnVsZSA9IGxhc3RNYXRjaC5ydWxlO1xuICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RNYXRjaCA9IG1hdGNoO1xuXG4gICAgICBpZiAobWF0Y2gudHlwZSA9PT0gXCJiZWdpblwiKSB7XG4gICAgICAgIHJldHVybiBkb0JlZ2luTWF0Y2gobWF0Y2gpO1xuICAgICAgfSBlbHNlIGlmIChtYXRjaC50eXBlID09PSBcImlsbGVnYWxcIiAmJiAhaWdub3JlSWxsZWdhbHMpIHtcbiAgICAgICAgLy8gaWxsZWdhbCBtYXRjaCwgd2UgZG8gbm90IGNvbnRpbnVlIHByb2Nlc3NpbmdcbiAgICAgICAgLyoqIEB0eXBlIHtBbm5vdGF0ZWRFcnJvcn0gKi9cbiAgICAgICAgY29uc3QgZXJyID0gbmV3IEVycm9yKCdJbGxlZ2FsIGxleGVtZSBcIicgKyBsZXhlbWUgKyAnXCIgZm9yIG1vZGUgXCInICsgKHRvcC5zY29wZSB8fCAnPHVubmFtZWQ+JykgKyAnXCInKTtcbiAgICAgICAgZXJyLm1vZGUgPSB0b3A7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH0gZWxzZSBpZiAobWF0Y2gudHlwZSA9PT0gXCJlbmRcIikge1xuICAgICAgICBjb25zdCBwcm9jZXNzZWQgPSBkb0VuZE1hdGNoKG1hdGNoKTtcbiAgICAgICAgaWYgKHByb2Nlc3NlZCAhPT0gTk9fTUFUQ0gpIHtcbiAgICAgICAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGVkZ2UgY2FzZSBmb3Igd2hlbiBpbGxlZ2FsIG1hdGNoZXMgJCAoZW5kIG9mIGxpbmUpIHdoaWNoIGlzIHRlY2huaWNhbGx5XG4gICAgICAvLyBhIDAgd2lkdGggbWF0Y2ggYnV0IG5vdCBhIGJlZ2luL2VuZCBtYXRjaCBzbyBpdCdzIG5vdCBjYXVnaHQgYnkgdGhlXG4gICAgICAvLyBmaXJzdCBoYW5kbGVyICh3aGVuIGlnbm9yZUlsbGVnYWxzIGlzIHRydWUpXG4gICAgICBpZiAobWF0Y2gudHlwZSA9PT0gXCJpbGxlZ2FsXCIgJiYgbGV4ZW1lID09PSBcIlwiKSB7XG4gICAgICAgIC8vIGFkdmFuY2Ugc28gd2UgYXJlbid0IHN0dWNrIGluIGFuIGluZmluaXRlIGxvb3BcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIC8vIGluZmluaXRlIGxvb3BzIGFyZSBCQUQsIHRoaXMgaXMgYSBsYXN0IGRpdGNoIGNhdGNoIGFsbC4gaWYgd2UgaGF2ZSBhXG4gICAgICAvLyBkZWNlbnQgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgeWV0IG91ciBpbmRleCAoY3Vyc29yIHBvc2l0aW9uIGluIG91clxuICAgICAgLy8gcGFyc2luZykgc3RpbGwgM3ggYmVoaW5kIG91ciBpbmRleCB0aGVuIHNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nXG4gICAgICAvLyBzbyB3ZSBiYWlsXG4gICAgICBpZiAoaXRlcmF0aW9ucyA+IDEwMDAwMCAmJiBpdGVyYXRpb25zID4gbWF0Y2guaW5kZXggKiAzKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBFcnJvcigncG90ZW50aWFsIGluZmluaXRlIGxvb3AsIHdheSBtb3JlIGl0ZXJhdGlvbnMgdGhhbiBtYXRjaGVzJyk7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cblxuICAgICAgLypcbiAgICAgIFdoeSBtaWdodCBiZSBmaW5kIG91cnNlbHZlcyBoZXJlPyAgQW4gcG90ZW50aWFsIGVuZCBtYXRjaCB0aGF0IHdhc1xuICAgICAgdHJpZ2dlcmVkIGJ1dCBjb3VsZCBub3QgYmUgY29tcGxldGVkLiAgSUUsIGBkb0VuZE1hdGNoYCByZXR1cm5lZCBOT19NQVRDSC5cbiAgICAgICh0aGlzIGNvdWxkIGJlIGJlY2F1c2UgYSBjYWxsYmFjayByZXF1ZXN0cyB0aGUgbWF0Y2ggYmUgaWdub3JlZCwgZXRjKVxuXG4gICAgICBUaGlzIGNhdXNlcyBubyByZWFsIGhhcm0gb3RoZXIgdGhhbiBzdG9wcGluZyBhIGZldyB0aW1lcyB0b28gbWFueS5cbiAgICAgICovXG5cbiAgICAgIG1vZGVCdWZmZXIgKz0gbGV4ZW1lO1xuICAgICAgcmV0dXJuIGxleGVtZS5sZW5ndGg7XG4gICAgfVxuXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZShsYW5ndWFnZU5hbWUpO1xuICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgIGVycm9yKExBTkdVQUdFX05PVF9GT1VORC5yZXBsYWNlKFwie31cIiwgbGFuZ3VhZ2VOYW1lKSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGFuZ3VhZ2U6IFwiJyArIGxhbmd1YWdlTmFtZSArICdcIicpO1xuICAgIH1cblxuICAgIGNvbnN0IG1kID0gY29tcGlsZUxhbmd1YWdlKGxhbmd1YWdlKTtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgLyoqIEB0eXBlIHtDb21waWxlZE1vZGV9ICovXG4gICAgbGV0IHRvcCA9IGNvbnRpbnVhdGlvbiB8fCBtZDtcbiAgICAvKiogQHR5cGUgUmVjb3JkPHN0cmluZyxDb21waWxlZE1vZGU+ICovXG4gICAgY29uc3QgY29udGludWF0aW9ucyA9IHt9OyAvLyBrZWVwIGNvbnRpbnVhdGlvbnMgZm9yIHN1Yi1sYW5ndWFnZXNcbiAgICBjb25zdCBlbWl0dGVyID0gbmV3IG9wdGlvbnMuX19lbWl0dGVyKG9wdGlvbnMpO1xuICAgIHByb2Nlc3NDb250aW51YXRpb25zKCk7XG4gICAgbGV0IG1vZGVCdWZmZXIgPSAnJztcbiAgICBsZXQgcmVsZXZhbmNlID0gMDtcbiAgICBsZXQgaW5kZXggPSAwO1xuICAgIGxldCBpdGVyYXRpb25zID0gMDtcbiAgICBsZXQgcmVzdW1lU2NhbkF0U2FtZVBvc2l0aW9uID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgdG9wLm1hdGNoZXIuY29uc2lkZXJBbGwoKTtcblxuICAgICAgZm9yICg7Oykge1xuICAgICAgICBpdGVyYXRpb25zKys7XG4gICAgICAgIGlmIChyZXN1bWVTY2FuQXRTYW1lUG9zaXRpb24pIHtcbiAgICAgICAgICAvLyBvbmx5IHJlZ2V4ZXMgbm90IG1hdGNoZWQgcHJldmlvdXNseSB3aWxsIG5vdyBiZVxuICAgICAgICAgIC8vIGNvbnNpZGVyZWQgZm9yIGEgcG90ZW50aWFsIG1hdGNoXG4gICAgICAgICAgcmVzdW1lU2NhbkF0U2FtZVBvc2l0aW9uID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG9wLm1hdGNoZXIuY29uc2lkZXJBbGwoKTtcbiAgICAgICAgfVxuICAgICAgICB0b3AubWF0Y2hlci5sYXN0SW5kZXggPSBpbmRleDtcblxuICAgICAgICBjb25zdCBtYXRjaCA9IHRvcC5tYXRjaGVyLmV4ZWMoY29kZVRvSGlnaGxpZ2h0KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJtYXRjaFwiLCBtYXRjaFswXSwgbWF0Y2gucnVsZSAmJiBtYXRjaC5ydWxlLmJlZ2luKVxuXG4gICAgICAgIGlmICghbWF0Y2gpIGJyZWFrO1xuXG4gICAgICAgIGNvbnN0IGJlZm9yZU1hdGNoID0gY29kZVRvSGlnaGxpZ2h0LnN1YnN0cmluZyhpbmRleCwgbWF0Y2guaW5kZXgpO1xuICAgICAgICBjb25zdCBwcm9jZXNzZWRDb3VudCA9IHByb2Nlc3NMZXhlbWUoYmVmb3JlTWF0Y2gsIG1hdGNoKTtcbiAgICAgICAgaW5kZXggPSBtYXRjaC5pbmRleCArIHByb2Nlc3NlZENvdW50O1xuICAgICAgfVxuICAgICAgcHJvY2Vzc0xleGVtZShjb2RlVG9IaWdobGlnaHQuc3Vic3RyaW5nKGluZGV4KSk7XG4gICAgICBlbWl0dGVyLmNsb3NlQWxsTm9kZXMoKTtcbiAgICAgIGVtaXR0ZXIuZmluYWxpemUoKTtcbiAgICAgIHJlc3VsdCA9IGVtaXR0ZXIudG9IVE1MKCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhbmd1YWdlOiBsYW5ndWFnZU5hbWUsXG4gICAgICAgIHZhbHVlOiByZXN1bHQsXG4gICAgICAgIHJlbGV2YW5jZTogcmVsZXZhbmNlLFxuICAgICAgICBpbGxlZ2FsOiBmYWxzZSxcbiAgICAgICAgX2VtaXR0ZXI6IGVtaXR0ZXIsXG4gICAgICAgIF90b3A6IHRvcFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnSWxsZWdhbCcpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlTmFtZSxcbiAgICAgICAgICB2YWx1ZTogZXNjYXBlKGNvZGVUb0hpZ2hsaWdodCksXG4gICAgICAgICAgaWxsZWdhbDogdHJ1ZSxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgX2lsbGVnYWxCeToge1xuICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgICAgICBjb250ZXh0OiBjb2RlVG9IaWdobGlnaHQuc2xpY2UoaW5kZXggLSAxMDAsIGluZGV4ICsgMTAwKSxcbiAgICAgICAgICAgIG1vZGU6IGVyci5tb2RlLFxuICAgICAgICAgICAgcmVzdWx0U29GYXI6IHJlc3VsdFxuICAgICAgICAgIH0sXG4gICAgICAgICAgX2VtaXR0ZXI6IGVtaXR0ZXJcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoU0FGRV9NT0RFKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGFuZ3VhZ2U6IGxhbmd1YWdlTmFtZSxcbiAgICAgICAgICB2YWx1ZTogZXNjYXBlKGNvZGVUb0hpZ2hsaWdodCksXG4gICAgICAgICAgaWxsZWdhbDogZmFsc2UsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGVycm9yUmFpc2VkOiBlcnIsXG4gICAgICAgICAgX2VtaXR0ZXI6IGVtaXR0ZXIsXG4gICAgICAgICAgX3RvcDogdG9wXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybnMgYSB2YWxpZCBoaWdobGlnaHQgcmVzdWx0LCB3aXRob3V0IGFjdHVhbGx5IGRvaW5nIGFueSBhY3R1YWwgd29yayxcbiAgICogYXV0byBoaWdobGlnaHQgc3RhcnRzIHdpdGggdGhpcyBhbmQgaXQncyBwb3NzaWJsZSBmb3Igc21hbGwgc25pcHBldHMgdGhhdFxuICAgKiBhdXRvLWRldGVjdGlvbiBtYXkgbm90IGZpbmQgYSBiZXR0ZXIgbWF0Y2hcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvZGVcbiAgICogQHJldHVybnMge0hpZ2hsaWdodFJlc3VsdH1cbiAgICovXG4gIGZ1bmN0aW9uIGp1c3RUZXh0SGlnaGxpZ2h0UmVzdWx0KGNvZGUpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICB2YWx1ZTogZXNjYXBlKGNvZGUpLFxuICAgICAgaWxsZWdhbDogZmFsc2UsXG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBfdG9wOiBQTEFJTlRFWFRfTEFOR1VBR0UsXG4gICAgICBfZW1pdHRlcjogbmV3IG9wdGlvbnMuX19lbWl0dGVyKG9wdGlvbnMpXG4gICAgfTtcbiAgICByZXN1bHQuX2VtaXR0ZXIuYWRkVGV4dChjb2RlKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gIEhpZ2hsaWdodGluZyB3aXRoIGxhbmd1YWdlIGRldGVjdGlvbi4gQWNjZXB0cyBhIHN0cmluZyB3aXRoIHRoZSBjb2RlIHRvXG4gIGhpZ2hsaWdodC4gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cbiAgLSBsYW5ndWFnZSAoZGV0ZWN0ZWQgbGFuZ3VhZ2UpXG4gIC0gcmVsZXZhbmNlIChpbnQpXG4gIC0gdmFsdWUgKGFuIEhUTUwgc3RyaW5nIHdpdGggaGlnaGxpZ2h0aW5nIG1hcmt1cClcbiAgLSBzZWNvbmRCZXN0IChvYmplY3Qgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgZm9yIHNlY29uZC1iZXN0IGhldXJpc3RpY2FsbHlcbiAgICBkZXRlY3RlZCBsYW5ndWFnZSwgbWF5IGJlIGFic2VudClcblxuICAgIEBwYXJhbSB7c3RyaW5nfSBjb2RlXG4gICAgQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBbbGFuZ3VhZ2VTdWJzZXRdXG4gICAgQHJldHVybnMge0F1dG9IaWdobGlnaHRSZXN1bHR9XG4gICovXG4gIGZ1bmN0aW9uIGhpZ2hsaWdodEF1dG8oY29kZSwgbGFuZ3VhZ2VTdWJzZXQpIHtcbiAgICBsYW5ndWFnZVN1YnNldCA9IGxhbmd1YWdlU3Vic2V0IHx8IG9wdGlvbnMubGFuZ3VhZ2VzIHx8IE9iamVjdC5rZXlzKGxhbmd1YWdlcyk7XG4gICAgY29uc3QgcGxhaW50ZXh0ID0ganVzdFRleHRIaWdobGlnaHRSZXN1bHQoY29kZSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gbGFuZ3VhZ2VTdWJzZXQuZmlsdGVyKGdldExhbmd1YWdlKS5maWx0ZXIoYXV0b0RldGVjdGlvbikubWFwKG5hbWUgPT5cbiAgICAgIF9oaWdobGlnaHQobmFtZSwgY29kZSwgZmFsc2UpXG4gICAgKTtcbiAgICByZXN1bHRzLnVuc2hpZnQocGxhaW50ZXh0KTsgLy8gcGxhaW50ZXh0IGlzIGFsd2F5cyBhbiBvcHRpb25cblxuICAgIGNvbnN0IHNvcnRlZCA9IHJlc3VsdHMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgLy8gc29ydCBiYXNlIG9uIHJlbGV2YW5jZVxuICAgICAgaWYgKGEucmVsZXZhbmNlICE9PSBiLnJlbGV2YW5jZSkgcmV0dXJuIGIucmVsZXZhbmNlIC0gYS5yZWxldmFuY2U7XG5cbiAgICAgIC8vIGFsd2F5cyBhd2FyZCB0aGUgdGllIHRvIHRoZSBiYXNlIGxhbmd1YWdlXG4gICAgICAvLyBpZSBpZiBDKysgYW5kIEFyZHVpbm8gYXJlIHRpZWQsIGl0J3MgbW9yZSBsaWtlbHkgdG8gYmUgQysrXG4gICAgICBpZiAoYS5sYW5ndWFnZSAmJiBiLmxhbmd1YWdlKSB7XG4gICAgICAgIGlmIChnZXRMYW5ndWFnZShhLmxhbmd1YWdlKS5zdXBlcnNldE9mID09PSBiLmxhbmd1YWdlKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoZ2V0TGFuZ3VhZ2UoYi5sYW5ndWFnZSkuc3VwZXJzZXRPZiA9PT0gYS5sYW5ndWFnZSkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBvdGhlcndpc2Ugc2F5IHRoZXkgYXJlIGVxdWFsLCB3aGljaCBoYXMgdGhlIGVmZmVjdCBvZiBzb3J0aW5nIG9uXG4gICAgICAvLyByZWxldmFuY2Ugd2hpbGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgb3JkZXJpbmcgLSB3aGljaCBpcyBob3cgdGllc1xuICAgICAgLy8gaGF2ZSBoaXN0b3JpY2FsbHkgYmVlbiBzZXR0bGVkLCBpZSB0aGUgbGFuZ3VhZ2UgdGhhdCBjb21lcyBmaXJzdCBhbHdheXNcbiAgICAgIC8vIHdpbnMgaW4gdGhlIGNhc2Ugb2YgYSB0aWVcbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuXG4gICAgY29uc3QgW2Jlc3QsIHNlY29uZEJlc3RdID0gc29ydGVkO1xuXG4gICAgLyoqIEB0eXBlIHtBdXRvSGlnaGxpZ2h0UmVzdWx0fSAqL1xuICAgIGNvbnN0IHJlc3VsdCA9IGJlc3Q7XG4gICAgcmVzdWx0LnNlY29uZEJlc3QgPSBzZWNvbmRCZXN0O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgbmV3IGNsYXNzIG5hbWUgZm9yIGJsb2NrIGdpdmVuIHRoZSBsYW5ndWFnZSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjdXJyZW50TGFuZ11cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtyZXN1bHRMYW5nXVxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlQ2xhc3NOYW1lKGVsZW1lbnQsIGN1cnJlbnRMYW5nLCByZXN1bHRMYW5nKSB7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSAoY3VycmVudExhbmcgJiYgYWxpYXNlc1tjdXJyZW50TGFuZ10pIHx8IHJlc3VsdExhbmc7XG5cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJobGpzXCIpO1xuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChgbGFuZ3VhZ2UtJHtsYW5ndWFnZX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGhpZ2hsaWdodGluZyB0byBhIERPTSBub2RlIGNvbnRhaW5pbmcgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIHtIaWdobGlnaHRlZEhUTUxFbGVtZW50fSBlbGVtZW50IC0gdGhlIEhUTUwgZWxlbWVudCB0byBoaWdobGlnaHRcbiAgKi9cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0RWxlbWVudChlbGVtZW50KSB7XG4gICAgLyoqIEB0eXBlIEhUTUxFbGVtZW50ICovXG4gICAgbGV0IG5vZGUgPSBudWxsO1xuICAgIGNvbnN0IGxhbmd1YWdlID0gYmxvY2tMYW5ndWFnZShlbGVtZW50KTtcblxuICAgIGlmIChzaG91bGROb3RIaWdobGlnaHQobGFuZ3VhZ2UpKSByZXR1cm47XG5cbiAgICBmaXJlKFwiYmVmb3JlOmhpZ2hsaWdodEVsZW1lbnRcIixcbiAgICAgIHsgZWw6IGVsZW1lbnQsIGxhbmd1YWdlOiBsYW5ndWFnZSB9KTtcblxuICAgIC8vIHdlIHNob3VsZCBiZSBhbGwgdGV4dCwgbm8gY2hpbGQgbm9kZXMgKHVuZXNjYXBlZCBIVE1MKSAtIHRoaXMgaXMgcG9zc2libHlcbiAgICAvLyBhbiBIVE1MIGluamVjdGlvbiBhdHRhY2sgLSBpdCdzIGxpa2VseSB0b28gbGF0ZSBpZiB0aGlzIGlzIGFscmVhZHkgaW5cbiAgICAvLyBwcm9kdWN0aW9uICh0aGUgY29kZSBoYXMgbGlrZWx5IGFscmVhZHkgZG9uZSBpdHMgZGFtYWdlIGJ5IHRoZSB0aW1lXG4gICAgLy8gd2UncmUgc2VlaW5nIGl0KS4uLiBidXQgd2UgeWVsbCBsb3VkbHkgYWJvdXQgdGhpcyBzbyB0aGF0IGhvcGVmdWxseSBpdCdzXG4gICAgLy8gbW9yZSBsaWtlbHkgdG8gYmUgY2F1Z2h0IGluIGRldmVsb3BtZW50IGJlZm9yZSBtYWtpbmcgaXQgdG8gcHJvZHVjdGlvblxuICAgIGlmIChlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5pZ25vcmVVbmVzY2FwZWRIVE1MKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIk9uZSBvZiB5b3VyIGNvZGUgYmxvY2tzIGluY2x1ZGVzIHVuZXNjYXBlZCBIVE1MLiBUaGlzIGlzIGEgcG90ZW50aWFsbHkgc2VyaW91cyBzZWN1cml0eSByaXNrLlwiKTtcbiAgICAgICAgY29uc29sZS53YXJuKFwiaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy93aWtpL3NlY3VyaXR5XCIpO1xuICAgICAgICBjb25zb2xlLndhcm4oXCJUaGUgZWxlbWVudCB3aXRoIHVuZXNjYXBlZCBIVE1MOlwiKTtcbiAgICAgICAgY29uc29sZS53YXJuKGVsZW1lbnQpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMudGhyb3dVbmVzY2FwZWRIVE1MKSB7XG4gICAgICAgIGNvbnN0IGVyciA9IG5ldyBIVE1MSW5qZWN0aW9uRXJyb3IoXG4gICAgICAgICAgXCJPbmUgb2YgeW91ciBjb2RlIGJsb2NrcyBpbmNsdWRlcyB1bmVzY2FwZWQgSFRNTC5cIixcbiAgICAgICAgICBlbGVtZW50LmlubmVySFRNTFxuICAgICAgICApO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbm9kZSA9IGVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG4gICAgY29uc3QgcmVzdWx0ID0gbGFuZ3VhZ2UgPyBoaWdobGlnaHQodGV4dCwgeyBsYW5ndWFnZSwgaWdub3JlSWxsZWdhbHM6IHRydWUgfSkgOiBoaWdobGlnaHRBdXRvKHRleHQpO1xuXG4gICAgZWxlbWVudC5pbm5lckhUTUwgPSByZXN1bHQudmFsdWU7XG4gICAgdXBkYXRlQ2xhc3NOYW1lKGVsZW1lbnQsIGxhbmd1YWdlLCByZXN1bHQubGFuZ3VhZ2UpO1xuICAgIGVsZW1lbnQucmVzdWx0ID0ge1xuICAgICAgbGFuZ3VhZ2U6IHJlc3VsdC5sYW5ndWFnZSxcbiAgICAgIC8vIFRPRE86IHJlbW92ZSB3aXRoIHZlcnNpb24gMTEuMFxuICAgICAgcmU6IHJlc3VsdC5yZWxldmFuY2UsXG4gICAgICByZWxldmFuY2U6IHJlc3VsdC5yZWxldmFuY2VcbiAgICB9O1xuICAgIGlmIChyZXN1bHQuc2Vjb25kQmVzdCkge1xuICAgICAgZWxlbWVudC5zZWNvbmRCZXN0ID0ge1xuICAgICAgICBsYW5ndWFnZTogcmVzdWx0LnNlY29uZEJlc3QubGFuZ3VhZ2UsXG4gICAgICAgIHJlbGV2YW5jZTogcmVzdWx0LnNlY29uZEJlc3QucmVsZXZhbmNlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGZpcmUoXCJhZnRlcjpoaWdobGlnaHRFbGVtZW50XCIsIHsgZWw6IGVsZW1lbnQsIHJlc3VsdCwgdGV4dCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGhpZ2hsaWdodC5qcyBnbG9iYWwgb3B0aW9ucyB3aXRoIHRoZSBwYXNzZWQgb3B0aW9uc1xuICAgKlxuICAgKiBAcGFyYW0ge1BhcnRpYWw8SExKU09wdGlvbnM+fSB1c2VyT3B0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gY29uZmlndXJlKHVzZXJPcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IGluaGVyaXQob3B0aW9ucywgdXNlck9wdGlvbnMpO1xuICB9XG5cbiAgLy8gVE9ETzogcmVtb3ZlIHYxMiwgZGVwcmVjYXRlZFxuICBjb25zdCBpbml0SGlnaGxpZ2h0aW5nID0gKCkgPT4ge1xuICAgIGhpZ2hsaWdodEFsbCgpO1xuICAgIGRlcHJlY2F0ZWQoXCIxMC42LjBcIiwgXCJpbml0SGlnaGxpZ2h0aW5nKCkgZGVwcmVjYXRlZC4gIFVzZSBoaWdobGlnaHRBbGwoKSBub3cuXCIpO1xuICB9O1xuXG4gIC8vIFRPRE86IHJlbW92ZSB2MTIsIGRlcHJlY2F0ZWRcbiAgZnVuY3Rpb24gaW5pdEhpZ2hsaWdodGluZ09uTG9hZCgpIHtcbiAgICBoaWdobGlnaHRBbGwoKTtcbiAgICBkZXByZWNhdGVkKFwiMTAuNi4wXCIsIFwiaW5pdEhpZ2hsaWdodGluZ09uTG9hZCgpIGRlcHJlY2F0ZWQuICBVc2UgaGlnaGxpZ2h0QWxsKCkgbm93LlwiKTtcbiAgfVxuXG4gIGxldCB3YW50c0hpZ2hsaWdodCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBhdXRvLWhpZ2hsaWdodHMgYWxsIHByZT5jb2RlIGVsZW1lbnRzIG9uIHRoZSBwYWdlXG4gICAqL1xuICBmdW5jdGlvbiBoaWdobGlnaHRBbGwoKSB7XG4gICAgLy8gaWYgd2UgYXJlIGNhbGxlZCB0b28gZWFybHkgaW4gdGhlIGxvYWRpbmcgcHJvY2Vzc1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImxvYWRpbmdcIikge1xuICAgICAgd2FudHNIaWdobGlnaHQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGJsb2NrcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwob3B0aW9ucy5jc3NTZWxlY3Rvcik7XG4gICAgYmxvY2tzLmZvckVhY2goaGlnaGxpZ2h0RWxlbWVudCk7XG4gIH1cblxuICBmdW5jdGlvbiBib290KCkge1xuICAgIC8vIGlmIGEgaGlnaGxpZ2h0IHdhcyByZXF1ZXN0ZWQgYmVmb3JlIERPTSB3YXMgbG9hZGVkLCBkbyBub3dcbiAgICBpZiAod2FudHNIaWdobGlnaHQpIGhpZ2hsaWdodEFsbCgpO1xuICB9XG5cbiAgLy8gbWFrZSBzdXJlIHdlIGFyZSBpbiB0aGUgYnJvd3NlciBlbnZpcm9ubWVudFxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGJvb3QsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIGxhbmd1YWdlIGdyYW1tYXIgbW9kdWxlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZU5hbWVcbiAgICogQHBhcmFtIHtMYW5ndWFnZUZufSBsYW5ndWFnZURlZmluaXRpb25cbiAgICovXG4gIGZ1bmN0aW9uIHJlZ2lzdGVyTGFuZ3VhZ2UobGFuZ3VhZ2VOYW1lLCBsYW5ndWFnZURlZmluaXRpb24pIHtcbiAgICBsZXQgbGFuZyA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGxhbmcgPSBsYW5ndWFnZURlZmluaXRpb24oaGxqcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IkMSkge1xuICAgICAgZXJyb3IoXCJMYW5ndWFnZSBkZWZpbml0aW9uIGZvciAne30nIGNvdWxkIG5vdCBiZSByZWdpc3RlcmVkLlwiLnJlcGxhY2UoXCJ7fVwiLCBsYW5ndWFnZU5hbWUpKTtcbiAgICAgIC8vIGhhcmQgb3Igc29mdCBlcnJvclxuICAgICAgaWYgKCFTQUZFX01PREUpIHsgdGhyb3cgZXJyb3IkMTsgfSBlbHNlIHsgZXJyb3IoZXJyb3IkMSk7IH1cbiAgICAgIC8vIGxhbmd1YWdlcyB0aGF0IGhhdmUgc2VyaW91cyBlcnJvcnMgYXJlIHJlcGxhY2VkIHdpdGggZXNzZW50aWFsbHkgYVxuICAgICAgLy8gXCJwbGFpbnRleHRcIiBzdGFuZC1pbiBzbyB0aGF0IHRoZSBjb2RlIGJsb2NrcyB3aWxsIHN0aWxsIGdldCBub3JtYWxcbiAgICAgIC8vIGNzcyBjbGFzc2VzIGFwcGxpZWQgdG8gdGhlbSAtIGFuZCBvbmUgYmFkIGxhbmd1YWdlIHdvbid0IGJyZWFrIHRoZVxuICAgICAgLy8gZW50aXJlIGhpZ2hsaWdodGVyXG4gICAgICBsYW5nID0gUExBSU5URVhUX0xBTkdVQUdFO1xuICAgIH1cbiAgICAvLyBnaXZlIGl0IGEgdGVtcG9yYXJ5IG5hbWUgaWYgaXQgZG9lc24ndCBoYXZlIG9uZSBpbiB0aGUgbWV0YS1kYXRhXG4gICAgaWYgKCFsYW5nLm5hbWUpIGxhbmcubmFtZSA9IGxhbmd1YWdlTmFtZTtcbiAgICBsYW5ndWFnZXNbbGFuZ3VhZ2VOYW1lXSA9IGxhbmc7XG4gICAgbGFuZy5yYXdEZWZpbml0aW9uID0gbGFuZ3VhZ2VEZWZpbml0aW9uLmJpbmQobnVsbCwgaGxqcyk7XG5cbiAgICBpZiAobGFuZy5hbGlhc2VzKSB7XG4gICAgICByZWdpc3RlckFsaWFzZXMobGFuZy5hbGlhc2VzLCB7IGxhbmd1YWdlTmFtZSB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgbGFuZ3VhZ2UgZ3JhbW1hciBtb2R1bGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlTmFtZVxuICAgKi9cbiAgZnVuY3Rpb24gdW5yZWdpc3Rlckxhbmd1YWdlKGxhbmd1YWdlTmFtZSkge1xuICAgIGRlbGV0ZSBsYW5ndWFnZXNbbGFuZ3VhZ2VOYW1lXTtcbiAgICBmb3IgKGNvbnN0IGFsaWFzIG9mIE9iamVjdC5rZXlzKGFsaWFzZXMpKSB7XG4gICAgICBpZiAoYWxpYXNlc1thbGlhc10gPT09IGxhbmd1YWdlTmFtZSkge1xuICAgICAgICBkZWxldGUgYWxpYXNlc1thbGlhc107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gTGlzdCBvZiBsYW5ndWFnZSBpbnRlcm5hbCBuYW1lc1xuICAgKi9cbiAgZnVuY3Rpb24gbGlzdExhbmd1YWdlcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMobGFuZ3VhZ2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIG5hbWUgb2YgdGhlIGxhbmd1YWdlIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm5zIHtMYW5ndWFnZSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIGZ1bmN0aW9uIGdldExhbmd1YWdlKG5hbWUpIHtcbiAgICBuYW1lID0gKG5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIGxhbmd1YWdlc1tuYW1lXSB8fCBsYW5ndWFnZXNbYWxpYXNlc1tuYW1lXV07XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IGFsaWFzTGlzdCAtIHNpbmdsZSBhbGlhcyBvciBsaXN0IG9mIGFsaWFzZXNcbiAgICogQHBhcmFtIHt7bGFuZ3VhZ2VOYW1lOiBzdHJpbmd9fSBvcHRzXG4gICAqL1xuICBmdW5jdGlvbiByZWdpc3RlckFsaWFzZXMoYWxpYXNMaXN0LCB7IGxhbmd1YWdlTmFtZSB9KSB7XG4gICAgaWYgKHR5cGVvZiBhbGlhc0xpc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICBhbGlhc0xpc3QgPSBbYWxpYXNMaXN0XTtcbiAgICB9XG4gICAgYWxpYXNMaXN0LmZvckVhY2goYWxpYXMgPT4geyBhbGlhc2VzW2FsaWFzLnRvTG93ZXJDYXNlKCldID0gbGFuZ3VhZ2VOYW1lOyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gbGFuZ3VhZ2UgaGFzIGF1dG8tZGV0ZWN0aW9uIGVuYWJsZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBuYW1lIG9mIHRoZSBsYW5ndWFnZVxuICAgKi9cbiAgZnVuY3Rpb24gYXV0b0RldGVjdGlvbihuYW1lKSB7XG4gICAgY29uc3QgbGFuZyA9IGdldExhbmd1YWdlKG5hbWUpO1xuICAgIHJldHVybiBsYW5nICYmICFsYW5nLmRpc2FibGVBdXRvZGV0ZWN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZ3JhZGVzIHRoZSBvbGQgaGlnaGxpZ2h0QmxvY2sgcGx1Z2lucyB0byB0aGUgbmV3XG4gICAqIGhpZ2hsaWdodEVsZW1lbnQgQVBJXG4gICAqIEBwYXJhbSB7SExKU1BsdWdpbn0gcGx1Z2luXG4gICAqL1xuICBmdW5jdGlvbiB1cGdyYWRlUGx1Z2luQVBJKHBsdWdpbikge1xuICAgIC8vIFRPRE86IHJlbW92ZSB3aXRoIHYxMlxuICAgIGlmIChwbHVnaW5bXCJiZWZvcmU6aGlnaGxpZ2h0QmxvY2tcIl0gJiYgIXBsdWdpbltcImJlZm9yZTpoaWdobGlnaHRFbGVtZW50XCJdKSB7XG4gICAgICBwbHVnaW5bXCJiZWZvcmU6aGlnaGxpZ2h0RWxlbWVudFwiXSA9IChkYXRhKSA9PiB7XG4gICAgICAgIHBsdWdpbltcImJlZm9yZTpoaWdobGlnaHRCbG9ja1wiXShcbiAgICAgICAgICBPYmplY3QuYXNzaWduKHsgYmxvY2s6IGRhdGEuZWwgfSwgZGF0YSlcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChwbHVnaW5bXCJhZnRlcjpoaWdobGlnaHRCbG9ja1wiXSAmJiAhcGx1Z2luW1wiYWZ0ZXI6aGlnaGxpZ2h0RWxlbWVudFwiXSkge1xuICAgICAgcGx1Z2luW1wiYWZ0ZXI6aGlnaGxpZ2h0RWxlbWVudFwiXSA9IChkYXRhKSA9PiB7XG4gICAgICAgIHBsdWdpbltcImFmdGVyOmhpZ2hsaWdodEJsb2NrXCJdKFxuICAgICAgICAgIE9iamVjdC5hc3NpZ24oeyBibG9jazogZGF0YS5lbCB9LCBkYXRhKVxuICAgICAgICApO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtITEpTUGx1Z2lufSBwbHVnaW5cbiAgICovXG4gIGZ1bmN0aW9uIGFkZFBsdWdpbihwbHVnaW4pIHtcbiAgICB1cGdyYWRlUGx1Z2luQVBJKHBsdWdpbik7XG4gICAgcGx1Z2lucy5wdXNoKHBsdWdpbik7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtQbHVnaW5FdmVudH0gZXZlbnRcbiAgICogQHBhcmFtIHthbnl9IGFyZ3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpcmUoZXZlbnQsIGFyZ3MpIHtcbiAgICBjb25zdCBjYiA9IGV2ZW50O1xuICAgIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbihwbHVnaW4pIHtcbiAgICAgIGlmIChwbHVnaW5bY2JdKSB7XG4gICAgICAgIHBsdWdpbltjYl0oYXJncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogREVQUkVDQVRFRFxuICAgKiBAcGFyYW0ge0hpZ2hsaWdodGVkSFRNTEVsZW1lbnR9IGVsXG4gICAqL1xuICBmdW5jdGlvbiBkZXByZWNhdGVIaWdobGlnaHRCbG9jayhlbCkge1xuICAgIGRlcHJlY2F0ZWQoXCIxMC43LjBcIiwgXCJoaWdobGlnaHRCbG9jayB3aWxsIGJlIHJlbW92ZWQgZW50aXJlbHkgaW4gdjEyLjBcIik7XG4gICAgZGVwcmVjYXRlZChcIjEwLjcuMFwiLCBcIlBsZWFzZSB1c2UgaGlnaGxpZ2h0RWxlbWVudCBub3cuXCIpO1xuXG4gICAgcmV0dXJuIGhpZ2hsaWdodEVsZW1lbnQoZWwpO1xuICB9XG5cbiAgLyogSW50ZXJmYWNlIGRlZmluaXRpb24gKi9cbiAgT2JqZWN0LmFzc2lnbihobGpzLCB7XG4gICAgaGlnaGxpZ2h0LFxuICAgIGhpZ2hsaWdodEF1dG8sXG4gICAgaGlnaGxpZ2h0QWxsLFxuICAgIGhpZ2hsaWdodEVsZW1lbnQsXG4gICAgLy8gVE9ETzogUmVtb3ZlIHdpdGggdjEyIEFQSVxuICAgIGhpZ2hsaWdodEJsb2NrOiBkZXByZWNhdGVIaWdobGlnaHRCbG9jayxcbiAgICBjb25maWd1cmUsXG4gICAgaW5pdEhpZ2hsaWdodGluZyxcbiAgICBpbml0SGlnaGxpZ2h0aW5nT25Mb2FkLFxuICAgIHJlZ2lzdGVyTGFuZ3VhZ2UsXG4gICAgdW5yZWdpc3Rlckxhbmd1YWdlLFxuICAgIGxpc3RMYW5ndWFnZXMsXG4gICAgZ2V0TGFuZ3VhZ2UsXG4gICAgcmVnaXN0ZXJBbGlhc2VzLFxuICAgIGF1dG9EZXRlY3Rpb24sXG4gICAgaW5oZXJpdCxcbiAgICBhZGRQbHVnaW5cbiAgfSk7XG5cbiAgaGxqcy5kZWJ1Z01vZGUgPSBmdW5jdGlvbigpIHsgU0FGRV9NT0RFID0gZmFsc2U7IH07XG4gIGhsanMuc2FmZU1vZGUgPSBmdW5jdGlvbigpIHsgU0FGRV9NT0RFID0gdHJ1ZTsgfTtcbiAgaGxqcy52ZXJzaW9uU3RyaW5nID0gdmVyc2lvbjtcblxuICBobGpzLnJlZ2V4ID0ge1xuICAgIGNvbmNhdDogY29uY2F0LFxuICAgIGxvb2thaGVhZDogbG9va2FoZWFkLFxuICAgIGVpdGhlcjogZWl0aGVyLFxuICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICBhbnlOdW1iZXJPZlRpbWVzOiBhbnlOdW1iZXJPZlRpbWVzXG4gIH07XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gTU9ERVMpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHR5cGVvZiBNT0RFU1trZXldID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBkZWVwRnJlZXplRXM2LmV4cG9ydHMoTU9ERVNba2V5XSk7XG4gICAgfVxuICB9XG5cbiAgLy8gbWVyZ2UgYWxsIHRoZSBtb2Rlcy9yZWdleGVzIGludG8gb3VyIG1haW4gb2JqZWN0XG4gIE9iamVjdC5hc3NpZ24oaGxqcywgTU9ERVMpO1xuXG4gIHJldHVybiBobGpzO1xufTtcblxuLy8gZXhwb3J0IGFuIFwiaW5zdGFuY2VcIiBvZiB0aGUgaGlnaGxpZ2h0ZXJcbnZhciBoaWdobGlnaHQgPSBITEpTKHt9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBoaWdobGlnaHQ7XG5oaWdobGlnaHQuSGlnaGxpZ2h0SlMgPSBoaWdobGlnaHQ7XG5oaWdobGlnaHQuZGVmYXVsdCA9IGhpZ2hsaWdodDtcbiJdLCJuYW1lcyI6WyJkZWVwRnJlZXplRXM2IiwiZXhwb3J0cyIsImRlZXBGcmVlemUiLCJvYmoiLCJNYXAiLCJjbGVhciIsImRlbGV0ZSIsInNldCIsIkVycm9yIiwiU2V0IiwiYWRkIiwiT2JqZWN0IiwiZnJlZXplIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImZvckVhY2giLCJuYW1lIiwicHJvcCIsImlzRnJvemVuIiwiZGVmYXVsdCIsIlJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJtb2RlIiwiZGF0YSIsInVuZGVmaW5lZCIsImlzTWF0Y2hJZ25vcmVkIiwiaWdub3JlTWF0Y2giLCJlc2NhcGVIVE1MIiwidmFsdWUiLCJyZXBsYWNlIiwiaW5oZXJpdCQxIiwib3JpZ2luYWwiLCJvYmplY3RzIiwicmVzdWx0IiwiY3JlYXRlIiwia2V5IiwiU1BBTl9DTE9TRSIsImVtaXRzV3JhcHBpbmdUYWdzIiwibm9kZSIsInNjb3BlIiwic3VibGFuZ3VhZ2UiLCJsYW5ndWFnZSIsInNjb3BlVG9DU1NDbGFzcyIsInByZWZpeCIsImluY2x1ZGVzIiwicGllY2VzIiwic3BsaXQiLCJzaGlmdCIsIm1hcCIsIngiLCJpIiwicmVwZWF0Iiwiam9pbiIsIkhUTUxSZW5kZXJlciIsInBhcnNlVHJlZSIsIm9wdGlvbnMiLCJidWZmZXIiLCJjbGFzc1ByZWZpeCIsIndhbGsiLCJhZGRUZXh0IiwidGV4dCIsIm9wZW5Ob2RlIiwiY2xhc3NOYW1lIiwic3BhbiIsImNsb3NlTm9kZSIsIm5ld05vZGUiLCJvcHRzIiwiY2hpbGRyZW4iLCJhc3NpZ24iLCJUb2tlblRyZWUiLCJyb290Tm9kZSIsInN0YWNrIiwidG9wIiwibGVuZ3RoIiwicm9vdCIsInB1c2giLCJwb3AiLCJjbG9zZUFsbE5vZGVzIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ1aWxkZXIiLCJfd2FsayIsImNoaWxkIiwiX2NvbGxhcHNlIiwiZXZlcnkiLCJlbCIsIlRva2VuVHJlZUVtaXR0ZXIiLCJhZGRLZXl3b3JkIiwiYWRkU3VibGFuZ3VhZ2UiLCJlbWl0dGVyIiwidG9IVE1MIiwicmVuZGVyZXIiLCJmaW5hbGl6ZSIsInNvdXJjZSIsInJlIiwibG9va2FoZWFkIiwiY29uY2F0IiwiYW55TnVtYmVyT2ZUaW1lcyIsIm9wdGlvbmFsIiwiYXJncyIsImpvaW5lZCIsInN0cmlwT3B0aW9uc0Zyb21BcmdzIiwic3BsaWNlIiwiZWl0aGVyIiwiY2FwdHVyZSIsImNvdW50TWF0Y2hHcm91cHMiLCJSZWdFeHAiLCJ0b1N0cmluZyIsImV4ZWMiLCJzdGFydHNXaXRoIiwibGV4ZW1lIiwibWF0Y2giLCJpbmRleCIsIkJBQ0tSRUZfUkUiLCJfcmV3cml0ZUJhY2tyZWZlcmVuY2VzIiwicmVnZXhwcyIsImpvaW5XaXRoIiwibnVtQ2FwdHVyZXMiLCJyZWdleCIsIm9mZnNldCIsIm91dCIsInN1YnN0cmluZyIsIlN0cmluZyIsIk51bWJlciIsIk1BVENIX05PVEhJTkdfUkUiLCJJREVOVF9SRSIsIlVOREVSU0NPUkVfSURFTlRfUkUiLCJOVU1CRVJfUkUiLCJDX05VTUJFUl9SRSIsIkJJTkFSWV9OVU1CRVJfUkUiLCJSRV9TVEFSVEVSU19SRSIsIlNIRUJBTkciLCJiZWdpblNoZWJhbmciLCJiaW5hcnkiLCJiZWdpbiIsImVuZCIsInJlbGV2YW5jZSIsIm0iLCJyZXNwIiwiQkFDS1NMQVNIX0VTQ0FQRSIsIkFQT1NfU1RSSU5HX01PREUiLCJpbGxlZ2FsIiwiY29udGFpbnMiLCJRVU9URV9TVFJJTkdfTU9ERSIsIlBIUkFTQUxfV09SRFNfTU9ERSIsIkNPTU1FTlQiLCJtb2RlT3B0aW9ucyIsImV4Y2x1ZGVCZWdpbiIsIkVOR0xJU0hfV09SRCIsIkNfTElORV9DT01NRU5UX01PREUiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkhBU0hfQ09NTUVOVF9NT0RFIiwiTlVNQkVSX01PREUiLCJDX05VTUJFUl9NT0RFIiwiQklOQVJZX05VTUJFUl9NT0RFIiwiUkVHRVhQX01PREUiLCJUSVRMRV9NT0RFIiwiVU5ERVJTQ09SRV9USVRMRV9NT0RFIiwiTUVUSE9EX0dVQVJEIiwiRU5EX1NBTUVfQVNfQkVHSU4iLCJfYmVnaW5NYXRjaCIsIk1PREVTIiwiX19wcm90b19fIiwic2tpcElmSGFzUHJlY2VkaW5nRG90IiwicmVzcG9uc2UiLCJiZWZvcmUiLCJpbnB1dCIsInNjb3BlQ2xhc3NOYW1lIiwiX3BhcmVudCIsImJlZ2luS2V5d29yZHMiLCJwYXJlbnQiLCJfX2JlZm9yZUJlZ2luIiwia2V5d29yZHMiLCJjb21waWxlSWxsZWdhbCIsIkFycmF5IiwiaXNBcnJheSIsImNvbXBpbGVNYXRjaCIsImNvbXBpbGVSZWxldmFuY2UiLCJiZWZvcmVNYXRjaEV4dCIsImJlZm9yZU1hdGNoIiwic3RhcnRzIiwib3JpZ2luYWxNb2RlIiwia2V5cyIsImVuZHNQYXJlbnQiLCJDT01NT05fS0VZV09SRFMiLCJERUZBVUxUX0tFWVdPUkRfU0NPUEUiLCJjb21waWxlS2V5d29yZHMiLCJyYXdLZXl3b3JkcyIsImNhc2VJbnNlbnNpdGl2ZSIsInNjb3BlTmFtZSIsImNvbXBpbGVkS2V5d29yZHMiLCJjb21waWxlTGlzdCIsImtleXdvcmRMaXN0IiwidG9Mb3dlckNhc2UiLCJrZXl3b3JkIiwicGFpciIsInNjb3JlRm9yS2V5d29yZCIsInByb3ZpZGVkU2NvcmUiLCJjb21tb25LZXl3b3JkIiwic2VlbkRlcHJlY2F0aW9ucyIsImVycm9yIiwibWVzc2FnZSIsImNvbnNvbGUiLCJ3YXJuIiwibG9nIiwiZGVwcmVjYXRlZCIsInZlcnNpb24iLCJNdWx0aUNsYXNzRXJyb3IiLCJyZW1hcFNjb3BlTmFtZXMiLCJyZWdleGVzIiwic2NvcGVOYW1lcyIsImVtaXQiLCJwb3NpdGlvbnMiLCJfZW1pdCIsIl9tdWx0aSIsImJlZ2luTXVsdGlDbGFzcyIsInNraXAiLCJyZXR1cm5CZWdpbiIsImJlZ2luU2NvcGUiLCJlbmRNdWx0aUNsYXNzIiwiZXhjbHVkZUVuZCIsInJldHVybkVuZCIsImVuZFNjb3BlIiwic2NvcGVTdWdhciIsIk11bHRpQ2xhc3MiLCJfd3JhcCIsImNvbXBpbGVMYW5ndWFnZSIsImxhbmdSZSIsImdsb2JhbCIsImNhc2VfaW5zZW5zaXRpdmUiLCJ1bmljb2RlUmVnZXgiLCJNdWx0aVJlZ2V4IiwibWF0Y2hJbmRleGVzIiwibWF0Y2hBdCIsInBvc2l0aW9uIiwiYWRkUnVsZSIsImNvbXBpbGUiLCJ0ZXJtaW5hdG9ycyIsIm1hdGNoZXJSZSIsImxhc3RJbmRleCIsInMiLCJmaW5kSW5kZXgiLCJtYXRjaERhdGEiLCJSZXN1bWFibGVNdWx0aVJlZ2V4IiwicnVsZXMiLCJtdWx0aVJlZ2V4ZXMiLCJjb3VudCIsInJlZ2V4SW5kZXgiLCJnZXRNYXRjaGVyIiwibWF0Y2hlciIsInNsaWNlIiwicmVzdW1pbmdTY2FuQXRTYW1lUG9zaXRpb24iLCJjb25zaWRlckFsbCIsInR5cGUiLCJtMiIsImJ1aWxkTW9kZVJlZ2V4IiwibW0iLCJ0ZXJtIiwicnVsZSIsInRlcm1pbmF0b3JFbmQiLCJjb21waWxlTW9kZSIsImNtb2RlIiwiaXNDb21waWxlZCIsImV4dCIsImNvbXBpbGVyRXh0ZW5zaW9ucyIsImtleXdvcmRQYXR0ZXJuIiwiJHBhdHRlcm4iLCJrZXl3b3JkUGF0dGVyblJlIiwiYmVnaW5SZSIsImVuZHNXaXRoUGFyZW50IiwiZW5kUmUiLCJpbGxlZ2FsUmUiLCJjIiwiZXhwYW5kT3JDbG9uZU1vZGUiLCJjbGFzc05hbWVBbGlhc2VzIiwiZGVwZW5kZW5jeU9uUGFyZW50IiwidmFyaWFudHMiLCJjYWNoZWRWYXJpYW50cyIsInZhcmlhbnQiLCJIVE1MSW5qZWN0aW9uRXJyb3IiLCJyZWFzb24iLCJodG1sIiwiZXNjYXBlIiwiaW5oZXJpdCIsIk5PX01BVENIIiwiU3ltYm9sIiwiTUFYX0tFWVdPUkRfSElUUyIsIkhMSlMiLCJobGpzIiwibGFuZ3VhZ2VzIiwiYWxpYXNlcyIsInBsdWdpbnMiLCJTQUZFX01PREUiLCJMQU5HVUFHRV9OT1RfRk9VTkQiLCJQTEFJTlRFWFRfTEFOR1VBR0UiLCJkaXNhYmxlQXV0b2RldGVjdCIsImlnbm9yZVVuZXNjYXBlZEhUTUwiLCJ0aHJvd1VuZXNjYXBlZEhUTUwiLCJub0hpZ2hsaWdodFJlIiwibGFuZ3VhZ2VEZXRlY3RSZSIsImNzc1NlbGVjdG9yIiwiX19lbWl0dGVyIiwic2hvdWxkTm90SGlnaGxpZ2h0IiwibGFuZ3VhZ2VOYW1lIiwidGVzdCIsImJsb2NrTGFuZ3VhZ2UiLCJibG9jayIsImNsYXNzZXMiLCJwYXJlbnROb2RlIiwiZ2V0TGFuZ3VhZ2UiLCJmaW5kIiwiX2NsYXNzIiwiaGlnaGxpZ2h0IiwiY29kZU9yTGFuZ3VhZ2VOYW1lIiwib3B0aW9uc09yQ29kZSIsImlnbm9yZUlsbGVnYWxzIiwiY29kZSIsImNvbnRleHQiLCJmaXJlIiwiX2hpZ2hsaWdodCIsImNvZGVUb0hpZ2hsaWdodCIsImNvbnRpbnVhdGlvbiIsImtleXdvcmRIaXRzIiwia2V5d29yZERhdGEiLCJtYXRjaFRleHQiLCJwcm9jZXNzS2V5d29yZHMiLCJtb2RlQnVmZmVyIiwiYnVmIiwid29yZCIsImtpbmQiLCJrZXl3b3JkUmVsZXZhbmNlIiwiY3NzQ2xhc3MiLCJwcm9jZXNzU3ViTGFuZ3VhZ2UiLCJzdWJMYW5ndWFnZSIsImNvbnRpbnVhdGlvbnMiLCJfdG9wIiwiaGlnaGxpZ2h0QXV0byIsIl9lbWl0dGVyIiwicHJvY2Vzc0J1ZmZlciIsImVtaXRNdWx0aUNsYXNzIiwibWF4Iiwia2xhc3MiLCJzdGFydE5ld01vZGUiLCJlbmRPZk1vZGUiLCJtYXRjaFBsdXNSZW1haW5kZXIiLCJtYXRjaGVkIiwiZG9JZ25vcmUiLCJyZXN1bWVTY2FuQXRTYW1lUG9zaXRpb24iLCJkb0JlZ2luTWF0Y2giLCJuZXdNb2RlIiwiYmVmb3JlQ2FsbGJhY2tzIiwiY2IiLCJkb0VuZE1hdGNoIiwiZW5kTW9kZSIsIm9yaWdpbiIsInByb2Nlc3NDb250aW51YXRpb25zIiwibGlzdCIsImN1cnJlbnQiLCJ1bnNoaWZ0IiwiaXRlbSIsImxhc3RNYXRjaCIsInByb2Nlc3NMZXhlbWUiLCJ0ZXh0QmVmb3JlTWF0Y2giLCJlcnIiLCJiYWRSdWxlIiwicHJvY2Vzc2VkIiwiaXRlcmF0aW9ucyIsIm1kIiwicHJvY2Vzc2VkQ291bnQiLCJfaWxsZWdhbEJ5IiwicmVzdWx0U29GYXIiLCJlcnJvclJhaXNlZCIsImp1c3RUZXh0SGlnaGxpZ2h0UmVzdWx0IiwibGFuZ3VhZ2VTdWJzZXQiLCJwbGFpbnRleHQiLCJyZXN1bHRzIiwiZmlsdGVyIiwiYXV0b0RldGVjdGlvbiIsInNvcnRlZCIsInNvcnQiLCJhIiwiYiIsInN1cGVyc2V0T2YiLCJiZXN0Iiwic2Vjb25kQmVzdCIsInVwZGF0ZUNsYXNzTmFtZSIsImVsZW1lbnQiLCJjdXJyZW50TGFuZyIsInJlc3VsdExhbmciLCJjbGFzc0xpc3QiLCJoaWdobGlnaHRFbGVtZW50IiwiaW5uZXJIVE1MIiwidGV4dENvbnRlbnQiLCJjb25maWd1cmUiLCJ1c2VyT3B0aW9ucyIsImluaXRIaWdobGlnaHRpbmciLCJoaWdobGlnaHRBbGwiLCJpbml0SGlnaGxpZ2h0aW5nT25Mb2FkIiwid2FudHNIaWdobGlnaHQiLCJkb2N1bWVudCIsInJlYWR5U3RhdGUiLCJibG9ja3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiYm9vdCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZWdpc3Rlckxhbmd1YWdlIiwibGFuZ3VhZ2VEZWZpbml0aW9uIiwibGFuZyIsImVycm9yJDEiLCJyYXdEZWZpbml0aW9uIiwiYmluZCIsInJlZ2lzdGVyQWxpYXNlcyIsInVucmVnaXN0ZXJMYW5ndWFnZSIsImFsaWFzIiwibGlzdExhbmd1YWdlcyIsImFsaWFzTGlzdCIsInVwZ3JhZGVQbHVnaW5BUEkiLCJwbHVnaW4iLCJhZGRQbHVnaW4iLCJldmVudCIsImRlcHJlY2F0ZUhpZ2hsaWdodEJsb2NrIiwiaGlnaGxpZ2h0QmxvY2siLCJkZWJ1Z01vZGUiLCJzYWZlTW9kZSIsInZlcnNpb25TdHJpbmciLCJtb2R1bGUiLCJIaWdobGlnaHRKUyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/lib/core.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/core.js":
/*!**********************************************!*\
!*** ./node_modules/highlight.js/es/core.js ***!
\**********************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ HighlightJS: () => (/* reexport default export from named module */ _lib_core_js__WEBPACK_IMPORTED_MODULE_0__),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _lib_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/core.js */ \"(ssr)/./node_modules/highlight.js/lib/core.js\");\n// https://nodejs.org/api/packages.html#packages_writing_dual_packages_while_avoiding_or_minimizing_hazards\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_lib_core_js__WEBPACK_IMPORTED_MODULE_0__);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2NvcmUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkdBQTJHO0FBQ2xFO0FBQ2xCO0FBQ3ZCLGlFQUFlQSx5Q0FBV0EsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9jb3JlLmpzPzFlMTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9wYWNrYWdlcy5odG1sI3BhY2thZ2VzX3dyaXRpbmdfZHVhbF9wYWNrYWdlc193aGlsZV9hdm9pZGluZ19vcl9taW5pbWl6aW5nX2hhemFyZHNcbmltcG9ydCBIaWdobGlnaHRKUyBmcm9tICcuLi9saWIvY29yZS5qcyc7XG5leHBvcnQgeyBIaWdobGlnaHRKUyB9O1xuZXhwb3J0IGRlZmF1bHQgSGlnaGxpZ2h0SlM7XG4iXSwibmFtZXMiOlsiSGlnaGxpZ2h0SlMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/core.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/arduino.js":
/*!***********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/arduino.js ***!
\***********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ arduino)\n/* harmony export */ });\n/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/ /** @type LanguageFn */ function cPlusPlus(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT(\"//\", \"$\", {\n contains: [\n {\n begin: /\\\\\\n/\n }\n ]\n });\n const DECLTYPE_AUTO_RE = \"decltype\\\\(auto\\\\)\";\n const NAMESPACE_RE = \"[a-zA-Z_]\\\\w*::\";\n const TEMPLATE_ARGUMENT_RE = \"<[^<>]+>\";\n const FUNCTION_TYPE_RE = \"(?!struct)(\" + DECLTYPE_AUTO_RE + \"|\" + regex.optional(NAMESPACE_RE) + \"[a-zA-Z_]\\\\w*\" + regex.optional(TEMPLATE_ARGUMENT_RE) + \")\";\n const CPP_PRIMITIVE_TYPES = {\n className: \"type\",\n begin: \"\\\\b[a-z\\\\d_]*_t\\\\b\"\n };\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)\";\n const STRINGS = {\n className: \"string\",\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: \"\\\\n\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n {\n begin: \"(u8?|U|L)?'(\" + CHARACTER_ESCAPES + \"|.)\",\n end: \"'\",\n illegal: \".\"\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n const NUMBERS = {\n className: \"number\",\n variants: [\n {\n begin: \"\\\\b(0b[01']+)\"\n },\n {\n begin: \"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)\"\n },\n {\n begin: \"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n }\n ],\n relevance: 0\n };\n const PREPROCESSOR = {\n className: \"meta\",\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n keyword: \"if else elif endif define undef warning error line \" + \"pragma _Pragma ifdef ifndef include\"\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, {\n className: \"string\"\n }),\n {\n className: \"string\",\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n const TITLE_MODE = {\n className: \"title\",\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + \"\\\\s*\\\\(\";\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_KEYWORDS = [\n \"alignas\",\n \"alignof\",\n \"and\",\n \"and_eq\",\n \"asm\",\n \"atomic_cancel\",\n \"atomic_commit\",\n \"atomic_noexcept\",\n \"auto\",\n \"bitand\",\n \"bitor\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"co_await\",\n \"co_return\",\n \"co_yield\",\n \"compl\",\n \"concept\",\n \"const_cast|10\",\n \"consteval\",\n \"constexpr\",\n \"constinit\",\n \"continue\",\n \"decltype\",\n \"default\",\n \"delete\",\n \"do\",\n \"dynamic_cast|10\",\n \"else\",\n \"enum\",\n \"explicit\",\n \"export\",\n \"extern\",\n \"false\",\n \"final\",\n \"for\",\n \"friend\",\n \"goto\",\n \"if\",\n \"import\",\n \"inline\",\n \"module\",\n \"mutable\",\n \"namespace\",\n \"new\",\n \"noexcept\",\n \"not\",\n \"not_eq\",\n \"nullptr\",\n \"operator\",\n \"or\",\n \"or_eq\",\n \"override\",\n \"private\",\n \"protected\",\n \"public\",\n \"reflexpr\",\n \"register\",\n \"reinterpret_cast|10\",\n \"requires\",\n \"return\",\n \"sizeof\",\n \"static_assert\",\n \"static_cast|10\",\n \"struct\",\n \"switch\",\n \"synchronized\",\n \"template\",\n \"this\",\n \"thread_local\",\n \"throw\",\n \"transaction_safe\",\n \"transaction_safe_dynamic\",\n \"true\",\n \"try\",\n \"typedef\",\n \"typeid\",\n \"typename\",\n \"union\",\n \"using\",\n \"virtual\",\n \"volatile\",\n \"while\",\n \"xor\",\n \"xor_eq\"\n ];\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_TYPES = [\n \"bool\",\n \"char\",\n \"char16_t\",\n \"char32_t\",\n \"char8_t\",\n \"double\",\n \"float\",\n \"int\",\n \"long\",\n \"short\",\n \"void\",\n \"wchar_t\",\n \"unsigned\",\n \"signed\",\n \"const\",\n \"static\"\n ];\n const TYPE_HINTS = [\n \"any\",\n \"auto_ptr\",\n \"barrier\",\n \"binary_semaphore\",\n \"bitset\",\n \"complex\",\n \"condition_variable\",\n \"condition_variable_any\",\n \"counting_semaphore\",\n \"deque\",\n \"false_type\",\n \"future\",\n \"imaginary\",\n \"initializer_list\",\n \"istringstream\",\n \"jthread\",\n \"latch\",\n \"lock_guard\",\n \"multimap\",\n \"multiset\",\n \"mutex\",\n \"optional\",\n \"ostringstream\",\n \"packaged_task\",\n \"pair\",\n \"promise\",\n \"priority_queue\",\n \"queue\",\n \"recursive_mutex\",\n \"recursive_timed_mutex\",\n \"scoped_lock\",\n \"set\",\n \"shared_future\",\n \"shared_lock\",\n \"shared_mutex\",\n \"shared_timed_mutex\",\n \"shared_ptr\",\n \"stack\",\n \"string_view\",\n \"stringstream\",\n \"timed_mutex\",\n \"thread\",\n \"true_type\",\n \"tuple\",\n \"unique_lock\",\n \"unique_ptr\",\n \"unordered_map\",\n \"unordered_multimap\",\n \"unordered_multiset\",\n \"unordered_set\",\n \"variant\",\n \"vector\",\n \"weak_ptr\",\n \"wstring\",\n \"wstring_view\"\n ];\n const FUNCTION_HINTS = [\n \"abort\",\n \"abs\",\n \"acos\",\n \"apply\",\n \"as_const\",\n \"asin\",\n \"atan\",\n \"atan2\",\n \"calloc\",\n \"ceil\",\n \"cerr\",\n \"cin\",\n \"clog\",\n \"cos\",\n \"cosh\",\n \"cout\",\n \"declval\",\n \"endl\",\n \"exchange\",\n \"exit\",\n \"exp\",\n \"fabs\",\n \"floor\",\n \"fmod\",\n \"forward\",\n \"fprintf\",\n \"fputs\",\n \"free\",\n \"frexp\",\n \"fscanf\",\n \"future\",\n \"invoke\",\n \"isalnum\",\n \"isalpha\",\n \"iscntrl\",\n \"isdigit\",\n \"isgraph\",\n \"islower\",\n \"isprint\",\n \"ispunct\",\n \"isspace\",\n \"isupper\",\n \"isxdigit\",\n \"labs\",\n \"launder\",\n \"ldexp\",\n \"log\",\n \"log10\",\n \"make_pair\",\n \"make_shared\",\n \"make_shared_for_overwrite\",\n \"make_tuple\",\n \"make_unique\",\n \"malloc\",\n \"memchr\",\n \"memcmp\",\n \"memcpy\",\n \"memset\",\n \"modf\",\n \"move\",\n \"pow\",\n \"printf\",\n \"putchar\",\n \"puts\",\n \"realloc\",\n \"scanf\",\n \"sin\",\n \"sinh\",\n \"snprintf\",\n \"sprintf\",\n \"sqrt\",\n \"sscanf\",\n \"std\",\n \"stderr\",\n \"stdin\",\n \"stdout\",\n \"strcat\",\n \"strchr\",\n \"strcmp\",\n \"strcpy\",\n \"strcspn\",\n \"strlen\",\n \"strncat\",\n \"strncmp\",\n \"strncpy\",\n \"strpbrk\",\n \"strrchr\",\n \"strspn\",\n \"strstr\",\n \"swap\",\n \"tan\",\n \"tanh\",\n \"terminate\",\n \"to_underlying\",\n \"tolower\",\n \"toupper\",\n \"vfprintf\",\n \"visit\",\n \"vprintf\",\n \"vsprintf\"\n ];\n const LITERALS = [\n \"NULL\",\n \"false\",\n \"nullopt\",\n \"nullptr\",\n \"true\"\n ];\n // https://en.cppreference.com/w/cpp/keyword\n const BUILT_IN = [\n \"_Pragma\"\n ];\n const CPP_KEYWORDS = {\n type: RESERVED_TYPES,\n keyword: RESERVED_KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_IN,\n _type_hints: TYPE_HINTS\n };\n const FUNCTION_DISPATCH = {\n className: \"function.dispatch\",\n relevance: 0,\n keywords: {\n // Only for relevance, not highlighting.\n _hint: FUNCTION_HINTS\n },\n begin: regex.concat(/\\b/, /(?!decltype)/, /(?!if)/, /(?!for)/, /(?!switch)/, /(?!while)/, hljs.IDENT_RE, regex.lookahead(/(<[^<>]+>|)\\s*\\(/))\n };\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: \"new throw return else\",\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n \"self\"\n ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n const FUNCTION_DECLARATION = {\n className: \"function\",\n begin: \"(\" + FUNCTION_TYPE_RE + \"[\\\\*&\\\\s]+)+\" + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n {\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [\n TITLE_MODE\n ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n \"self\",\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n return {\n name: \"C++\",\n aliases: [\n \"cc\",\n \"c++\",\n \"h++\",\n \"hpp\",\n \"hh\",\n \"hxx\",\n \"cxx\"\n ],\n keywords: CPP_KEYWORDS,\n illegal: \"</\",\n classNameAliases: {\n \"function.dispatch\": \"built_in\"\n },\n contains: [].concat(EXPRESSION_CONTEXT, FUNCTION_DECLARATION, FUNCTION_DISPATCH, EXPRESSION_CONTAINS, [\n PREPROCESSOR,\n {\n begin: \"\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\\\s*<(?!<)\",\n end: \">\",\n keywords: CPP_KEYWORDS,\n contains: [\n \"self\",\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + \"::\",\n keywords: CPP_KEYWORDS\n },\n {\n match: [\n // extra complexity to deal with `enum class` and `enum struct`\n /\\b(?:enum(?:\\s+(?:class|struct))?|class|struct|union)/,\n /\\s+/,\n /\\w+/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n }\n ])\n };\n}\n/*\nLanguage: Arduino\nAuthor: Stefania Mellai <s.mellai@arduino.cc>\nDescription: The Arduino® Language is a superset of C++. This rules are designed to highlight the Arduino® source code. For info about language see http://www.arduino.cc.\nWebsite: https://www.arduino.cc\n*/ /** @type LanguageFn */ function arduino(hljs) {\n const ARDUINO_KW = {\n type: [\n \"boolean\",\n \"byte\",\n \"word\",\n \"String\"\n ],\n built_in: [\n \"KeyboardController\",\n \"MouseController\",\n \"SoftwareSerial\",\n \"EthernetServer\",\n \"EthernetClient\",\n \"LiquidCrystal\",\n \"RobotControl\",\n \"GSMVoiceCall\",\n \"EthernetUDP\",\n \"EsploraTFT\",\n \"HttpClient\",\n \"RobotMotor\",\n \"WiFiClient\",\n \"GSMScanner\",\n \"FileSystem\",\n \"Scheduler\",\n \"GSMServer\",\n \"YunClient\",\n \"YunServer\",\n \"IPAddress\",\n \"GSMClient\",\n \"GSMModem\",\n \"Keyboard\",\n \"Ethernet\",\n \"Console\",\n \"GSMBand\",\n \"Esplora\",\n \"Stepper\",\n \"Process\",\n \"WiFiUDP\",\n \"GSM_SMS\",\n \"Mailbox\",\n \"USBHost\",\n \"Firmata\",\n \"PImage\",\n \"Client\",\n \"Server\",\n \"GSMPIN\",\n \"FileIO\",\n \"Bridge\",\n \"Serial\",\n \"EEPROM\",\n \"Stream\",\n \"Mouse\",\n \"Audio\",\n \"Servo\",\n \"File\",\n \"Task\",\n \"GPRS\",\n \"WiFi\",\n \"Wire\",\n \"TFT\",\n \"GSM\",\n \"SPI\",\n \"SD\"\n ],\n _hints: [\n \"setup\",\n \"loop\",\n \"runShellCommandAsynchronously\",\n \"analogWriteResolution\",\n \"retrieveCallingNumber\",\n \"printFirmwareVersion\",\n \"analogReadResolution\",\n \"sendDigitalPortPair\",\n \"noListenOnLocalhost\",\n \"readJoystickButton\",\n \"setFirmwareVersion\",\n \"readJoystickSwitch\",\n \"scrollDisplayRight\",\n \"getVoiceCallStatus\",\n \"scrollDisplayLeft\",\n \"writeMicroseconds\",\n \"delayMicroseconds\",\n \"beginTransmission\",\n \"getSignalStrength\",\n \"runAsynchronously\",\n \"getAsynchronously\",\n \"listenOnLocalhost\",\n \"getCurrentCarrier\",\n \"readAccelerometer\",\n \"messageAvailable\",\n \"sendDigitalPorts\",\n \"lineFollowConfig\",\n \"countryNameWrite\",\n \"runShellCommand\",\n \"readStringUntil\",\n \"rewindDirectory\",\n \"readTemperature\",\n \"setClockDivider\",\n \"readLightSensor\",\n \"endTransmission\",\n \"analogReference\",\n \"detachInterrupt\",\n \"countryNameRead\",\n \"attachInterrupt\",\n \"encryptionType\",\n \"readBytesUntil\",\n \"robotNameWrite\",\n \"readMicrophone\",\n \"robotNameRead\",\n \"cityNameWrite\",\n \"userNameWrite\",\n \"readJoystickY\",\n \"readJoystickX\",\n \"mouseReleased\",\n \"openNextFile\",\n \"scanNetworks\",\n \"noInterrupts\",\n \"digitalWrite\",\n \"beginSpeaker\",\n \"mousePressed\",\n \"isActionDone\",\n \"mouseDragged\",\n \"displayLogos\",\n \"noAutoscroll\",\n \"addParameter\",\n \"remoteNumber\",\n \"getModifiers\",\n \"keyboardRead\",\n \"userNameRead\",\n \"waitContinue\",\n \"processInput\",\n \"parseCommand\",\n \"printVersion\",\n \"readNetworks\",\n \"writeMessage\",\n \"blinkVersion\",\n \"cityNameRead\",\n \"readMessage\",\n \"setDataMode\",\n \"parsePacket\",\n \"isListening\",\n \"setBitOrder\",\n \"beginPacket\",\n \"isDirectory\",\n \"motorsWrite\",\n \"drawCompass\",\n \"digitalRead\",\n \"clearScreen\",\n \"serialEvent\",\n \"rightToLeft\",\n \"setTextSize\",\n \"leftToRight\",\n \"requestFrom\",\n \"keyReleased\",\n \"compassRead\",\n \"analogWrite\",\n \"interrupts\",\n \"WiFiServer\",\n \"disconnect\",\n \"playMelody\",\n \"parseFloat\",\n \"autoscroll\",\n \"getPINUsed\",\n \"setPINUsed\",\n \"setTimeout\",\n \"sendAnalog\",\n \"readSlider\",\n \"analogRead\",\n \"beginWrite\",\n \"createChar\",\n \"motorsStop\",\n \"keyPressed\",\n \"tempoWrite\",\n \"readButton\",\n \"subnetMask\",\n \"debugPrint\",\n \"macAddress\",\n \"writeGreen\",\n \"randomSeed\",\n \"attachGPRS\",\n \"readString\",\n \"sendString\",\n \"remotePort\",\n \"releaseAll\",\n \"mouseMoved\",\n \"background\",\n \"getXChange\",\n \"getYChange\",\n \"answerCall\",\n \"getResult\",\n \"voiceCall\",\n \"endPacket\",\n \"constrain\",\n \"getSocket\",\n \"writeJSON\",\n \"getButton\",\n \"available\",\n \"connected\",\n \"findUntil\",\n \"readBytes\",\n \"exitValue\",\n \"readGreen\",\n \"writeBlue\",\n \"startLoop\",\n \"IPAddress\",\n \"isPressed\",\n \"sendSysex\",\n \"pauseMode\",\n \"gatewayIP\",\n \"setCursor\",\n \"getOemKey\",\n \"tuneWrite\",\n \"noDisplay\",\n \"loadImage\",\n \"switchPIN\",\n \"onRequest\",\n \"onReceive\",\n \"changePIN\",\n \"playFile\",\n \"noBuffer\",\n \"parseInt\",\n \"overflow\",\n \"checkPIN\",\n \"knobRead\",\n \"beginTFT\",\n \"bitClear\",\n \"updateIR\",\n \"bitWrite\",\n \"position\",\n \"writeRGB\",\n \"highByte\",\n \"writeRed\",\n \"setSpeed\",\n \"readBlue\",\n \"noStroke\",\n \"remoteIP\",\n \"transfer\",\n \"shutdown\",\n \"hangCall\",\n \"beginSMS\",\n \"endWrite\",\n \"attached\",\n \"maintain\",\n \"noCursor\",\n \"checkReg\",\n \"checkPUK\",\n \"shiftOut\",\n \"isValid\",\n \"shiftIn\",\n \"pulseIn\",\n \"connect\",\n \"println\",\n \"localIP\",\n \"pinMode\",\n \"getIMEI\",\n \"display\",\n \"noBlink\",\n \"process\",\n \"getBand\",\n \"running\",\n \"beginSD\",\n \"drawBMP\",\n \"lowByte\",\n \"setBand\",\n \"release\",\n \"bitRead\",\n \"prepare\",\n \"pointTo\",\n \"readRed\",\n \"setMode\",\n \"noFill\",\n \"remove\",\n \"listen\",\n \"stroke\",\n \"detach\",\n \"attach\",\n \"noTone\",\n \"exists\",\n \"buffer\",\n \"height\",\n \"bitSet\",\n \"circle\",\n \"config\",\n \"cursor\",\n \"random\",\n \"IRread\",\n \"setDNS\",\n \"endSMS\",\n \"getKey\",\n \"micros\",\n \"millis\",\n \"begin\",\n \"print\",\n \"write\",\n \"ready\",\n \"flush\",\n \"width\",\n \"isPIN\",\n \"blink\",\n \"clear\",\n \"press\",\n \"mkdir\",\n \"rmdir\",\n \"close\",\n \"point\",\n \"yield\",\n \"image\",\n \"BSSID\",\n \"click\",\n \"delay\",\n \"read\",\n \"text\",\n \"move\",\n \"peek\",\n \"beep\",\n \"rect\",\n \"line\",\n \"open\",\n \"seek\",\n \"fill\",\n \"size\",\n \"turn\",\n \"stop\",\n \"home\",\n \"find\",\n \"step\",\n \"tone\",\n \"sqrt\",\n \"RSSI\",\n \"SSID\",\n \"end\",\n \"bit\",\n \"tan\",\n \"cos\",\n \"sin\",\n \"pow\",\n \"map\",\n \"abs\",\n \"max\",\n \"min\",\n \"get\",\n \"run\",\n \"put\"\n ],\n literal: [\n \"DIGITAL_MESSAGE\",\n \"FIRMATA_STRING\",\n \"ANALOG_MESSAGE\",\n \"REPORT_DIGITAL\",\n \"REPORT_ANALOG\",\n \"INPUT_PULLUP\",\n \"SET_PIN_MODE\",\n \"INTERNAL2V56\",\n \"SYSTEM_RESET\",\n \"LED_BUILTIN\",\n \"INTERNAL1V1\",\n \"SYSEX_START\",\n \"INTERNAL\",\n \"EXTERNAL\",\n \"DEFAULT\",\n \"OUTPUT\",\n \"INPUT\",\n \"HIGH\",\n \"LOW\"\n ]\n };\n const ARDUINO = cPlusPlus(hljs);\n const kws = /** @type {Record<string,any>} */ ARDUINO.keywords;\n kws.type = [\n ...kws.type,\n ...ARDUINO_KW.type\n ];\n kws.literal = [\n ...kws.literal,\n ...ARDUINO_KW.literal\n ];\n kws.built_in = [\n ...kws.built_in,\n ...ARDUINO_KW.built_in\n ];\n kws._hints = ARDUINO_KW._hints;\n ARDUINO.name = \"Arduino\";\n ARDUINO.aliases = [\n \"ino\"\n ];\n ARDUINO.supersetOf = \"cpp\";\n return ARDUINO;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9hcmR1aW5vLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUlBLEdBRUEscUJBQXFCLEdBQ3JCLFNBQVNBLFVBQVVDLElBQUk7SUFDckIsTUFBTUMsUUFBUUQsS0FBS0MsS0FBSztJQUN4QixxRUFBcUU7SUFDckUseUVBQXlFO0lBQ3pFLG1DQUFtQztJQUNuQyxNQUFNQyxzQkFBc0JGLEtBQUtHLE9BQU8sQ0FBQyxNQUFNLEtBQUs7UUFBRUMsVUFBVTtZQUFFO2dCQUFFQyxPQUFPO1lBQU87U0FBRztJQUFDO0lBQ3RGLE1BQU1DLG1CQUFtQjtJQUN6QixNQUFNQyxlQUFlO0lBQ3JCLE1BQU1DLHVCQUF1QjtJQUM3QixNQUFNQyxtQkFBbUIsZ0JBQ3JCSCxtQkFBbUIsTUFDbkJMLE1BQU1TLFFBQVEsQ0FBQ0gsZ0JBQ2Ysa0JBQWtCTixNQUFNUyxRQUFRLENBQUNGLHdCQUNuQztJQUVGLE1BQU1HLHNCQUFzQjtRQUMxQkMsV0FBVztRQUNYUCxPQUFPO0lBQ1Q7SUFFQSxvREFBb0Q7SUFDcEQsb0NBQW9DO0lBQ3BDLE1BQU1RLG9CQUFvQjtJQUMxQixNQUFNQyxVQUFVO1FBQ2RGLFdBQVc7UUFDWEcsVUFBVTtZQUNSO2dCQUNFVixPQUFPO2dCQUNQVyxLQUFLO2dCQUNMQyxTQUFTO2dCQUNUYixVQUFVO29CQUFFSixLQUFLa0IsZ0JBQWdCO2lCQUFFO1lBQ3JDO1lBQ0E7Z0JBQ0ViLE9BQU8saUJBQWtCUSxvQkFBb0I7Z0JBQzdDRyxLQUFLO2dCQUNMQyxTQUFTO1lBQ1g7WUFDQWpCLEtBQUttQixpQkFBaUIsQ0FBQztnQkFDckJkLE9BQU87Z0JBQ1BXLEtBQUs7WUFDUDtTQUNEO0lBQ0g7SUFFQSxNQUFNSSxVQUFVO1FBQ2RSLFdBQVc7UUFDWEcsVUFBVTtZQUNSO2dCQUFFVixPQUFPO1lBQWlCO1lBQzFCO2dCQUFFQSxPQUFPO1lBQTJGO1lBQ3BHO2dCQUFFQSxPQUFPO1lBQTJGO1NBQ3JHO1FBQ0RnQixXQUFXO0lBQ2I7SUFFQSxNQUFNQyxlQUFlO1FBQ25CVixXQUFXO1FBQ1hQLE9BQU87UUFDUFcsS0FBSztRQUNMTyxVQUFVO1lBQUVDLFNBQ1Isd0RBQ0U7UUFBc0M7UUFDNUNwQixVQUFVO1lBQ1I7Z0JBQ0VDLE9BQU87Z0JBQ1BnQixXQUFXO1lBQ2I7WUFDQXJCLEtBQUt5QixPQUFPLENBQUNYLFNBQVM7Z0JBQUVGLFdBQVc7WUFBUztZQUM1QztnQkFDRUEsV0FBVztnQkFDWFAsT0FBTztZQUNUO1lBQ0FIO1lBQ0FGLEtBQUswQixvQkFBb0I7U0FDMUI7SUFDSDtJQUVBLE1BQU1DLGFBQWE7UUFDakJmLFdBQVc7UUFDWFAsT0FBT0osTUFBTVMsUUFBUSxDQUFDSCxnQkFBZ0JQLEtBQUs0QixRQUFRO1FBQ25EUCxXQUFXO0lBQ2I7SUFFQSxNQUFNUSxpQkFBaUI1QixNQUFNUyxRQUFRLENBQUNILGdCQUFnQlAsS0FBSzRCLFFBQVEsR0FBRztJQUV0RSw0Q0FBNEM7SUFDNUMsTUFBTUUsb0JBQW9CO1FBQ3hCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsNENBQTRDO0lBQzVDLE1BQU1DLGlCQUFpQjtRQUNyQjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsTUFBTUMsYUFBYTtRQUNqQjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsTUFBTUMsaUJBQWlCO1FBQ3JCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7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WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7U0FDRDtRQUNEcEIsU0FBUztZQUNQO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1NBQ0Q7SUFDSDtJQUVBLE1BQU1xQixVQUFVNUQsVUFBVUM7SUFFMUIsTUFBTTRELE1BQU0sK0JBQStCLEdBQUlELFFBQVFwQyxRQUFRO0lBRS9EcUMsSUFBSXZCLElBQUksR0FBRztXQUNOdUIsSUFBSXZCLElBQUk7V0FDUm9CLFdBQVdwQixJQUFJO0tBQ25CO0lBQ0R1QixJQUFJdEIsT0FBTyxHQUFHO1dBQ1RzQixJQUFJdEIsT0FBTztXQUNYbUIsV0FBV25CLE9BQU87S0FDdEI7SUFDRHNCLElBQUlyQixRQUFRLEdBQUc7V0FDVnFCLElBQUlyQixRQUFRO1dBQ1prQixXQUFXbEIsUUFBUTtLQUN2QjtJQUNEcUIsSUFBSUYsTUFBTSxHQUFHRCxXQUFXQyxNQUFNO0lBRTlCQyxRQUFRTixJQUFJLEdBQUc7SUFDZk0sUUFBUUwsT0FBTyxHQUFHO1FBQUU7S0FBTztJQUMzQkssUUFBUUUsVUFBVSxHQUFHO0lBRXJCLE9BQU9GO0FBQ1Q7QUFFOEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL2FyZHVpbm8uanM/ZWFiNyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEMrK1xuQ2F0ZWdvcnk6IGNvbW1vbiwgc3lzdGVtXG5XZWJzaXRlOiBodHRwczovL2lzb2NwcC5vcmdcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBjUGx1c1BsdXMoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIC8vIGFkZGVkIGZvciBoaXN0b3JpYyByZWFzb25zIGJlY2F1c2UgYGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERWAgZG9lc1xuICAvLyBub3QgaW5jbHVkZSBzdWNoIHN1cHBvcnQgbm9yIGNhbiB3ZSBiZSBzdXJlIGFsbCB0aGUgZ3JhbW1hcnMgZGVwZW5kaW5nXG4gIC8vIG9uIGl0IHdvdWxkIGRlc2lyZSB0aGlzIGJlaGF2aW9yXG4gIGNvbnN0IENfTElORV9DT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJy8vJywgJyQnLCB7IGNvbnRhaW5zOiBbIHsgYmVnaW46IC9cXFxcXFxuLyB9IF0gfSk7XG4gIGNvbnN0IERFQ0xUWVBFX0FVVE9fUkUgPSAnZGVjbHR5cGVcXFxcKGF1dG9cXFxcKSc7XG4gIGNvbnN0IE5BTUVTUEFDRV9SRSA9ICdbYS16QS1aX11cXFxcdyo6Oic7XG4gIGNvbnN0IFRFTVBMQVRFX0FSR1VNRU5UX1JFID0gJzxbXjw+XSs+JztcbiAgY29uc3QgRlVOQ1RJT05fVFlQRV9SRSA9ICcoPyFzdHJ1Y3QpKCdcbiAgICArIERFQ0xUWVBFX0FVVE9fUkUgKyAnfCdcbiAgICArIHJlZ2V4Lm9wdGlvbmFsKE5BTUVTUEFDRV9SRSlcbiAgICArICdbYS16QS1aX11cXFxcdyonICsgcmVnZXgub3B0aW9uYWwoVEVNUExBVEVfQVJHVU1FTlRfUkUpXG4gICsgJyknO1xuXG4gIGNvbnN0IENQUF9QUklNSVRJVkVfVFlQRVMgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYlthLXpcXFxcZF9dKl90XFxcXGInXG4gIH07XG5cbiAgLy8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xhbmd1YWdlL2VzY2FwZVxuICAvLyBcXFxcIFxceCBcXHhGRiBcXHUyODM3IFxcdTAwMzIzNzQ3IFxcMzc0XG4gIGNvbnN0IENIQVJBQ1RFUl9FU0NBUEVTID0gJ1xcXFxcXFxcKHhbMC05QS1GYS1mXXsyfXx1WzAtOUEtRmEtZl17NCw4fXxbMC03XXszfXxcXFxcUyknO1xuICBjb25zdCBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcodTg/fFV8TCk/XCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VXxMKT9cXCcoJyArIENIQVJBQ1RFUl9FU0NBUEVTICsgJ3wuKScsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICcuJ1xuICAgICAgfSxcbiAgICAgIGhsanMuRU5EX1NBTUVfQVNfQkVHSU4oe1xuICAgICAgICBiZWdpbjogLyg/OnU4P3xVfEwpP1JcIihbXigpXFxcXCBdezAsMTZ9KVxcKC8sXG4gICAgICAgIGVuZDogL1xcKShbXigpXFxcXCBdezAsMTZ9KVwiL1xuICAgICAgfSlcbiAgICBdXG4gIH07XG5cbiAgY29uc3QgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMGJbMDFcXCddKyknIH0sXG4gICAgICB7IGJlZ2luOiAnKC0/KVxcXFxiKFtcXFxcZFxcJ10rKFxcXFwuW1xcXFxkXFwnXSopP3xcXFxcLltcXFxcZFxcJ10rKSgobGx8TEx8bHxMKSh1fFUpP3wodXxVKShsbHxMTHxsfEwpP3xmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBQUkVQUk9DRVNTT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46IC8jXFxzKlthLXpdK1xcYi8sXG4gICAgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHsga2V5d29yZDpcbiAgICAgICAgJ2lmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgd2FybmluZyBlcnJvciBsaW5lICdcbiAgICAgICAgKyAncHJhZ21hIF9QcmFnbWEgaWZkZWYgaWZuZGVmIGluY2x1ZGUnIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXFxcXFxuLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KFNUUklOR1MsIHsgY2xhc3NOYW1lOiAnc3RyaW5nJyB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC88Lio/Pi9cbiAgICAgIH0sXG4gICAgICBDX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcblxuICBjb25zdCBUSVRMRV9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICBiZWdpbjogcmVnZXgub3B0aW9uYWwoTkFNRVNQQUNFX1JFKSArIGhsanMuSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgRlVOQ1RJT05fVElUTEUgPSByZWdleC5vcHRpb25hbChOQU1FU1BBQ0VfUkUpICsgaGxqcy5JREVOVF9SRSArICdcXFxccypcXFxcKCc7XG5cbiAgLy8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2tleXdvcmRcbiAgY29uc3QgUkVTRVJWRURfS0VZV09SRFMgPSBbXG4gICAgJ2FsaWduYXMnLFxuICAgICdhbGlnbm9mJyxcbiAgICAnYW5kJyxcbiAgICAnYW5kX2VxJyxcbiAgICAnYXNtJyxcbiAgICAnYXRvbWljX2NhbmNlbCcsXG4gICAgJ2F0b21pY19jb21taXQnLFxuICAgICdhdG9taWNfbm9leGNlcHQnLFxuICAgICdhdXRvJyxcbiAgICAnYml0YW5kJyxcbiAgICAnYml0b3InLFxuICAgICdicmVhaycsXG4gICAgJ2Nhc2UnLFxuICAgICdjYXRjaCcsXG4gICAgJ2NsYXNzJyxcbiAgICAnY29fYXdhaXQnLFxuICAgICdjb19yZXR1cm4nLFxuICAgICdjb195aWVsZCcsXG4gICAgJ2NvbXBsJyxcbiAgICAnY29uY2VwdCcsXG4gICAgJ2NvbnN0X2Nhc3R8MTAnLFxuICAgICdjb25zdGV2YWwnLFxuICAgICdjb25zdGV4cHInLFxuICAgICdjb25zdGluaXQnLFxuICAgICdjb250aW51ZScsXG4gICAgJ2RlY2x0eXBlJyxcbiAgICAnZGVmYXVsdCcsXG4gICAgJ2RlbGV0ZScsXG4gICAgJ2RvJyxcbiAgICAnZHluYW1pY19jYXN0fDEwJyxcbiAgICAnZWxzZScsXG4gICAgJ2VudW0nLFxuICAgICdleHBsaWNpdCcsXG4gICAgJ2V4cG9ydCcsXG4gICAgJ2V4dGVybicsXG4gICAgJ2ZhbHNlJyxcbiAgICAnZmluYWwnLFxuICAgICdmb3InLFxuICAgICdmcmllbmQnLFxuICAgICdnb3RvJyxcbiAgICAnaWYnLFxuICAgICdpbXBvcnQnLFxuICAgICdpbmxpbmUnLFxuICAgICdtb2R1bGUnLFxuICAgICdtdXRhYmxlJyxcbiAgICAnbmFtZXNwYWNlJyxcbiAgICAnbmV3JyxcbiAgICAnbm9leGNlcHQnLFxuICAgICdub3QnLFxuICAgICdub3RfZXEnLFxuICAgICdudWxscHRyJyxcbiAgICAnb3BlcmF0b3InLFxuICAgICdvcicsXG4gICAgJ29yX2VxJyxcbiAgICAnb3ZlcnJpZGUnLFxuICAgICdwcml2YXRlJyxcbiAgICAncHJvdGVjdGVkJyxcbiAgICAncHVibGljJyxcbiAgICAncmVmbGV4cHInLFxuICAgICdyZWdpc3RlcicsXG4gICAgJ3JlaW50ZXJwcmV0X2Nhc3R8MTAnLFxuICAgICdyZXF1aXJlcycsXG4gICAgJ3JldHVybicsXG4gICAgJ3NpemVvZicsXG4gICAgJ3N0YXRpY19hc3NlcnQnLFxuICAgICdzdGF0aWNfY2FzdHwxMCcsXG4gICAgJ3N0cnVjdCcsXG4gICAgJ3N3aXRjaCcsXG4gICAgJ3N5bmNocm9uaXplZCcsXG4gICAgJ3RlbXBsYXRlJyxcbiAgICAndGhpcycsXG4gICAgJ3RocmVhZF9sb2NhbCcsXG4gICAgJ3Rocm93JyxcbiAgICAndHJhbnNhY3Rpb25fc2FmZScsXG4gICAgJ3RyYW5zYWN0aW9uX3NhZmVfZHluYW1pYycsXG4gICAgJ3RydWUnLFxuICAgICd0cnknLFxuICAgICd0eXBlZGVmJyxcbiAgICAndHlwZWlkJyxcbiAgICAndHlwZW5hbWUnLFxuICAgICd1bmlvbicsXG4gICAgJ3VzaW5nJyxcbiAgICAndmlydHVhbCcsXG4gICAgJ3ZvbGF0aWxlJyxcbiAgICAnd2hpbGUnLFxuICAgICd4b3InLFxuICAgICd4b3JfZXEnXG4gIF07XG5cbiAgLy8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2tleXdvcmRcbiAgY29uc3QgUkVTRVJWRURfVFlQRVMgPSBbXG4gICAgJ2Jvb2wnLFxuICAgICdjaGFyJyxcbiAgICAnY2hhcjE2X3QnLFxuICAgICdjaGFyMzJfdCcsXG4gICAgJ2NoYXI4X3QnLFxuICAgICdkb3VibGUnLFxuICAgICdmbG9hdCcsXG4gICAgJ2ludCcsXG4gICAgJ2xvbmcnLFxuICAgICdzaG9ydCcsXG4gICAgJ3ZvaWQnLFxuICAgICd3Y2hhcl90JyxcbiAgICAndW5zaWduZWQnLFxuICAgICdzaWduZWQnLFxuICAgICdjb25zdCcsXG4gICAgJ3N0YXRpYydcbiAgXTtcblxuICBjb25zdCBUWVBFX0hJTlRTID0gW1xuICAgICdhbnknLFxuICAgICdhdXRvX3B0cicsXG4gICAgJ2JhcnJpZXInLFxuICAgICdiaW5hcnlfc2VtYXBob3JlJyxcbiAgICAnYml0c2V0JyxcbiAgICAnY29tcGxleCcsXG4gICAgJ2NvbmRpdGlvbl92YXJpYWJsZScsXG4gICAgJ2NvbmRpdGlvbl92YXJpYWJsZV9hbnknLFxuICAgICdjb3VudGluZ19zZW1hcGhvcmUnLFxuICAgICdkZXF1ZScsXG4gICAgJ2ZhbHNlX3R5cGUnLFxuICAgICdmdXR1cmUnLFxuICAgICdpbWFnaW5hcnknLFxuICAgICdpbml0aWFsaXplcl9saXN0JyxcbiAgICAnaXN0cmluZ3N0cmVhbScsXG4gICAgJ2p0aHJlYWQnLFxuICAgICdsYXRjaCcsXG4gICAgJ2xvY2tfZ3VhcmQnLFxuICAgICdtdWx0aW1hcCcsXG4gICAgJ211bHRpc2V0JyxcbiAgICAnbXV0ZXgnLFxuICAgICdvcHRpb25hbCcsXG4gICAgJ29zdHJpbmdzdHJlYW0nLFxuICAgICdwYWNrYWdlZF90YXNrJyxcbiAgICAncGFpcicsXG4gICAgJ3Byb21pc2UnLFxuICAgICdwcmlvcml0eV9xdWV1ZScsXG4gICAgJ3F1ZXVlJyxcbiAgICAncmVjdXJzaXZlX211dGV4JyxcbiAgICAncmVjdXJzaXZlX3RpbWVkX211dGV4JyxcbiAgICAnc2NvcGVkX2xvY2snLFxuICAgICdzZXQnLFxuICAgICdzaGFyZWRfZnV0dXJlJyxcbiAgICAnc2hhcmVkX2xvY2snLFxuICAgICdzaGFyZWRfbXV0ZXgnLFxuICAgICdzaGFyZWRfdGltZWRfbXV0ZXgnLFxuICAgICdzaGFyZWRfcHRyJyxcbiAgICAnc3RhY2snLFxuICAgICdzdHJpbmdfdmlldycsXG4gICAgJ3N0cmluZ3N0cmVhbScsXG4gICAgJ3RpbWVkX211dGV4JyxcbiAgICAndGhyZWFkJyxcbiAgICAndHJ1ZV90eXBlJyxcbiAgICAndHVwbGUnLFxuICAgICd1bmlxdWVfbG9jaycsXG4gICAgJ3VuaXF1ZV9wdHInLFxuICAgICd1bm9yZGVyZWRfbWFwJyxcbiAgICAndW5vcmRlcmVkX211bHRpbWFwJyxcbiAgICAndW5vcmRlcmVkX211bHRpc2V0JyxcbiAgICAndW5vcmRlcmVkX3NldCcsXG4gICAgJ3ZhcmlhbnQnLFxuICAgICd2ZWN0b3InLFxuICAgICd3ZWFrX3B0cicsXG4gICAgJ3dzdHJpbmcnLFxuICAgICd3c3RyaW5nX3ZpZXcnXG4gIF07XG5cbiAgY29uc3QgRlVOQ1RJT05fSElOVFMgPSBbXG4gICAgJ2Fib3J0JyxcbiAgICAnYWJzJyxcbiAgICAnYWNvcycsXG4gICAgJ2FwcGx5JyxcbiAgICAnYXNfY29uc3QnLFxuICAgICdhc2luJyxcbiAgICAnYXRhbicsXG4gICAgJ2F0YW4yJyxcbiAgICAnY2FsbG9jJyxcbiAgICAnY2VpbCcsXG4gICAgJ2NlcnInLFxuICAgICdjaW4nLFxuICAgICdjbG9nJyxcbiAgICAnY29zJyxcbiAgICAnY29zaCcsXG4gICAgJ2NvdXQnLFxuICAgICdkZWNsdmFsJyxcbiAgICAnZW5kbCcsXG4gICAgJ2V4Y2hhbmdlJyxcbiAgICAnZXhpdCcsXG4gICAgJ2V4cCcsXG4gICAgJ2ZhYnMnLFxuICAgICdmbG9vcicsXG4gICAgJ2Ztb2QnLFxuICAgICdmb3J3YXJkJyxcbiAgICAnZnByaW50ZicsXG4gICAgJ2ZwdXRzJyxcbiAgICAnZnJlZScsXG4gICAgJ2ZyZXhwJyxcbiAgICAnZnNjYW5mJyxcbiAgICAnZnV0dXJlJyxcbiAgICAnaW52b2tlJyxcbiAgICAnaXNhbG51bScsXG4gICAgJ2lzYWxwaGEnLFxuICAgICdpc2NudHJsJyxcbiAgICAnaXNkaWdpdCcsXG4gICAgJ2lzZ3JhcGgnLFxuICAgICdpc2xvd2VyJyxcbiAgICAnaXNwcmludCcsXG4gICAgJ2lzcHVuY3QnLFxuICAgICdpc3NwYWNlJyxcbiAgICAnaXN1cHBlcicsXG4gICAgJ2lzeGRpZ2l0JyxcbiAgICAnbGFicycsXG4gICAgJ2xhdW5kZXInLFxuICAgICdsZGV4cCcsXG4gICAgJ2xvZycsXG4gICAgJ2xvZzEwJyxcbiAgICAnbWFrZV9wYWlyJyxcbiAgICAnbWFrZV9zaGFyZWQnLFxuICAgICdtYWtlX3NoYXJlZF9mb3Jfb3ZlcndyaXRlJyxcbiAgICAnbWFrZV90dXBsZScsXG4gICAgJ21ha2VfdW5pcXVlJyxcbiAgICAnbWFsbG9jJyxcbiAgICAnbWVtY2hyJyxcbiAgICAnbWVtY21wJyxcbiAgICAnbWVtY3B5JyxcbiAgICAnbWVtc2V0JyxcbiAgICAnbW9kZicsXG4gICAgJ21vdmUnLFxuICAgICdwb3cnLFxuICAgICdwcmludGYnLFxuICAgICdwdXRjaGFyJyxcbiAgICAncHV0cycsXG4gICAgJ3JlYWxsb2MnLFxuICAgICdzY2FuZicsXG4gICAgJ3NpbicsXG4gICAgJ3NpbmgnLFxuICAgICdzbnByaW50ZicsXG4gICAgJ3NwcmludGYnLFxuICAgICdzcXJ0JyxcbiAgICAnc3NjYW5mJyxcbiAgICAnc3RkJyxcbiAgICAnc3RkZXJyJyxcbiAgICAnc3RkaW4nLFxuICAgICdzdGRvdXQnLFxuICAgICdzdHJjYXQnLFxuICAgICdzdHJjaHInLFxuICAgICdzdHJjbXAnLFxuICAgICdzdHJjcHknLFxuICAgICdzdHJjc3BuJyxcbiAgICAnc3RybGVuJyxcbiAgICAnc3RybmNhdCcsXG4gICAgJ3N0cm5jbXAnLFxuICAgICdzdHJuY3B5JyxcbiAgICAnc3RycGJyaycsXG4gICAgJ3N0cnJjaHInLFxuICAgICdzdHJzcG4nLFxuICAgICdzdHJzdHInLFxuICAgICdzd2FwJyxcbiAgICAndGFuJyxcbiAgICAndGFuaCcsXG4gICAgJ3Rlcm1pbmF0ZScsXG4gICAgJ3RvX3VuZGVybHlpbmcnLFxuICAgICd0b2xvd2VyJyxcbiAgICAndG91cHBlcicsXG4gICAgJ3ZmcHJpbnRmJyxcbiAgICAndmlzaXQnLFxuICAgICd2cHJpbnRmJyxcbiAgICAndnNwcmludGYnXG4gIF07XG5cbiAgY29uc3QgTElURVJBTFMgPSBbXG4gICAgJ05VTEwnLFxuICAgICdmYWxzZScsXG4gICAgJ251bGxvcHQnLFxuICAgICdudWxscHRyJyxcbiAgICAndHJ1ZSdcbiAgXTtcblxuICAvLyBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAva2V5d29yZFxuICBjb25zdCBCVUlMVF9JTiA9IFsgJ19QcmFnbWEnIF07XG5cbiAgY29uc3QgQ1BQX0tFWVdPUkRTID0ge1xuICAgIHR5cGU6IFJFU0VSVkVEX1RZUEVTLFxuICAgIGtleXdvcmQ6IFJFU0VSVkVEX0tFWVdPUkRTLFxuICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgIGJ1aWx0X2luOiBCVUlMVF9JTixcbiAgICBfdHlwZV9oaW50czogVFlQRV9ISU5UU1xuICB9O1xuXG4gIGNvbnN0IEZVTkNUSU9OX0RJU1BBVENIID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uLmRpc3BhdGNoJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIC8vIE9ubHkgZm9yIHJlbGV2YW5jZSwgbm90IGhpZ2hsaWdodGluZy5cbiAgICAgIF9oaW50OiBGVU5DVElPTl9ISU5UUyB9LFxuICAgIGJlZ2luOiByZWdleC5jb25jYXQoXG4gICAgICAvXFxiLyxcbiAgICAgIC8oPyFkZWNsdHlwZSkvLFxuICAgICAgLyg/IWlmKS8sXG4gICAgICAvKD8hZm9yKS8sXG4gICAgICAvKD8hc3dpdGNoKS8sXG4gICAgICAvKD8hd2hpbGUpLyxcbiAgICAgIGhsanMuSURFTlRfUkUsXG4gICAgICByZWdleC5sb29rYWhlYWQoLyg8W148Pl0rPnwpXFxzKlxcKC8pKVxuICB9O1xuXG4gIGNvbnN0IEVYUFJFU1NJT05fQ09OVEFJTlMgPSBbXG4gICAgRlVOQ1RJT05fRElTUEFUQ0gsXG4gICAgUFJFUFJPQ0VTU09SLFxuICAgIENQUF9QUklNSVRJVkVfVFlQRVMsXG4gICAgQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIE5VTUJFUlMsXG4gICAgU1RSSU5HU1xuICBdO1xuXG4gIGNvbnN0IEVYUFJFU1NJT05fQ09OVEVYVCA9IHtcbiAgICAvLyBUaGlzIG1vZGUgY292ZXJzIGV4cHJlc3Npb24gY29udGV4dCB3aGVyZSB3ZSBjYW4ndCBleHBlY3QgYSBmdW5jdGlvblxuICAgIC8vIGRlZmluaXRpb24gYW5kIHNob3VsZG4ndCBoaWdobGlnaHQgYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlIG9uZTpcbiAgICAvLyBgcmV0dXJuIHNvbWUoKWAsIGBlbHNlIGlmKClgLCBgKHgqc3VtKDEsIDIpKWBcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogLz0vLFxuICAgICAgICBlbmQ6IC87L1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmV3IHRocm93IHJldHVybiBlbHNlJyxcbiAgICAgICAgZW5kOiAvOy9cbiAgICAgIH1cbiAgICBdLFxuICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05fQ09OVEFJTlMuY29uY2F0KFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoWyAnc2VsZicgXSksXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0pLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IEZVTkNUSU9OX0RFQ0xBUkFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbjogJygnICsgRlVOQ1RJT05fVFlQRV9SRSArICdbXFxcXComXFxcXHNdKykrJyArIEZVTkNUSU9OX1RJVExFLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGVuZDogL1t7Oz1dLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1teXFx3XFxzXFwqJjo8Pi5dLyxcbiAgICBjb250YWluczogW1xuICAgICAgeyAvLyB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgY29uZnVzZWQgYXMgdGhlIGZ1bmN0aW9uIHRpdGxlXG4gICAgICAgIGJlZ2luOiBERUNMVFlQRV9BVVRPX1JFLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBGVU5DVElPTl9USVRMRSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbIFRJVExFX01PREUgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gbmVlZGVkIGJlY2F1c2Ugd2UgZG8gbm90IGhhdmUgbG9vay1iZWhpbmQgb24gdGhlIGJlbG93IHJ1bGVcbiAgICAgIC8vIHRvIHByZXZlbnQgaXQgZnJvbSBncmFiYmluZyB0aGUgZmluYWwgOiBpbiBhIDo6IHBhaXJcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC86Oi8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGluaXRpYWxpemVyc1xuICAgICAge1xuICAgICAgICBiZWdpbjogLzovLFxuICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBTVFJJTkdTLFxuICAgICAgICAgIE5VTUJFUlNcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGFsbG93IGZvciBtdWx0aXBsZSBkZWNsYXJhdGlvbnMsIGUuZy46XG4gICAgICAvLyBleHRlcm4gdm9pZCBmKGludCksIGcoY2hhcik7XG4gICAgICB7XG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgbWF0Y2g6IC8sL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIFNUUklOR1MsXG4gICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICBDUFBfUFJJTUlUSVZFX1RZUEVTLFxuICAgICAgICAgIC8vIENvdW50IG1hdGNoaW5nIHBhcmVudGhlc2VzLlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBDX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBTVFJJTkdTLFxuICAgICAgICAgICAgICBOVU1CRVJTLFxuICAgICAgICAgICAgICBDUFBfUFJJTUlUSVZFX1RZUEVTXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgQ1BQX1BSSU1JVElWRV9UWVBFUyxcbiAgICAgIENfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgUFJFUFJPQ0VTU09SXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0MrKycsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ2NjJyxcbiAgICAgICdjKysnLFxuICAgICAgJ2grKycsXG4gICAgICAnaHBwJyxcbiAgICAgICdoaCcsXG4gICAgICAnaHh4JyxcbiAgICAgICdjeHgnXG4gICAgXSxcbiAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY2xhc3NOYW1lQWxpYXNlczogeyAnZnVuY3Rpb24uZGlzcGF0Y2gnOiAnYnVpbHRfaW4nIH0sXG4gICAgY29udGFpbnM6IFtdLmNvbmNhdChcbiAgICAgIEVYUFJFU1NJT05fQ09OVEVYVCxcbiAgICAgIEZVTkNUSU9OX0RFQ0xBUkFUSU9OLFxuICAgICAgRlVOQ1RJT05fRElTUEFUQ0gsXG4gICAgICBFWFBSRVNTSU9OX0NPTlRBSU5TLFxuICAgICAgW1xuICAgICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICAgIHsgLy8gY29udGFpbmVyczogaWUsIGB2ZWN0b3IgPGludD4gcm9vbXMgKDkpO2BcbiAgICAgICAgICBiZWdpbjogJ1xcXFxiKGRlcXVlfGxpc3R8cXVldWV8cHJpb3JpdHlfcXVldWV8cGFpcnxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXl8dHVwbGV8b3B0aW9uYWx8dmFyaWFudHxmdW5jdGlvbilcXFxccyo8KD8hPCknLFxuICAgICAgICAgIGVuZDogJz4nLFxuICAgICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgIENQUF9QUklNSVRJVkVfVFlQRVNcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicsXG4gICAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEU1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAgIC8vIGV4dHJhIGNvbXBsZXhpdHkgdG8gZGVhbCB3aXRoIGBlbnVtIGNsYXNzYCBhbmQgYGVudW0gc3RydWN0YFxuICAgICAgICAgICAgL1xcYig/OmVudW0oPzpcXHMrKD86Y2xhc3N8c3RydWN0KSk/fGNsYXNzfHN0cnVjdHx1bmlvbikvLFxuICAgICAgICAgICAgL1xccysvLFxuICAgICAgICAgICAgL1xcdysvXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgICAgIDE6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIDM6ICd0aXRsZS5jbGFzcydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0pXG4gIH07XG59XG5cbi8qXG5MYW5ndWFnZTogQXJkdWlub1xuQXV0aG9yOiBTdGVmYW5pYSBNZWxsYWkgPHMubWVsbGFpQGFyZHVpbm8uY2M+XG5EZXNjcmlwdGlvbjogVGhlIEFyZHVpbm/CriBMYW5ndWFnZSBpcyBhIHN1cGVyc2V0IG9mIEMrKy4gVGhpcyBydWxlcyBhcmUgZGVzaWduZWQgdG8gaGlnaGxpZ2h0IHRoZSBBcmR1aW5vwq4gc291cmNlIGNvZGUuIEZvciBpbmZvIGFib3V0IGxhbmd1YWdlIHNlZSBodHRwOi8vd3d3LmFyZHVpbm8uY2MuXG5XZWJzaXRlOiBodHRwczovL3d3dy5hcmR1aW5vLmNjXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gYXJkdWlubyhobGpzKSB7XG4gIGNvbnN0IEFSRFVJTk9fS1cgPSB7XG4gICAgdHlwZTogW1xuICAgICAgXCJib29sZWFuXCIsXG4gICAgICBcImJ5dGVcIixcbiAgICAgIFwid29yZFwiLFxuICAgICAgXCJTdHJpbmdcIlxuICAgIF0sXG4gICAgYnVpbHRfaW46IFtcbiAgICAgIFwiS2V5Ym9hcmRDb250cm9sbGVyXCIsXG4gICAgICBcIk1vdXNlQ29udHJvbGxlclwiLFxuICAgICAgXCJTb2Z0d2FyZVNlcmlhbFwiLFxuICAgICAgXCJFdGhlcm5ldFNlcnZlclwiLFxuICAgICAgXCJFdGhlcm5ldENsaWVudFwiLFxuICAgICAgXCJMaXF1aWRDcnlzdGFsXCIsXG4gICAgICBcIlJvYm90Q29udHJvbFwiLFxuICAgICAgXCJHU01Wb2ljZUNhbGxcIixcbiAgICAgIFwiRXRoZXJuZXRVRFBcIixcbiAgICAgIFwiRXNwbG9yYVRGVFwiLFxuICAgICAgXCJIdHRwQ2xpZW50XCIsXG4gICAgICBcIlJvYm90TW90b3JcIixcbiAgICAgIFwiV2lGaUNsaWVudFwiLFxuICAgICAgXCJHU01TY2FubmVyXCIsXG4gICAgICBcIkZpbGVTeXN0ZW1cIixcbiAgICAgIFwiU2NoZWR1bGVyXCIsXG4gICAgICBcIkdTTVNlcnZlclwiLFxuICAgICAgXCJZdW5DbGllbnRcIixcbiAgICAgIFwiWXVuU2VydmVyXCIsXG4gICAgICBcIklQQWRkcmVzc1wiLFxuICAgICAgXCJHU01DbGllbnRcIixcbiAgICAgIFwiR1NNTW9kZW1cIixcbiAgICAgIFwiS2V5Ym9hcmRcIixcbiAgICAgIFwiRXRoZXJuZXRcIixcbiAgICAgIFwiQ29uc29sZVwiLFxuICAgICAgXCJHU01CYW5kXCIsXG4gICAgICBcIkVzcGxvcmFcIixcbiAgICAgIFwiU3RlcHBlclwiLFxuICAgICAgXCJQcm9jZXNzXCIsXG4gICAgICBcIldpRmlVRFBcIixcbiAgICAgIFwiR1NNX1NNU1wiLFxuICAgICAgXCJNYWlsYm94XCIsXG4gICAgICBcIlVTQkhvc3RcIixcbiAgICAgIFwiRmlybWF0YVwiLFxuICAgICAgXCJQSW1hZ2VcIixcbiAgICAgIFwiQ2xpZW50XCIsXG4gICAgICBcIlNlcnZlclwiLFxuICAgICAgXCJHU01QSU5cIixcbiAgICAgIFwiRmlsZUlPXCIsXG4gICAgICBcIkJyaWRnZVwiLFxuICAgICAgXCJTZXJpYWxcIixcbiAgICAgIFwiRUVQUk9NXCIsXG4gICAgICBcIlN0cmVhbVwiLFxuICAgICAgXCJNb3VzZVwiLFxuICAgICAgXCJBdWRpb1wiLFxuICAgICAgXCJTZXJ2b1wiLFxuICAgICAgXCJGaWxlXCIsXG4gICAgICBcIlRhc2tcIixcbiAgICAgIFwiR1BSU1wiLFxuICAgICAgXCJXaUZpXCIsXG4gICAgICBcIldpcmVcIixcbiAgICAgIFwiVEZUXCIsXG4gICAgICBcIkdTTVwiLFxuICAgICAgXCJTUElcIixcbiAgICAgIFwiU0RcIlxuICAgIF0sXG4gICAgX2hpbnRzOiBbXG4gICAgICBcInNldHVwXCIsXG4gICAgICBcImxvb3BcIixcbiAgICAgIFwicnVuU2hlbGxDb21tYW5kQXN5bmNocm9ub3VzbHlcIixcbiAgICAgIFwiYW5hbG9nV3JpdGVSZXNvbHV0aW9uXCIsXG4gICAgICBcInJldHJpZXZlQ2FsbGluZ051bWJlclwiLFxuICAgICAgXCJwcmludEZpcm13YXJlVmVyc2lvblwiLFxuICAgICAgXCJhbmFsb2dSZWFkUmVzb2x1dGlvblwiLFxuICAgICAgXCJzZW5kRGlnaXRhbFBvcnRQYWlyXCIsXG4gICAgICBcIm5vTGlzdGVuT25Mb2NhbGhvc3RcIixcbiAgICAgIFwicmVhZEpveXN0aWNrQnV0dG9uXCIsXG4gICAgICBcInNldEZpcm13YXJlVmVyc2lvblwiLFxuICAgICAgXCJyZWFkSm95c3RpY2tTd2l0Y2hcIixcbiAgICAgIFwic2Nyb2xsRGlzcGxheVJpZ2h0XCIsXG4gICAgICBcImdldFZvaWNlQ2FsbFN0YXR1c1wiLFxuICAgICAgXCJzY3JvbGxEaXNwbGF5TGVmdFwiLFxuICAgICAgXCJ3cml0ZU1pY3Jvc2Vjb25kc1wiLFxuICAgICAgXCJkZWxheU1pY3Jvc2Vjb25kc1wiLFxuICAgICAgXCJiZWdpblRyYW5zbWlzc2lvblwiLFxuICAgICAgXCJnZXRTaWduYWxTdHJlbmd0aFwiLFxuICAgICAgXCJydW5Bc3luY2hyb25vdXNseVwiLFxuICAgICAgXCJnZXRBc3luY2hyb25vdXNseVwiLFxuICAgICAgXCJsaXN0ZW5PbkxvY2FsaG9zdFwiLFxuICAgICAgXCJnZXRDdXJyZW50Q2FycmllclwiLFxuICAgICAgXCJyZWFkQWNjZWxlcm9tZXRlclwiLFxuICAgICAgXCJtZXNzYWdlQXZhaWxhYmxlXCIsXG4gICAgICBcInNlbmREaWdpdGFsUG9ydHNcIixcbiAgICAgIFwibGluZUZvbGxvd0NvbmZpZ1wiLFxuICAgICAgXCJjb3VudHJ5TmFtZVdyaXRlXCIsXG4gICAgICBcInJ1blNoZWxsQ29tbWFuZFwiLFxuICAgICAgXCJyZWFkU3RyaW5nVW50aWxcIixcbiAgICAgIFwicmV3aW5kRGlyZWN0b3J5XCIsXG4gICAgICBcInJlYWRUZW1wZXJhdHVyZVwiLFxuICAgICAgXCJzZXRDbG9ja0RpdmlkZXJcIixcbiAgICAgIFwicmVhZExpZ2h0U2Vuc29yXCIsXG4gICAgICBcImVuZFRyYW5zbWlzc2lvblwiLFxuICAgICAgXCJhbmFsb2dSZWZlcmVuY2VcIixcbiAgICAgIFwiZGV0YWNoSW50ZXJydXB0XCIsXG4gICAgICBcImNvdW50cnlOYW1lUmVhZFwiLFxuICAgICAgXCJhdHRhY2hJbnRlcnJ1cHRcIixcbiAgICAgIFwiZW5jcnlwdGlvblR5cGVcIixcbiAgICAgIFwicmVhZEJ5dGVzVW50aWxcIixcbiAgICAgIFwicm9ib3ROYW1lV3JpdGVcIixcbiAgICAgIFwicmVhZE1pY3JvcGhvbmVcIixcbiAgICAgIFwicm9ib3ROYW1lUmVhZFwiLFxuICAgICAgXCJjaXR5TmFtZVdyaXRlXCIsXG4gICAgICBcInVzZXJOYW1lV3JpdGVcIixcbiAgICAgIFwicmVhZEpveXN0aWNrWVwiLFxuICAgICAgXCJyZWFkSm95c3RpY2tYXCIsXG4gICAgICBcIm1vdXNlUmVsZWFzZWRcIixcbiAgICAgIFwib3Blbk5leHRGaWxlXCIsXG4gICAgICBcInNjYW5OZXR3b3Jrc1wiLFxuICAgICAgXCJub0ludGVycnVwdHNcIixcbiAgICAgIFwiZGlnaXRhbFdyaXRlXCIsXG4gICAgICBcImJlZ2luU3BlYWtlclwiLFxuICAgICAgXCJtb3VzZVByZXNzZWRcIixcbiAgICAgIFwiaXNBY3Rpb25Eb25lXCIsXG4gICAgICBcIm1vdXNlRHJhZ2dlZFwiLFxuICAgICAgXCJkaXNwbGF5TG9nb3NcIixcbiAgICAgIFwibm9BdXRvc2Nyb2xsXCIsXG4gICAgICBcImFkZFBhcmFtZXRlclwiLFxuICAgICAgXCJyZW1vdGVOdW1iZXJcIixcbiAgICAgIFwiZ2V0TW9kaWZpZXJzXCIsXG4gICAgICBcImtleWJvYXJkUmVhZFwiLFxuICAgICAgXCJ1c2VyTmFtZVJlYWRcIixcbiAgICAgIFwid2FpdENvbnRpbnVlXCIsXG4gICAgICBcInByb2Nlc3NJbnB1dFwiLFxuICAgICAgXCJwYXJzZUNvbW1hbmRcIixcbiAgICAgIFwicHJpbnRWZXJzaW9uXCIsXG4gICAgICBcInJlYWROZXR3b3Jrc1wiLFxuICAgICAgXCJ3cml0ZU1lc3NhZ2VcIixcbiAgICAgIFwiYmxpbmtWZXJzaW9uXCIsXG4gICAgICBcImNpdHlOYW1lUmVhZFwiLFxuICAgICAgXCJyZWFkTWVzc2FnZVwiLFxuICAgICAgXCJzZXREYXRhTW9kZVwiLFxuICAgICAgXCJwYXJzZVBhY2tldFwiLFxuICAgICAgXCJpc0xpc3RlbmluZ1wiLFxuICAgICAgXCJzZXRCaXRPcmRlclwiLFxuICAgICAgXCJiZWdpblBhY2tldFwiLFxuICAgICAgXCJpc0RpcmVjdG9yeVwiLFxuICAgICAgXCJtb3RvcnNXcml0ZVwiLFxuICAgICAgXCJkcmF3Q29tcGFzc1wiLFxuICAgICAgXCJkaWdpdGFsUmVhZFwiLFxuICAgICAgXCJjbGVhclNjcmVlblwiLFxuICAgICAgXCJzZXJpYWxFdmVudFwiLFxuICAgICAgXCJyaWdodFRvTGVmdFwiLFxuICAgICAgXCJzZXRUZXh0U2l6ZVwiLFxuICAgICAgXCJsZWZ0VG9SaWdodFwiLFxuICAgICAgXCJyZXF1ZXN0RnJvbVwiLFxuICAgICAgXCJrZXlSZWxlYXNlZFwiLFxuICAgICAgXCJjb21wYXNzUmVhZFwiLFxuICAgICAgXCJhbmFsb2dXcml0ZVwiLFxuICAgICAgXCJpbnRlcnJ1cHRzXCIsXG4gICAgICBcIldpRmlTZXJ2ZXJcIixcbiAgICAgIFwiZGlzY29ubmVjdFwiLFxuICAgICAgXCJwbGF5TWVsb2R5XCIsXG4gICAgICBcInBhcnNlRmxvYXRcIixcbiAgICAgIFwiYXV0b3Njcm9sbFwiLFxuICAgICAgXCJnZXRQSU5Vc2VkXCIsXG4gICAgICBcInNldFBJTlVzZWRcIixcbiAgICAgIFwic2V0VGltZW91dFwiLFxuICAgICAgXCJzZW5kQW5hbG9nXCIsXG4gICAgICBcInJlYWRTbGlkZXJcIixcbiAgICAgIFwiYW5hbG9nUmVhZFwiLFxuICAgICAgXCJiZWdpbldyaXRlXCIsXG4gICAgICBcImNyZWF0ZUNoYXJcIixcbiAgICAgIFwibW90b3JzU3RvcFwiLFxuICAgICAgXCJrZXlQcmVzc2VkXCIsXG4gICAgICBcInRlbXBvV3JpdGVcIixcbiAgICAgIFwicmVhZEJ1dHRvblwiLFxuICAgICAgXCJzdWJuZXRNYXNrXCIsXG4gICAgICBcImRlYnVnUHJpbnRcIixcbiAgICAgIFwibWFjQWRkcmVzc1wiLFxuICAgICAgXCJ3cml0ZUdyZWVuXCIsXG4gICAgICBcInJhbmRvbVNlZWRcIixcbiAgICAgIFwiYXR0YWNoR1BSU1wiLFxuICAgICAgXCJyZWFkU3RyaW5nXCIsXG4gICAgICBcInNlbmRTdHJpbmdcIixcbiAgICAgIFwicmVtb3RlUG9ydFwiLFxuICAgICAgXCJyZWxlYXNlQWxsXCIsXG4gICAgICBcIm1vdXNlTW92ZWRcIixcbiAgICAgIFwiYmFja2dyb3VuZFwiLFxuICAgICAgXCJnZXRYQ2hhbmdlXCIsXG4gICAgICBcImdldFlDaGFuZ2VcIixcbiAgICAgIFwiYW5zd2VyQ2FsbFwiLFxuICAgICAgXCJnZXRSZXN1bHRcIixcbiAgICAgIFwidm9pY2VDYWxsXCIsXG4gICAgICBcImVuZFBhY2tldFwiLFxuICAgICAgXCJjb25zdHJhaW5cIixcbiAgICAgIFwiZ2V0U29ja2V0XCIsXG4gICAgICBcIndyaXRlSlNPTlwiLFxuICAgICAgXCJnZXRCdXR0b25cIixcbiAgICAgIFwiYXZhaWxhYmxlXCIsXG4gICAgICBcImNvbm5lY3RlZFwiLFxuICAgICAgXCJmaW5kVW50aWxcIixcbiAgICAgIFwicmVhZEJ5dGVzXCIsXG4gICAgICBcImV4aXRWYWx1ZVwiLFxuICAgICAgXCJyZWFkR3JlZW5cIixcbiAgICAgIFwid3JpdGVCbHVlXCIsXG4gICAgICBcInN0YXJ0TG9vcFwiLFxuICAgICAgXCJJUEFkZHJlc3NcIixcbiAgICAgIFwiaXNQcmVzc2VkXCIsXG4gICAgICBcInNlbmRTeXNleFwiLFxuICAgICAgXCJwYXVzZU1vZGVcIixcbiAgICAgIFwiZ2F0ZXdheUlQXCIsXG4gICAgICBcInNldEN1cnNvclwiLFxuICAgICAgXCJnZXRPZW1LZXlcIixcbiAgICAgIFwidHVuZVdyaXRlXCIsXG4gICAgICBcIm5vRGlzcGxheVwiLFxuICAgICAgXCJsb2FkSW1hZ2VcIixcbiAgICAgIFwic3dpdGNoUElOXCIsXG4gICAgICBcIm9uUmVxdWVzdFwiLFxuICAgICAgXCJvblJlY2VpdmVcIixcbiAgICAgIFwiY2hhbmdlUElOXCIsXG4gICAgICBcInBsYXlGaWxlXCIsXG4gICAgICBcIm5vQnVmZmVyXCIsXG4gICAgICBcInBhcnNlSW50XCIsXG4gICAgICBcIm92ZXJmbG93XCIsXG4gICAgICBcImNoZWNrUElOXCIsXG4gICAgICBcImtub2JSZWFkXCIsXG4gICAgICBcImJlZ2luVEZUXCIsXG4gICAgICBcImJpdENsZWFyXCIsXG4gICAgICBcInVwZGF0ZUlSXCIsXG4gICAgICBcImJpdFdyaXRlXCIsXG4gICAgICBcInBvc2l0aW9uXCIsXG4gICAgICBcIndyaXRlUkdCXCIsXG4gICAgICBcImhpZ2hCeXRlXCIsXG4gICAgICBcIndyaXRlUmVkXCIsXG4gICAgICBcInNldFNwZWVkXCIsXG4gICAgICBcInJlYWRCbHVlXCIsXG4gICAgICBcIm5vU3Ryb2tlXCIsXG4gICAgICBcInJlbW90ZUlQXCIsXG4gICAgICBcInRyYW5zZmVyXCIsXG4gICAgICBcInNodXRkb3duXCIsXG4gICAgICBcImhhbmdDYWxsXCIsXG4gICAgICBcImJlZ2luU01TXCIsXG4gICAgICBcImVuZFdyaXRlXCIsXG4gICAgICBcImF0dGFjaGVkXCIsXG4gICAgICBcIm1haW50YWluXCIsXG4gICAgICBcIm5vQ3Vyc29yXCIsXG4gICAgICBcImNoZWNrUmVnXCIsXG4gICAgICBcImNoZWNrUFVLXCIsXG4gICAgICBcInNoaWZ0T3V0XCIsXG4gICAgICBcImlzVmFsaWRcIixcbiAgICAgIFwic2hpZnRJblwiLFxuICAgICAgXCJwdWxzZUluXCIsXG4gICAgICBcImNvbm5lY3RcIixcbiAgICAgIFwicHJpbnRsblwiLFxuICAgICAgXCJsb2NhbElQXCIsXG4gICAgICBcInBpbk1vZGVcIixcbiAgICAgIFwiZ2V0SU1FSVwiLFxuICAgICAgXCJkaXNwbGF5XCIsXG4gICAgICBcIm5vQmxpbmtcIixcbiAgICAgIFwicHJvY2Vzc1wiLFxuICAgICAgXCJnZXRCYW5kXCIsXG4gICAgICBcInJ1bm5pbmdcIixcbiAgICAgIFwiYmVnaW5TRFwiLFxuICAgICAgXCJkcmF3Qk1QXCIsXG4gICAgICBcImxvd0J5dGVcIixcbiAgICAgIFwic2V0QmFuZFwiLFxuICAgICAgXCJyZWxlYXNlXCIsXG4gICAgICBcImJpdFJlYWRcIixcbiAgICAgIFwicHJlcGFyZVwiLFxuICAgICAgXCJwb2ludFRvXCIsXG4gICAgICBcInJlYWRSZWRcIixcbiAgICAgIFwic2V0TW9kZVwiLFxuICAgICAgXCJub0ZpbGxcIixcbiAgICAgIFwicmVtb3ZlXCIsXG4gICAgICBcImxpc3RlblwiLFxuICAgICAgXCJzdHJva2VcIixcbiAgICAgIFwiZGV0YWNoXCIsXG4gICAgICBcImF0dGFjaFwiLFxuICAgICAgXCJub1RvbmVcIixcbiAgICAgIFwiZXhpc3RzXCIsXG4gICAgICBcImJ1ZmZlclwiLFxuICAgICAgXCJoZWlnaHRcIixcbiAgICAgIFwiYml0U2V0XCIsXG4gICAgICBcImNpcmNsZVwiLFxuICAgICAgXCJjb25maWdcIixcbiAgICAgIFwiY3Vyc29yXCIsXG4gICAgICBcInJhbmRvbVwiLFxuICAgICAgXCJJUnJlYWRcIixcbiAgICAgIFwic2V0RE5TXCIsXG4gICAgICBcImVuZFNNU1wiLFxuICAgICAgXCJnZXRLZXlcIixcbiAgICAgIFwibWljcm9zXCIsXG4gICAgICBcIm1pbGxpc1wiLFxuICAgICAgXCJiZWdpblwiLFxuICAgICAgXCJwcmludFwiLFxuICAgICAgXCJ3cml0ZVwiLFxuICAgICAgXCJyZWFkeVwiLFxuICAgICAgXCJmbHVzaFwiLFxuICAgICAgXCJ3aWR0aFwiLFxuICAgICAgXCJpc1BJTlwiLFxuICAgICAgXCJibGlua1wiLFxuICAgICAgXCJjbGVhclwiLFxuICAgICAgXCJwcmVzc1wiLFxuICAgICAgXCJta2RpclwiLFxuICAgICAgXCJybWRpclwiLFxuICAgICAgXCJjbG9zZVwiLFxuICAgICAgXCJwb2ludFwiLFxuICAgICAgXCJ5aWVsZFwiLFxuICAgICAgXCJpbWFnZVwiLFxuICAgICAgXCJCU1NJRFwiLFxuICAgICAgXCJjbGlja1wiLFxuICAgICAgXCJkZWxheVwiLFxuICAgICAgXCJyZWFkXCIsXG4gICAgICBcInRleHRcIixcbiAgICAgIFwibW92ZVwiLFxuICAgICAgXCJwZWVrXCIsXG4gICAgICBcImJlZXBcIixcbiAgICAgIFwicmVjdFwiLFxuICAgICAgXCJsaW5lXCIsXG4gICAgICBcIm9wZW5cIixcbiAgICAgIFwic2Vla1wiLFxuICAgICAgXCJmaWxsXCIsXG4gICAgICBcInNpemVcIixcbiAgICAgIFwidHVyblwiLFxuICAgICAgXCJzdG9wXCIsXG4gICAgICBcImhvbWVcIixcbiAgICAgIFwiZmluZFwiLFxuICAgICAgXCJzdGVwXCIsXG4gICAgICBcInRvbmVcIixcbiAgICAgIFwic3FydFwiLFxuICAgICAgXCJSU1NJXCIsXG4gICAgICBcIlNTSURcIixcbiAgICAgIFwiZW5kXCIsXG4gICAgICBcImJpdFwiLFxuICAgICAgXCJ0YW5cIixcbiAgICAgIFwiY29zXCIsXG4gICAgICBcInNpblwiLFxuICAgICAgXCJwb3dcIixcbiAgICAgIFwibWFwXCIsXG4gICAgICBcImFic1wiLFxuICAgICAgXCJtYXhcIixcbiAgICAgIFwibWluXCIsXG4gICAgICBcImdldFwiLFxuICAgICAgXCJydW5cIixcbiAgICAgIFwicHV0XCJcbiAgICBdLFxuICAgIGxpdGVyYWw6IFtcbiAgICAgIFwiRElHSVRBTF9NRVNTQUdFXCIsXG4gICAgICBcIkZJUk1BVEFfU1RSSU5HXCIsXG4gICAgICBcIkFOQUxPR19NRVNTQUdFXCIsXG4gICAgICBcIlJFUE9SVF9ESUdJVEFMXCIsXG4gICAgICBcIlJFUE9SVF9BTkFMT0dcIixcbiAgICAgIFwiSU5QVVRfUFVMTFVQXCIsXG4gICAgICBcIlNFVF9QSU5fTU9ERVwiLFxuICAgICAgXCJJTlRFUk5BTDJWNTZcIixcbiAgICAgIFwiU1lTVEVNX1JFU0VUXCIsXG4gICAgICBcIkxFRF9CVUlMVElOXCIsXG4gICAgICBcIklOVEVSTkFMMVYxXCIsXG4gICAgICBcIlNZU0VYX1NUQVJUXCIsXG4gICAgICBcIklOVEVSTkFMXCIsXG4gICAgICBcIkVYVEVSTkFMXCIsXG4gICAgICBcIkRFRkFVTFRcIixcbiAgICAgIFwiT1VUUFVUXCIsXG4gICAgICBcIklOUFVUXCIsXG4gICAgICBcIkhJR0hcIixcbiAgICAgIFwiTE9XXCJcbiAgICBdXG4gIH07XG5cbiAgY29uc3QgQVJEVUlOTyA9IGNQbHVzUGx1cyhobGpzKTtcblxuICBjb25zdCBrd3MgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsYW55Pn0gKi8gKEFSRFVJTk8ua2V5d29yZHMpO1xuXG4gIGt3cy50eXBlID0gW1xuICAgIC4uLmt3cy50eXBlLFxuICAgIC4uLkFSRFVJTk9fS1cudHlwZVxuICBdO1xuICBrd3MubGl0ZXJhbCA9IFtcbiAgICAuLi5rd3MubGl0ZXJhbCxcbiAgICAuLi5BUkRVSU5PX0tXLmxpdGVyYWxcbiAgXTtcbiAga3dzLmJ1aWx0X2luID0gW1xuICAgIC4uLmt3cy5idWlsdF9pbixcbiAgICAuLi5BUkRVSU5PX0tXLmJ1aWx0X2luXG4gIF07XG4gIGt3cy5faGludHMgPSBBUkRVSU5PX0tXLl9oaW50cztcblxuICBBUkRVSU5PLm5hbWUgPSAnQXJkdWlubyc7XG4gIEFSRFVJTk8uYWxpYXNlcyA9IFsgJ2lubycgXTtcbiAgQVJEVUlOTy5zdXBlcnNldE9mID0gXCJjcHBcIjtcblxuICByZXR1cm4gQVJEVUlOTztcbn1cblxuZXhwb3J0IHsgYXJkdWlubyBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsiY1BsdXNQbHVzIiwiaGxqcyIsInJlZ2V4IiwiQ19MSU5FX0NPTU1FTlRfTU9ERSIsIkNPTU1FTlQiLCJjb250YWlucyIsImJlZ2luIiwiREVDTFRZUEVfQVVUT19SRSIsIk5BTUVTUEFDRV9SRSIsIlRFTVBMQVRFX0FSR1VNRU5UX1JFIiwiRlVOQ1RJT05fVFlQRV9SRSIsIm9wdGlvbmFsIiwiQ1BQX1BSSU1JVElWRV9UWVBFUyIsImNsYXNzTmFtZSIsIkNIQVJBQ1RFUl9FU0NBUEVTIiwiU1RSSU5HUyIsInZhcmlhbnRzIiwiZW5kIiwiaWxsZWdhbCIsIkJBQ0tTTEFTSF9FU0NBUEUiLCJFTkRfU0FNRV9BU19CRUdJTiIsIk5VTUJFUlMiLCJyZWxldmFuY2UiLCJQUkVQUk9DRVNTT1IiLCJrZXl3b3JkcyIsImtleXdvcmQiLCJpbmhlcml0IiwiQ19CTE9DS19DT01NRU5UX01PREUiLCJUSVRMRV9NT0RFIiwiSURFTlRfUkUiLCJGVU5DVElPTl9USVRMRSIsIlJFU0VSVkVEX0tFWVdPUkRTIiwiUkVTRVJWRURfVFlQRVMiLCJUWVBFX0hJTlRTIiwiRlVOQ1RJT05fSElOVFMiLCJMSVRFUkFMUyIsIkJVSUxUX0lOIiwiQ1BQX0tFWVdPUkRTIiwidHlwZSIsImxpdGVyYWwiLCJidWlsdF9pbiIsIl90eXBlX2hpbnRzIiwiRlVOQ1RJT05fRElTUEFUQ0giLCJfaGludCIsImNvbmNhdCIsImxvb2thaGVhZCIsIkVYUFJFU1NJT05fQ09OVEFJTlMiLCJFWFBSRVNTSU9OX0NPTlRFWFQiLCJiZWdpbktleXdvcmRzIiwiRlVOQ1RJT05fREVDTEFSQVRJT04iLCJyZXR1cm5CZWdpbiIsImV4Y2x1ZGVFbmQiLCJlbmRzV2l0aFBhcmVudCIsIm1hdGNoIiwibmFtZSIsImFsaWFzZXMiLCJjbGFzc05hbWVBbGlhc2VzIiwiYXJkdWlubyIsIkFSRFVJTk9fS1ciLCJfaGludHMiLCJBUkRVSU5PIiwia3dzIiwic3VwZXJzZXRPZiIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/arduino.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/bash.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/bash.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ bash)\n/* harmony export */ });\n/*\nLanguage: Bash\nAuthor: vah <vahtenberg@gmail.com>\nContributrors: Benjamin Pannell <contact@sierrasoftworks.com>\nWebsite: https://www.gnu.org/software/bash/\nCategory: common\n*/ /** @type LanguageFn */ function bash(hljs) {\n const regex = hljs.regex;\n const VAR = {};\n const BRACED_VAR = {\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [\n \"self\",\n {\n begin: /:-/,\n contains: [\n VAR\n ]\n } // default values\n ]\n };\n Object.assign(VAR, {\n className: \"variable\",\n variants: [\n {\n begin: regex.concat(/\\$[\\w\\d#@][\\w\\d_]*/, // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![\\\\w\\\\d])(?![$])`)\n },\n BRACED_VAR\n ]\n });\n const SUBST = {\n className: \"subst\",\n begin: /\\$\\(/,\n end: /\\)/,\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n };\n const HERE_DOC = {\n begin: /<<-?\\s*(?=\\w+)/,\n starts: {\n contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n className: \"string\"\n })\n ]\n }\n };\n const QUOTE_STRING = {\n className: \"string\",\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n SUBST\n ]\n };\n SUBST.contains.push(QUOTE_STRING);\n const ESCAPED_QUOTE = {\n className: \"\",\n begin: /\\\\\"/\n };\n const APOS_STRING = {\n className: \"string\",\n begin: /'/,\n end: /'/\n };\n const ARITHMETIC = {\n begin: /\\$?\\(\\(/,\n end: /\\)\\)/,\n contains: [\n {\n begin: /\\d+#[0-9a-f]+/,\n className: \"number\"\n },\n hljs.NUMBER_MODE,\n VAR\n ]\n };\n const SH_LIKE_SHELLS = [\n \"fish\",\n \"bash\",\n \"zsh\",\n \"sh\",\n \"csh\",\n \"ksh\",\n \"tcsh\",\n \"dash\",\n \"scsh\"\n ];\n const KNOWN_SHEBANG = hljs.SHEBANG({\n binary: `(${SH_LIKE_SHELLS.join(\"|\")})`,\n relevance: 10\n });\n const FUNCTION = {\n className: \"function\",\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: /\\w[\\w\\d_]*/\n })\n ],\n relevance: 0\n };\n const KEYWORDS = [\n \"if\",\n \"then\",\n \"else\",\n \"elif\",\n \"fi\",\n \"for\",\n \"while\",\n \"in\",\n \"do\",\n \"done\",\n \"case\",\n \"esac\",\n \"function\"\n ];\n const LITERALS = [\n \"true\",\n \"false\"\n ];\n // to consume paths to prevent keyword matches inside them\n const PATH_MODE = {\n match: /(\\/[a-z._-]+)+/\n };\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n const SHELL_BUILT_INS = [\n \"break\",\n \"cd\",\n \"continue\",\n \"eval\",\n \"exec\",\n \"exit\",\n \"export\",\n \"getopts\",\n \"hash\",\n \"pwd\",\n \"readonly\",\n \"return\",\n \"shift\",\n \"test\",\n \"times\",\n \"trap\",\n \"umask\",\n \"unset\"\n ];\n const BASH_BUILT_INS = [\n \"alias\",\n \"bind\",\n \"builtin\",\n \"caller\",\n \"command\",\n \"declare\",\n \"echo\",\n \"enable\",\n \"help\",\n \"let\",\n \"local\",\n \"logout\",\n \"mapfile\",\n \"printf\",\n \"read\",\n \"readarray\",\n \"source\",\n \"type\",\n \"typeset\",\n \"ulimit\",\n \"unalias\"\n ];\n const ZSH_BUILT_INS = [\n \"autoload\",\n \"bg\",\n \"bindkey\",\n \"bye\",\n \"cap\",\n \"chdir\",\n \"clone\",\n \"comparguments\",\n \"compcall\",\n \"compctl\",\n \"compdescribe\",\n \"compfiles\",\n \"compgroups\",\n \"compquote\",\n \"comptags\",\n \"comptry\",\n \"compvalues\",\n \"dirs\",\n \"disable\",\n \"disown\",\n \"echotc\",\n \"echoti\",\n \"emulate\",\n \"fc\",\n \"fg\",\n \"float\",\n \"functions\",\n \"getcap\",\n \"getln\",\n \"history\",\n \"integer\",\n \"jobs\",\n \"kill\",\n \"limit\",\n \"log\",\n \"noglob\",\n \"popd\",\n \"print\",\n \"pushd\",\n \"pushln\",\n \"rehash\",\n \"sched\",\n \"setcap\",\n \"setopt\",\n \"stat\",\n \"suspend\",\n \"ttyctl\",\n \"unfunction\",\n \"unhash\",\n \"unlimit\",\n \"unsetopt\",\n \"vared\",\n \"wait\",\n \"whence\",\n \"where\",\n \"which\",\n \"zcompile\",\n \"zformat\",\n \"zftp\",\n \"zle\",\n \"zmodload\",\n \"zparseopts\",\n \"zprof\",\n \"zpty\",\n \"zregexparse\",\n \"zsocket\",\n \"zstyle\",\n \"ztcp\"\n ];\n const GNU_CORE_UTILS = [\n \"chcon\",\n \"chgrp\",\n \"chown\",\n \"chmod\",\n \"cp\",\n \"dd\",\n \"df\",\n \"dir\",\n \"dircolors\",\n \"ln\",\n \"ls\",\n \"mkdir\",\n \"mkfifo\",\n \"mknod\",\n \"mktemp\",\n \"mv\",\n \"realpath\",\n \"rm\",\n \"rmdir\",\n \"shred\",\n \"sync\",\n \"touch\",\n \"truncate\",\n \"vdir\",\n \"b2sum\",\n \"base32\",\n \"base64\",\n \"cat\",\n \"cksum\",\n \"comm\",\n \"csplit\",\n \"cut\",\n \"expand\",\n \"fmt\",\n \"fold\",\n \"head\",\n \"join\",\n \"md5sum\",\n \"nl\",\n \"numfmt\",\n \"od\",\n \"paste\",\n \"ptx\",\n \"pr\",\n \"sha1sum\",\n \"sha224sum\",\n \"sha256sum\",\n \"sha384sum\",\n \"sha512sum\",\n \"shuf\",\n \"sort\",\n \"split\",\n \"sum\",\n \"tac\",\n \"tail\",\n \"tr\",\n \"tsort\",\n \"unexpand\",\n \"uniq\",\n \"wc\",\n \"arch\",\n \"basename\",\n \"chroot\",\n \"date\",\n \"dirname\",\n \"du\",\n \"echo\",\n \"env\",\n \"expr\",\n \"factor\",\n // \"false\", // keyword literal already\n \"groups\",\n \"hostid\",\n \"id\",\n \"link\",\n \"logname\",\n \"nice\",\n \"nohup\",\n \"nproc\",\n \"pathchk\",\n \"pinky\",\n \"printenv\",\n \"printf\",\n \"pwd\",\n \"readlink\",\n \"runcon\",\n \"seq\",\n \"sleep\",\n \"stat\",\n \"stdbuf\",\n \"stty\",\n \"tee\",\n \"test\",\n \"timeout\",\n // \"true\", // keyword literal already\n \"tty\",\n \"uname\",\n \"unlink\",\n \"uptime\",\n \"users\",\n \"who\",\n \"whoami\",\n \"yes\"\n ];\n return {\n name: \"Bash\",\n aliases: [\n \"sh\"\n ],\n keywords: {\n $pattern: /\\b[a-z][a-z0-9._-]+\\b/,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: [\n ...SHELL_BUILT_INS,\n ...BASH_BUILT_INS,\n // Shell modifiers\n \"set\",\n \"shopt\",\n ...ZSH_BUILT_INS,\n ...GNU_CORE_UTILS\n ]\n },\n contains: [\n KNOWN_SHEBANG,\n hljs.SHEBANG(),\n FUNCTION,\n ARITHMETIC,\n hljs.HASH_COMMENT_MODE,\n HERE_DOC,\n PATH_MODE,\n QUOTE_STRING,\n ESCAPED_QUOTE,\n APOS_STRING,\n VAR\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9iYXNoLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7O0FBTUEsR0FFQSxxQkFBcUIsR0FDckIsU0FBU0EsS0FBS0MsSUFBSTtJQUNoQixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLE1BQU1DLE1BQU0sQ0FBQztJQUNiLE1BQU1DLGFBQWE7UUFDakJDLE9BQU87UUFDUEMsS0FBSztRQUNMQyxVQUFVO1lBQ1I7WUFDQTtnQkFDRUYsT0FBTztnQkFDUEUsVUFBVTtvQkFBRUo7aUJBQUs7WUFDbkIsRUFBRSxpQkFBaUI7U0FDcEI7SUFDSDtJQUNBSyxPQUFPQyxNQUFNLENBQUNOLEtBQUs7UUFDakJPLFdBQVc7UUFDWEMsVUFBVTtZQUNSO2dCQUFFTixPQUFPSCxNQUFNVSxNQUFNLENBQUMsc0JBQ3BCLG9FQUFvRTtnQkFDcEUsMENBQTBDO2dCQUMxQyxDQUFDLG1CQUFtQixDQUFDO1lBQUU7WUFDekJSO1NBQ0Q7SUFDSDtJQUVBLE1BQU1TLFFBQVE7UUFDWkgsV0FBVztRQUNYTCxPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsVUFBVTtZQUFFTixLQUFLYSxnQkFBZ0I7U0FBRTtJQUNyQztJQUNBLE1BQU1DLFdBQVc7UUFDZlYsT0FBTztRQUNQVyxRQUFRO1lBQUVULFVBQVU7Z0JBQ2xCTixLQUFLZ0IsaUJBQWlCLENBQUM7b0JBQ3JCWixPQUFPO29CQUNQQyxLQUFLO29CQUNMSSxXQUFXO2dCQUNiO2FBQ0Q7UUFBQztJQUNKO0lBQ0EsTUFBTVEsZUFBZTtRQUNuQlIsV0FBVztRQUNYTCxPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsVUFBVTtZQUNSTixLQUFLYSxnQkFBZ0I7WUFDckJYO1lBQ0FVO1NBQ0Q7SUFDSDtJQUNBQSxNQUFNTixRQUFRLENBQUNZLElBQUksQ0FBQ0Q7SUFDcEIsTUFBTUUsZ0JBQWdCO1FBQ3BCVixXQUFXO1FBQ1hMLE9BQU87SUFFVDtJQUNBLE1BQU1nQixjQUFjO1FBQ2xCWCxXQUFXO1FBQ1hMLE9BQU87UUFDUEMsS0FBSztJQUNQO0lBQ0EsTUFBTWdCLGFBQWE7UUFDakJqQixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsVUFBVTtZQUNSO2dCQUNFRixPQUFPO2dCQUNQSyxXQUFXO1lBQ2I7WUFDQVQsS0FBS3NCLFdBQVc7WUFDaEJwQjtTQUNEO0lBQ0g7SUFDQSxNQUFNcUIsaUJBQWlCO1FBQ3JCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBQ0QsTUFBTUMsZ0JBQWdCeEIsS0FBS3lCLE9BQU8sQ0FBQztRQUNqQ0MsUUFBUSxDQUFDLENBQUMsRUFBRUgsZUFBZUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDQyxXQUFXO0lBQ2I7SUFDQSxNQUFNQyxXQUFXO1FBQ2ZwQixXQUFXO1FBQ1hMLE9BQU87UUFDUDBCLGFBQWE7UUFDYnhCLFVBQVU7WUFBRU4sS0FBSytCLE9BQU8sQ0FBQy9CLEtBQUtnQyxVQUFVLEVBQUU7Z0JBQUU1QixPQUFPO1lBQWE7U0FBSTtRQUNwRXdCLFdBQVc7SUFDYjtJQUVBLE1BQU1LLFdBQVc7UUFDZjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsTUFBTUMsV0FBVztRQUNmO1FBQ0E7S0FDRDtJQUVELDBEQUEwRDtJQUMxRCxNQUFNQyxZQUFZO1FBQUVDLE9BQU87SUFBaUI7SUFFNUMsZ0ZBQWdGO0lBQ2hGLE1BQU1DLGtCQUFrQjtRQUN0QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELE1BQU1DLGlCQUFpQjtRQUNyQjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELE1BQU1DLGdCQUFnQjtRQUNwQjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxNQUFNQyxpQkFBaUI7UUFDckI7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSxzQ0FBc0M7UUFDdEM7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLHFDQUFxQztRQUNyQztRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxPQUFPO1FBQ0xDLE1BQU07UUFDTkMsU0FBUztZQUFFO1NBQU07UUFDakJDLFVBQVU7WUFDUkMsVUFBVTtZQUNWQyxTQUFTWjtZQUNUYSxTQUFTWjtZQUNUYSxVQUFVO21CQUNMVjttQkFDQUM7Z0JBQ0gsa0JBQWtCO2dCQUNsQjtnQkFDQTttQkFDR0M7bUJBQ0FDO2FBQ0o7UUFDSDtRQUNBbEMsVUFBVTtZQUNSa0I7WUFDQXhCLEtBQUt5QixPQUFPO1lBQ1pJO1lBQ0FSO1lBQ0FyQixLQUFLZ0QsaUJBQWlCO1lBQ3RCbEM7WUFDQXFCO1lBQ0FsQjtZQUNBRTtZQUNBQztZQUNBbEI7U0FDRDtJQUNIO0FBQ0Y7QUFFMkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL2Jhc2guanM/ZmFiYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEJhc2hcbkF1dGhvcjogdmFoIDx2YWh0ZW5iZXJnQGdtYWlsLmNvbT5cbkNvbnRyaWJ1dHJvcnM6IEJlbmphbWluIFBhbm5lbGwgPGNvbnRhY3RAc2llcnJhc29mdHdvcmtzLmNvbT5cbldlYnNpdGU6IGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmFzaC9cbkNhdGVnb3J5OiBjb21tb25cbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBiYXNoKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICBjb25zdCBWQVIgPSB7fTtcbiAgY29uc3QgQlJBQ0VEX1ZBUiA9IHtcbiAgICBiZWdpbjogL1xcJFxcey8sXG4gICAgZW5kOiAvXFx9LyxcbiAgICBjb250YWluczogW1xuICAgICAgXCJzZWxmXCIsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvOi0vLFxuICAgICAgICBjb250YWluczogWyBWQVIgXVxuICAgICAgfSAvLyBkZWZhdWx0IHZhbHVlc1xuICAgIF1cbiAgfTtcbiAgT2JqZWN0LmFzc2lnbihWQVIsIHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46IHJlZ2V4LmNvbmNhdCgvXFwkW1xcd1xcZCNAXVtcXHdcXGRfXSovLFxuICAgICAgICAvLyBuZWdhdGl2ZSBsb29rLWFoZWFkIHRyaWVzIHRvIGF2b2lkIG1hdGNoaW5nIHBhdHRlcm5zIHRoYXQgYXJlIG5vdFxuICAgICAgICAvLyBQZXJsIGF0IGFsbCBsaWtlICRpZGVudCQsIEBpZGVudEAsIGV0Yy5cbiAgICAgICAgYCg/IVtcXFxcd1xcXFxkXSkoPyFbJF0pYCkgfSxcbiAgICAgIEJSQUNFRF9WQVJcbiAgICBdXG4gIH0pO1xuXG4gIGNvbnN0IFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcJFxcKC8sXG4gICAgZW5kOiAvXFwpLyxcbiAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXVxuICB9O1xuICBjb25zdCBIRVJFX0RPQyA9IHtcbiAgICBiZWdpbjogLzw8LT9cXHMqKD89XFx3KykvLFxuICAgIHN0YXJ0czogeyBjb250YWluczogW1xuICAgICAgaGxqcy5FTkRfU0FNRV9BU19CRUdJTih7XG4gICAgICAgIGJlZ2luOiAvKFxcdyspLyxcbiAgICAgICAgZW5kOiAvKFxcdyspLyxcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJ1xuICAgICAgfSlcbiAgICBdIH1cbiAgfTtcbiAgY29uc3QgUVVPVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46IC9cIi8sXG4gICAgZW5kOiAvXCIvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICBWQVIsXG4gICAgICBTVUJTVFxuICAgIF1cbiAgfTtcbiAgU1VCU1QuY29udGFpbnMucHVzaChRVU9URV9TVFJJTkcpO1xuICBjb25zdCBFU0NBUEVEX1FVT1RFID0ge1xuICAgIGNsYXNzTmFtZTogJycsXG4gICAgYmVnaW46IC9cXFxcXCIvXG5cbiAgfTtcbiAgY29uc3QgQVBPU19TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogLycvLFxuICAgIGVuZDogLycvXG4gIH07XG4gIGNvbnN0IEFSSVRITUVUSUMgPSB7XG4gICAgYmVnaW46IC9cXCQ/XFwoXFwoLyxcbiAgICBlbmQ6IC9cXClcXCkvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxkKyNbMC05YS1mXSsvLFxuICAgICAgICBjbGFzc05hbWU6IFwibnVtYmVyXCJcbiAgICAgIH0sXG4gICAgICBobGpzLk5VTUJFUl9NT0RFLFxuICAgICAgVkFSXG4gICAgXVxuICB9O1xuICBjb25zdCBTSF9MSUtFX1NIRUxMUyA9IFtcbiAgICBcImZpc2hcIixcbiAgICBcImJhc2hcIixcbiAgICBcInpzaFwiLFxuICAgIFwic2hcIixcbiAgICBcImNzaFwiLFxuICAgIFwia3NoXCIsXG4gICAgXCJ0Y3NoXCIsXG4gICAgXCJkYXNoXCIsXG4gICAgXCJzY3NoXCIsXG4gIF07XG4gIGNvbnN0IEtOT1dOX1NIRUJBTkcgPSBobGpzLlNIRUJBTkcoe1xuICAgIGJpbmFyeTogYCgke1NIX0xJS0VfU0hFTExTLmpvaW4oXCJ8XCIpfSlgLFxuICAgIHJlbGV2YW5jZTogMTBcbiAgfSk7XG4gIGNvbnN0IEZVTkNUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbjogL1xcd1tcXHdcXGRfXSpcXHMqXFwoXFxzKlxcKVxccypcXHsvLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHsgYmVnaW46IC9cXHdbXFx3XFxkX10qLyB9KSBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IEtFWVdPUkRTID0gW1xuICAgIFwiaWZcIixcbiAgICBcInRoZW5cIixcbiAgICBcImVsc2VcIixcbiAgICBcImVsaWZcIixcbiAgICBcImZpXCIsXG4gICAgXCJmb3JcIixcbiAgICBcIndoaWxlXCIsXG4gICAgXCJpblwiLFxuICAgIFwiZG9cIixcbiAgICBcImRvbmVcIixcbiAgICBcImNhc2VcIixcbiAgICBcImVzYWNcIixcbiAgICBcImZ1bmN0aW9uXCJcbiAgXTtcblxuICBjb25zdCBMSVRFUkFMUyA9IFtcbiAgICBcInRydWVcIixcbiAgICBcImZhbHNlXCJcbiAgXTtcblxuICAvLyB0byBjb25zdW1lIHBhdGhzIHRvIHByZXZlbnQga2V5d29yZCBtYXRjaGVzIGluc2lkZSB0aGVtXG4gIGNvbnN0IFBBVEhfTU9ERSA9IHsgbWF0Y2g6IC8oXFwvW2Etei5fLV0rKSsvIH07XG5cbiAgLy8gaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jhc2gvbWFudWFsL2h0bWxfbm9kZS9TaGVsbC1CdWlsdGluLUNvbW1hbmRzLmh0bWxcbiAgY29uc3QgU0hFTExfQlVJTFRfSU5TID0gW1xuICAgIFwiYnJlYWtcIixcbiAgICBcImNkXCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwiZXZhbFwiLFxuICAgIFwiZXhlY1wiLFxuICAgIFwiZXhpdFwiLFxuICAgIFwiZXhwb3J0XCIsXG4gICAgXCJnZXRvcHRzXCIsXG4gICAgXCJoYXNoXCIsXG4gICAgXCJwd2RcIixcbiAgICBcInJlYWRvbmx5XCIsXG4gICAgXCJyZXR1cm5cIixcbiAgICBcInNoaWZ0XCIsXG4gICAgXCJ0ZXN0XCIsXG4gICAgXCJ0aW1lc1wiLFxuICAgIFwidHJhcFwiLFxuICAgIFwidW1hc2tcIixcbiAgICBcInVuc2V0XCJcbiAgXTtcblxuICBjb25zdCBCQVNIX0JVSUxUX0lOUyA9IFtcbiAgICBcImFsaWFzXCIsXG4gICAgXCJiaW5kXCIsXG4gICAgXCJidWlsdGluXCIsXG4gICAgXCJjYWxsZXJcIixcbiAgICBcImNvbW1hbmRcIixcbiAgICBcImRlY2xhcmVcIixcbiAgICBcImVjaG9cIixcbiAgICBcImVuYWJsZVwiLFxuICAgIFwiaGVscFwiLFxuICAgIFwibGV0XCIsXG4gICAgXCJsb2NhbFwiLFxuICAgIFwibG9nb3V0XCIsXG4gICAgXCJtYXBmaWxlXCIsXG4gICAgXCJwcmludGZcIixcbiAgICBcInJlYWRcIixcbiAgICBcInJlYWRhcnJheVwiLFxuICAgIFwic291cmNlXCIsXG4gICAgXCJ0eXBlXCIsXG4gICAgXCJ0eXBlc2V0XCIsXG4gICAgXCJ1bGltaXRcIixcbiAgICBcInVuYWxpYXNcIlxuICBdO1xuXG4gIGNvbnN0IFpTSF9CVUlMVF9JTlMgPSBbXG4gICAgXCJhdXRvbG9hZFwiLFxuICAgIFwiYmdcIixcbiAgICBcImJpbmRrZXlcIixcbiAgICBcImJ5ZVwiLFxuICAgIFwiY2FwXCIsXG4gICAgXCJjaGRpclwiLFxuICAgIFwiY2xvbmVcIixcbiAgICBcImNvbXBhcmd1bWVudHNcIixcbiAgICBcImNvbXBjYWxsXCIsXG4gICAgXCJjb21wY3RsXCIsXG4gICAgXCJjb21wZGVzY3JpYmVcIixcbiAgICBcImNvbXBmaWxlc1wiLFxuICAgIFwiY29tcGdyb3Vwc1wiLFxuICAgIFwiY29tcHF1b3RlXCIsXG4gICAgXCJjb21wdGFnc1wiLFxuICAgIFwiY29tcHRyeVwiLFxuICAgIFwiY29tcHZhbHVlc1wiLFxuICAgIFwiZGlyc1wiLFxuICAgIFwiZGlzYWJsZVwiLFxuICAgIFwiZGlzb3duXCIsXG4gICAgXCJlY2hvdGNcIixcbiAgICBcImVjaG90aVwiLFxuICAgIFwiZW11bGF0ZVwiLFxuICAgIFwiZmNcIixcbiAgICBcImZnXCIsXG4gICAgXCJmbG9hdFwiLFxuICAgIFwiZnVuY3Rpb25zXCIsXG4gICAgXCJnZXRjYXBcIixcbiAgICBcImdldGxuXCIsXG4gICAgXCJoaXN0b3J5XCIsXG4gICAgXCJpbnRlZ2VyXCIsXG4gICAgXCJqb2JzXCIsXG4gICAgXCJraWxsXCIsXG4gICAgXCJsaW1pdFwiLFxuICAgIFwibG9nXCIsXG4gICAgXCJub2dsb2JcIixcbiAgICBcInBvcGRcIixcbiAgICBcInByaW50XCIsXG4gICAgXCJwdXNoZFwiLFxuICAgIFwicHVzaGxuXCIsXG4gICAgXCJyZWhhc2hcIixcbiAgICBcInNjaGVkXCIsXG4gICAgXCJzZXRjYXBcIixcbiAgICBcInNldG9wdFwiLFxuICAgIFwic3RhdFwiLFxuICAgIFwic3VzcGVuZFwiLFxuICAgIFwidHR5Y3RsXCIsXG4gICAgXCJ1bmZ1bmN0aW9uXCIsXG4gICAgXCJ1bmhhc2hcIixcbiAgICBcInVubGltaXRcIixcbiAgICBcInVuc2V0b3B0XCIsXG4gICAgXCJ2YXJlZFwiLFxuICAgIFwid2FpdFwiLFxuICAgIFwid2hlbmNlXCIsXG4gICAgXCJ3aGVyZVwiLFxuICAgIFwid2hpY2hcIixcbiAgICBcInpjb21waWxlXCIsXG4gICAgXCJ6Zm9ybWF0XCIsXG4gICAgXCJ6ZnRwXCIsXG4gICAgXCJ6bGVcIixcbiAgICBcInptb2Rsb2FkXCIsXG4gICAgXCJ6cGFyc2VvcHRzXCIsXG4gICAgXCJ6cHJvZlwiLFxuICAgIFwienB0eVwiLFxuICAgIFwienJlZ2V4cGFyc2VcIixcbiAgICBcInpzb2NrZXRcIixcbiAgICBcInpzdHlsZVwiLFxuICAgIFwienRjcFwiXG4gIF07XG5cbiAgY29uc3QgR05VX0NPUkVfVVRJTFMgPSBbXG4gICAgXCJjaGNvblwiLFxuICAgIFwiY2hncnBcIixcbiAgICBcImNob3duXCIsXG4gICAgXCJjaG1vZFwiLFxuICAgIFwiY3BcIixcbiAgICBcImRkXCIsXG4gICAgXCJkZlwiLFxuICAgIFwiZGlyXCIsXG4gICAgXCJkaXJjb2xvcnNcIixcbiAgICBcImxuXCIsXG4gICAgXCJsc1wiLFxuICAgIFwibWtkaXJcIixcbiAgICBcIm1rZmlmb1wiLFxuICAgIFwibWtub2RcIixcbiAgICBcIm1rdGVtcFwiLFxuICAgIFwibXZcIixcbiAgICBcInJlYWxwYXRoXCIsXG4gICAgXCJybVwiLFxuICAgIFwicm1kaXJcIixcbiAgICBcInNocmVkXCIsXG4gICAgXCJzeW5jXCIsXG4gICAgXCJ0b3VjaFwiLFxuICAgIFwidHJ1bmNhdGVcIixcbiAgICBcInZkaXJcIixcbiAgICBcImIyc3VtXCIsXG4gICAgXCJiYXNlMzJcIixcbiAgICBcImJhc2U2NFwiLFxuICAgIFwiY2F0XCIsXG4gICAgXCJja3N1bVwiLFxuICAgIFwiY29tbVwiLFxuICAgIFwiY3NwbGl0XCIsXG4gICAgXCJjdXRcIixcbiAgICBcImV4cGFuZFwiLFxuICAgIFwiZm10XCIsXG4gICAgXCJmb2xkXCIsXG4gICAgXCJoZWFkXCIsXG4gICAgXCJqb2luXCIsXG4gICAgXCJtZDVzdW1cIixcbiAgICBcIm5sXCIsXG4gICAgXCJudW1mbXRcIixcbiAgICBcIm9kXCIsXG4gICAgXCJwYXN0ZVwiLFxuICAgIFwicHR4XCIsXG4gICAgXCJwclwiLFxuICAgIFwic2hhMXN1bVwiLFxuICAgIFwic2hhMjI0c3VtXCIsXG4gICAgXCJzaGEyNTZzdW1cIixcbiAgICBcInNoYTM4NHN1bVwiLFxuICAgIFwic2hhNTEyc3VtXCIsXG4gICAgXCJzaHVmXCIsXG4gICAgXCJzb3J0XCIsXG4gICAgXCJzcGxpdFwiLFxuICAgIFwic3VtXCIsXG4gICAgXCJ0YWNcIixcbiAgICBcInRhaWxcIixcbiAgICBcInRyXCIsXG4gICAgXCJ0c29ydFwiLFxuICAgIFwidW5leHBhbmRcIixcbiAgICBcInVuaXFcIixcbiAgICBcIndjXCIsXG4gICAgXCJhcmNoXCIsXG4gICAgXCJiYXNlbmFtZVwiLFxuICAgIFwiY2hyb290XCIsXG4gICAgXCJkYXRlXCIsXG4gICAgXCJkaXJuYW1lXCIsXG4gICAgXCJkdVwiLFxuICAgIFwiZWNob1wiLFxuICAgIFwiZW52XCIsXG4gICAgXCJleHByXCIsXG4gICAgXCJmYWN0b3JcIixcbiAgICAvLyBcImZhbHNlXCIsIC8vIGtleXdvcmQgbGl0ZXJhbCBhbHJlYWR5XG4gICAgXCJncm91cHNcIixcbiAgICBcImhvc3RpZFwiLFxuICAgIFwiaWRcIixcbiAgICBcImxpbmtcIixcbiAgICBcImxvZ25hbWVcIixcbiAgICBcIm5pY2VcIixcbiAgICBcIm5vaHVwXCIsXG4gICAgXCJucHJvY1wiLFxuICAgIFwicGF0aGNoa1wiLFxuICAgIFwicGlua3lcIixcbiAgICBcInByaW50ZW52XCIsXG4gICAgXCJwcmludGZcIixcbiAgICBcInB3ZFwiLFxuICAgIFwicmVhZGxpbmtcIixcbiAgICBcInJ1bmNvblwiLFxuICAgIFwic2VxXCIsXG4gICAgXCJzbGVlcFwiLFxuICAgIFwic3RhdFwiLFxuICAgIFwic3RkYnVmXCIsXG4gICAgXCJzdHR5XCIsXG4gICAgXCJ0ZWVcIixcbiAgICBcInRlc3RcIixcbiAgICBcInRpbWVvdXRcIixcbiAgICAvLyBcInRydWVcIiwgLy8ga2V5d29yZCBsaXRlcmFsIGFscmVhZHlcbiAgICBcInR0eVwiLFxuICAgIFwidW5hbWVcIixcbiAgICBcInVubGlua1wiLFxuICAgIFwidXB0aW1lXCIsXG4gICAgXCJ1c2Vyc1wiLFxuICAgIFwid2hvXCIsXG4gICAgXCJ3aG9hbWlcIixcbiAgICBcInllc1wiXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnQmFzaCcsXG4gICAgYWxpYXNlczogWyAnc2gnIF0sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiAvXFxiW2Etel1bYS16MC05Ll8tXStcXGIvLFxuICAgICAga2V5d29yZDogS0VZV09SRFMsXG4gICAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICAgIGJ1aWx0X2luOiBbXG4gICAgICAgIC4uLlNIRUxMX0JVSUxUX0lOUyxcbiAgICAgICAgLi4uQkFTSF9CVUlMVF9JTlMsXG4gICAgICAgIC8vIFNoZWxsIG1vZGlmaWVyc1xuICAgICAgICBcInNldFwiLFxuICAgICAgICBcInNob3B0XCIsXG4gICAgICAgIC4uLlpTSF9CVUlMVF9JTlMsXG4gICAgICAgIC4uLkdOVV9DT1JFX1VUSUxTXG4gICAgICBdXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgS05PV05fU0hFQkFORywgLy8gdG8gY2F0Y2gga25vd24gc2hlbGxzIGFuZCBib29zdCByZWxldmFuY3lcbiAgICAgIGhsanMuU0hFQkFORygpLCAvLyB0byBjYXRjaCB1bmtub3duIHNoZWxscyBidXQgc3RpbGwgaGlnaGxpZ2h0IHRoZSBzaGViYW5nXG4gICAgICBGVU5DVElPTixcbiAgICAgIEFSSVRITUVUSUMsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgSEVSRV9ET0MsXG4gICAgICBQQVRIX01PREUsXG4gICAgICBRVU9URV9TVFJJTkcsXG4gICAgICBFU0NBUEVEX1FVT1RFLFxuICAgICAgQVBPU19TVFJJTkcsXG4gICAgICBWQVJcbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IGJhc2ggYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbImJhc2giLCJobGpzIiwicmVnZXgiLCJWQVIiLCJCUkFDRURfVkFSIiwiYmVnaW4iLCJlbmQiLCJjb250YWlucyIsIk9iamVjdCIsImFzc2lnbiIsImNsYXNzTmFtZSIsInZhcmlhbnRzIiwiY29uY2F0IiwiU1VCU1QiLCJCQUNLU0xBU0hfRVNDQVBFIiwiSEVSRV9ET0MiLCJzdGFydHMiLCJFTkRfU0FNRV9BU19CRUdJTiIsIlFVT1RFX1NUUklORyIsInB1c2giLCJFU0NBUEVEX1FVT1RFIiwiQVBPU19TVFJJTkciLCJBUklUSE1FVElDIiwiTlVNQkVSX01PREUiLCJTSF9MSUtFX1NIRUxMUyIsIktOT1dOX1NIRUJBTkciLCJTSEVCQU5HIiwiYmluYXJ5Iiwiam9pbiIsInJlbGV2YW5jZSIsIkZVTkNUSU9OIiwicmV0dXJuQmVnaW4iLCJpbmhlcml0IiwiVElUTEVfTU9ERSIsIktFWVdPUkRTIiwiTElURVJBTFMiLCJQQVRIX01PREUiLCJtYXRjaCIsIlNIRUxMX0JVSUxUX0lOUyIsIkJBU0hfQlVJTFRfSU5TIiwiWlNIX0JVSUxUX0lOUyIsIkdOVV9DT1JFX1VUSUxTIiwibmFtZSIsImFsaWFzZXMiLCJrZXl3b3JkcyIsIiRwYXR0ZXJuIiwia2V5d29yZCIsImxpdGVyYWwiLCJidWlsdF9pbiIsIkhBU0hfQ09NTUVOVF9NT0RFIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/bash.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/c.js":
/*!*****************************************************!*\
!*** ./node_modules/highlight.js/es/languages/c.js ***!
\*****************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ c)\n/* harmony export */ });\n/*\nLanguage: C\nCategory: common, system\nWebsite: https://en.wikipedia.org/wiki/C_(programming_language)\n*/ /** @type LanguageFn */ function c(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT(\"//\", \"$\", {\n contains: [\n {\n begin: /\\\\\\n/\n }\n ]\n });\n const DECLTYPE_AUTO_RE = \"decltype\\\\(auto\\\\)\";\n const NAMESPACE_RE = \"[a-zA-Z_]\\\\w*::\";\n const TEMPLATE_ARGUMENT_RE = \"<[^<>]+>\";\n const FUNCTION_TYPE_RE = \"(\" + DECLTYPE_AUTO_RE + \"|\" + regex.optional(NAMESPACE_RE) + \"[a-zA-Z_]\\\\w*\" + regex.optional(TEMPLATE_ARGUMENT_RE) + \")\";\n const TYPES = {\n className: \"type\",\n variants: [\n {\n begin: \"\\\\b[a-z\\\\d_]*_t\\\\b\"\n },\n {\n match: /\\batomic_[a-z]{3,6}\\b/\n }\n ]\n };\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)\";\n const STRINGS = {\n className: \"string\",\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: \"\\\\n\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n {\n begin: \"(u8?|U|L)?'(\" + CHARACTER_ESCAPES + \"|.)\",\n end: \"'\",\n illegal: \".\"\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n const NUMBERS = {\n className: \"number\",\n variants: [\n {\n begin: \"\\\\b(0b[01']+)\"\n },\n {\n begin: \"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)\"\n },\n {\n begin: \"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n }\n ],\n relevance: 0\n };\n const PREPROCESSOR = {\n className: \"meta\",\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n keyword: \"if else elif endif define undef warning error line \" + \"pragma _Pragma ifdef ifndef include\"\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, {\n className: \"string\"\n }),\n {\n className: \"string\",\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n const TITLE_MODE = {\n className: \"title\",\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + \"\\\\s*\\\\(\";\n const C_KEYWORDS = [\n \"asm\",\n \"auto\",\n \"break\",\n \"case\",\n \"continue\",\n \"default\",\n \"do\",\n \"else\",\n \"enum\",\n \"extern\",\n \"for\",\n \"fortran\",\n \"goto\",\n \"if\",\n \"inline\",\n \"register\",\n \"restrict\",\n \"return\",\n \"sizeof\",\n \"struct\",\n \"switch\",\n \"typedef\",\n \"union\",\n \"volatile\",\n \"while\",\n \"_Alignas\",\n \"_Alignof\",\n \"_Atomic\",\n \"_Generic\",\n \"_Noreturn\",\n \"_Static_assert\",\n \"_Thread_local\",\n // aliases\n \"alignas\",\n \"alignof\",\n \"noreturn\",\n \"static_assert\",\n \"thread_local\",\n // not a C keyword but is, for all intents and purposes, treated exactly like one.\n \"_Pragma\"\n ];\n const C_TYPES = [\n \"float\",\n \"double\",\n \"signed\",\n \"unsigned\",\n \"int\",\n \"short\",\n \"long\",\n \"char\",\n \"void\",\n \"_Bool\",\n \"_Complex\",\n \"_Imaginary\",\n \"_Decimal32\",\n \"_Decimal64\",\n \"_Decimal128\",\n // modifiers\n \"const\",\n \"static\",\n // aliases\n \"complex\",\n \"bool\",\n \"imaginary\"\n ];\n const KEYWORDS = {\n keyword: C_KEYWORDS,\n type: C_TYPES,\n literal: \"true false NULL\",\n // TODO: apply hinting work similar to what was done in cpp.js\n built_in: \"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream \" + \"auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set \" + \"unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos \" + \"asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp \" + \"fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper \" + \"isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow \" + \"printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp \" + \"strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan \" + \"vfprintf vprintf vsprintf endl initializer_list unique_ptr\"\n };\n const EXPRESSION_CONTAINS = [\n PREPROCESSOR,\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: \"new throw return else\",\n end: /;/\n }\n ],\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n \"self\"\n ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n const FUNCTION_DECLARATION = {\n begin: \"(\" + FUNCTION_TYPE_RE + \"[\\\\*&\\\\s]+)+\" + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n {\n begin: DECLTYPE_AUTO_RE,\n keywords: KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [\n hljs.inherit(TITLE_MODE, {\n className: \"title.function\"\n })\n ],\n relevance: 0\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n \"self\",\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n TYPES\n ]\n }\n ]\n },\n TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n return {\n name: \"C\",\n aliases: [\n \"h\"\n ],\n keywords: KEYWORDS,\n // Until differentiations are added between `c` and `cpp`, `c` will\n // not be auto-detected to avoid auto-detect conflicts between C and C++\n disableAutodetect: true,\n illegal: \"</\",\n contains: [].concat(EXPRESSION_CONTEXT, FUNCTION_DECLARATION, EXPRESSION_CONTAINS, [\n PREPROCESSOR,\n {\n begin: hljs.IDENT_RE + \"::\",\n keywords: KEYWORDS\n },\n {\n className: \"class\",\n beginKeywords: \"enum class struct union\",\n end: /[{;:<>=]/,\n contains: [\n {\n beginKeywords: \"final class struct\"\n },\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: KEYWORDS\n }\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9jLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUlBLEdBRUEscUJBQXFCLEdBQ3JCLFNBQVNBLEVBQUVDLElBQUk7SUFDYixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLHFFQUFxRTtJQUNyRSx5RUFBeUU7SUFDekUsbUNBQW1DO0lBQ25DLE1BQU1DLHNCQUFzQkYsS0FBS0csT0FBTyxDQUFDLE1BQU0sS0FBSztRQUFFQyxVQUFVO1lBQUU7Z0JBQUVDLE9BQU87WUFBTztTQUFHO0lBQUM7SUFDdEYsTUFBTUMsbUJBQW1CO0lBQ3pCLE1BQU1DLGVBQWU7SUFDckIsTUFBTUMsdUJBQXVCO0lBQzdCLE1BQU1DLG1CQUFtQixNQUNyQkgsbUJBQW1CLE1BQ25CTCxNQUFNUyxRQUFRLENBQUNILGdCQUNmLGtCQUFrQk4sTUFBTVMsUUFBUSxDQUFDRix3QkFDbkM7SUFHRixNQUFNRyxRQUFRO1FBQ1pDLFdBQVc7UUFDWEMsVUFBVTtZQUNSO2dCQUFFUixPQUFPO1lBQXFCO1lBQzlCO2dCQUFFUyxPQUFPO1lBQXdCO1NBQ2xDO0lBRUg7SUFFQSxvREFBb0Q7SUFDcEQsb0NBQW9DO0lBQ3BDLE1BQU1DLG9CQUFvQjtJQUMxQixNQUFNQyxVQUFVO1FBQ2RKLFdBQVc7UUFDWEMsVUFBVTtZQUNSO2dCQUNFUixPQUFPO2dCQUNQWSxLQUFLO2dCQUNMQyxTQUFTO2dCQUNUZCxVQUFVO29CQUFFSixLQUFLbUIsZ0JBQWdCO2lCQUFFO1lBQ3JDO1lBQ0E7Z0JBQ0VkLE9BQU8saUJBQWtCVSxvQkFBb0I7Z0JBQzdDRSxLQUFLO2dCQUNMQyxTQUFTO1lBQ1g7WUFDQWxCLEtBQUtvQixpQkFBaUIsQ0FBQztnQkFDckJmLE9BQU87Z0JBQ1BZLEtBQUs7WUFDUDtTQUNEO0lBQ0g7SUFFQSxNQUFNSSxVQUFVO1FBQ2RULFdBQVc7UUFDWEMsVUFBVTtZQUNSO2dCQUFFUixPQUFPO1lBQWlCO1lB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QUFLO2dCQUNMTyxVQUFVUztnQkFDVlgsV0FBVztnQkFDWGxCLFVBQVU7b0JBQ1JGO29CQUNBRixLQUFLMkIsb0JBQW9CO29CQUN6Qlg7b0JBQ0FLO29CQUNBVjtvQkFDQSw4QkFBOEI7b0JBQzlCO3dCQUNFTixPQUFPO3dCQUNQWSxLQUFLO3dCQUNMTyxVQUFVUzt3QkFDVlgsV0FBVzt3QkFDWGxCLFVBQVU7NEJBQ1I7NEJBQ0FGOzRCQUNBRixLQUFLMkIsb0JBQW9COzRCQUN6Qlg7NEJBQ0FLOzRCQUNBVjt5QkFDRDtvQkFDSDtpQkFDRDtZQUNIO1lBQ0FBO1lBQ0FUO1lBQ0FGLEtBQUsyQixvQkFBb0I7WUFDekJKO1NBQ0Q7SUFDSDtJQUVBLE9BQU87UUFDTHFCLE1BQU07UUFDTkMsU0FBUztZQUFFO1NBQUs7UUFDaEJyQixVQUFVUztRQUNWLG1FQUFtRTtRQUNuRSx3RUFBd0U7UUFDeEVhLG1CQUFtQjtRQUNuQjVCLFNBQVM7UUFDVGQsVUFBVSxFQUFFLENBQUNvQyxNQUFNLENBQ2pCRixvQkFDQUcsc0JBQ0FKLHFCQUNBO1lBQ0VkO1lBQ0E7Z0JBQ0VsQixPQUFPTCxLQUFLNkIsUUFBUSxHQUFHO2dCQUN2QkwsVUFBVVM7WUFDWjtZQUNBO2dCQUNFckIsV0FBVztnQkFDWDJCLGVBQWU7Z0JBQ2Z0QixLQUFLO2dCQUNMYixVQUFVO29CQUNSO3dCQUFFbUMsZUFBZTtvQkFBcUI7b0JBQ3RDdkMsS0FBSzRCLFVBQVU7aUJBQ2hCO1lBQ0g7U0FDRDtRQUNIbUIsU0FBUztZQUNQQyxjQUFjekI7WUFDZDBCLFNBQVNqQztZQUNUUSxVQUFVUztRQUNaO0lBQ0Y7QUFDRjtBQUV3QiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvYy5qcz9hNDRlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogQ1xuQ2F0ZWdvcnk6IGNvbW1vbiwgc3lzdGVtXG5XZWJzaXRlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DXyhwcm9ncmFtbWluZ19sYW5ndWFnZSlcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBjKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICAvLyBhZGRlZCBmb3IgaGlzdG9yaWMgcmVhc29ucyBiZWNhdXNlIGBobGpzLkNfTElORV9DT01NRU5UX01PREVgIGRvZXNcbiAgLy8gbm90IGluY2x1ZGUgc3VjaCBzdXBwb3J0IG5vciBjYW4gd2UgYmUgc3VyZSBhbGwgdGhlIGdyYW1tYXJzIGRlcGVuZGluZ1xuICAvLyBvbiBpdCB3b3VsZCBkZXNpcmUgdGhpcyBiZWhhdmlvclxuICBjb25zdCBDX0xJTkVfQ09NTUVOVF9NT0RFID0gaGxqcy5DT01NRU5UKCcvLycsICckJywgeyBjb250YWluczogWyB7IGJlZ2luOiAvXFxcXFxcbi8gfSBdIH0pO1xuICBjb25zdCBERUNMVFlQRV9BVVRPX1JFID0gJ2RlY2x0eXBlXFxcXChhdXRvXFxcXCknO1xuICBjb25zdCBOQU1FU1BBQ0VfUkUgPSAnW2EtekEtWl9dXFxcXHcqOjonO1xuICBjb25zdCBURU1QTEFURV9BUkdVTUVOVF9SRSA9ICc8W148Pl0rPic7XG4gIGNvbnN0IEZVTkNUSU9OX1RZUEVfUkUgPSAnKCdcbiAgICArIERFQ0xUWVBFX0FVVE9fUkUgKyAnfCdcbiAgICArIHJlZ2V4Lm9wdGlvbmFsKE5BTUVTUEFDRV9SRSlcbiAgICArICdbYS16QS1aX11cXFxcdyonICsgcmVnZXgub3B0aW9uYWwoVEVNUExBVEVfQVJHVU1FTlRfUkUpXG4gICsgJyknO1xuXG5cbiAgY29uc3QgVFlQRVMgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHsgYmVnaW46ICdcXFxcYlthLXpcXFxcZF9dKl90XFxcXGInIH0sXG4gICAgICB7IG1hdGNoOiAvXFxiYXRvbWljX1thLXpdezMsNn1cXGIvIH1cbiAgICBdXG5cbiAgfTtcblxuICAvLyBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvbGFuZ3VhZ2UvZXNjYXBlXG4gIC8vIFxcXFwgXFx4IFxceEZGIFxcdTI4MzcgXFx1MDAzMjM3NDcgXFwzNzRcbiAgY29uc3QgQ0hBUkFDVEVSX0VTQ0FQRVMgPSAnXFxcXFxcXFwoeFswLTlBLUZhLWZdezJ9fHVbMC05QS1GYS1mXXs0LDh9fFswLTddezN9fFxcXFxTKSc7XG4gIGNvbnN0IFNUUklOR1MgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VXxMKT9cIicsXG4gICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnKHU4P3xVfEwpP1xcJygnICsgQ0hBUkFDVEVSX0VTQ0FQRVMgKyBcInwuKVwiLFxuICAgICAgICBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAnLidcbiAgICAgIH0sXG4gICAgICBobGpzLkVORF9TQU1FX0FTX0JFR0lOKHtcbiAgICAgICAgYmVnaW46IC8oPzp1OD98VXxMKT9SXCIoW14oKVxcXFwgXXswLDE2fSlcXCgvLFxuICAgICAgICBlbmQ6IC9cXCkoW14oKVxcXFwgXXswLDE2fSlcIi9cbiAgICAgIH0pXG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBiWzAxXFwnXSspJyB9LFxuICAgICAgeyBiZWdpbjogJygtPylcXFxcYihbXFxcXGRcXCddKyhcXFxcLltcXFxcZFxcJ10qKT98XFxcXC5bXFxcXGRcXCddKykoKGxsfExMfGx8TCkodXxVKT98KHV8VSkobGx8TEx8bHxMKT98ZnxGfGJ8QiknIH0sXG4gICAgICB7IGJlZ2luOiAnKC0/KShcXFxcYjBbeFhdW2EtZkEtRjAtOVxcJ10rfChcXFxcYltcXFxcZFxcJ10rKFxcXFwuW1xcXFxkXFwnXSopP3xcXFxcLltcXFxcZFxcJ10rKShbZUVdWy0rXT9bXFxcXGRcXCddKyk/KScgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgUFJFUFJPQ0VTU09SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAvI1xccypbYS16XStcXGIvLFxuICAgIGVuZDogLyQvLFxuICAgIGtleXdvcmRzOiB7IGtleXdvcmQ6XG4gICAgICAgICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIHdhcm5pbmcgZXJyb3IgbGluZSAnXG4gICAgICAgICsgJ3ByYWdtYSBfUHJhZ21hIGlmZGVmIGlmbmRlZiBpbmNsdWRlJyB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxcXFxcbi8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIGhsanMuaW5oZXJpdChTVFJJTkdTLCB7IGNsYXNzTmFtZTogJ3N0cmluZycgfSksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIGJlZ2luOiAvPC4qPz4vXG4gICAgICB9LFxuICAgICAgQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG5cbiAgY29uc3QgVElUTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICd0aXRsZScsXG4gICAgYmVnaW46IHJlZ2V4Lm9wdGlvbmFsKE5BTUVTUEFDRV9SRSkgKyBobGpzLklERU5UX1JFLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IEZVTkNUSU9OX1RJVExFID0gcmVnZXgub3B0aW9uYWwoTkFNRVNQQUNFX1JFKSArIGhsanMuSURFTlRfUkUgKyAnXFxcXHMqXFxcXCgnO1xuXG4gIGNvbnN0IENfS0VZV09SRFMgPSBbXG4gICAgXCJhc21cIixcbiAgICBcImF1dG9cIixcbiAgICBcImJyZWFrXCIsXG4gICAgXCJjYXNlXCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwiZGVmYXVsdFwiLFxuICAgIFwiZG9cIixcbiAgICBcImVsc2VcIixcbiAgICBcImVudW1cIixcbiAgICBcImV4dGVyblwiLFxuICAgIFwiZm9yXCIsXG4gICAgXCJmb3J0cmFuXCIsXG4gICAgXCJnb3RvXCIsXG4gICAgXCJpZlwiLFxuICAgIFwiaW5saW5lXCIsXG4gICAgXCJyZWdpc3RlclwiLFxuICAgIFwicmVzdHJpY3RcIixcbiAgICBcInJldHVyblwiLFxuICAgIFwic2l6ZW9mXCIsXG4gICAgXCJzdHJ1Y3RcIixcbiAgICBcInN3aXRjaFwiLFxuICAgIFwidHlwZWRlZlwiLFxuICAgIFwidW5pb25cIixcbiAgICBcInZvbGF0aWxlXCIsXG4gICAgXCJ3aGlsZVwiLFxuICAgIFwiX0FsaWduYXNcIixcbiAgICBcIl9BbGlnbm9mXCIsXG4gICAgXCJfQXRvbWljXCIsXG4gICAgXCJfR2VuZXJpY1wiLFxuICAgIFwiX05vcmV0dXJuXCIsXG4gICAgXCJfU3RhdGljX2Fzc2VydFwiLFxuICAgIFwiX1RocmVhZF9sb2NhbFwiLFxuICAgIC8vIGFsaWFzZXNcbiAgICBcImFsaWduYXNcIixcbiAgICBcImFsaWdub2ZcIixcbiAgICBcIm5vcmV0dXJuXCIsXG4gICAgXCJzdGF0aWNfYXNzZXJ0XCIsXG4gICAgXCJ0aHJlYWRfbG9jYWxcIixcbiAgICAvLyBub3QgYSBDIGtleXdvcmQgYnV0IGlzLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCB0cmVhdGVkIGV4YWN0bHkgbGlrZSBvbmUuXG4gICAgXCJfUHJhZ21hXCJcbiAgXTtcblxuICBjb25zdCBDX1RZUEVTID0gW1xuICAgIFwiZmxvYXRcIixcbiAgICBcImRvdWJsZVwiLFxuICAgIFwic2lnbmVkXCIsXG4gICAgXCJ1bnNpZ25lZFwiLFxuICAgIFwiaW50XCIsXG4gICAgXCJzaG9ydFwiLFxuICAgIFwibG9uZ1wiLFxuICAgIFwiY2hhclwiLFxuICAgIFwidm9pZFwiLFxuICAgIFwiX0Jvb2xcIixcbiAgICBcIl9Db21wbGV4XCIsXG4gICAgXCJfSW1hZ2luYXJ5XCIsXG4gICAgXCJfRGVjaW1hbDMyXCIsXG4gICAgXCJfRGVjaW1hbDY0XCIsXG4gICAgXCJfRGVjaW1hbDEyOFwiLFxuICAgIC8vIG1vZGlmaWVyc1xuICAgIFwiY29uc3RcIixcbiAgICBcInN0YXRpY1wiLFxuICAgIC8vIGFsaWFzZXNcbiAgICBcImNvbXBsZXhcIixcbiAgICBcImJvb2xcIixcbiAgICBcImltYWdpbmFyeVwiXG4gIF07XG5cbiAgY29uc3QgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogQ19LRVlXT1JEUyxcbiAgICB0eXBlOiBDX1RZUEVTLFxuICAgIGxpdGVyYWw6ICd0cnVlIGZhbHNlIE5VTEwnLFxuICAgIC8vIFRPRE86IGFwcGx5IGhpbnRpbmcgd29yayBzaW1pbGFyIHRvIHdoYXQgd2FzIGRvbmUgaW4gY3BwLmpzXG4gICAgYnVpbHRfaW46ICdzdGQgc3RyaW5nIHdzdHJpbmcgY2luIGNvdXQgY2VyciBjbG9nIHN0ZGluIHN0ZG91dCBzdGRlcnIgc3RyaW5nc3RyZWFtIGlzdHJpbmdzdHJlYW0gb3N0cmluZ3N0cmVhbSAnXG4gICAgICArICdhdXRvX3B0ciBkZXF1ZSBsaXN0IHF1ZXVlIHN0YWNrIHZlY3RvciBtYXAgc2V0IHBhaXIgYml0c2V0IG11bHRpc2V0IG11bHRpbWFwIHVub3JkZXJlZF9zZXQgJ1xuICAgICAgKyAndW5vcmRlcmVkX21hcCB1bm9yZGVyZWRfbXVsdGlzZXQgdW5vcmRlcmVkX211bHRpbWFwIHByaW9yaXR5X3F1ZXVlIG1ha2VfcGFpciBhcnJheSBzaGFyZWRfcHRyIGFib3J0IHRlcm1pbmF0ZSBhYnMgYWNvcyAnXG4gICAgICArICdhc2luIGF0YW4yIGF0YW4gY2FsbG9jIGNlaWwgY29zaCBjb3MgZXhpdCBleHAgZmFicyBmbG9vciBmbW9kIGZwcmludGYgZnB1dHMgZnJlZSBmcmV4cCAnXG4gICAgICArICdmc2NhbmYgZnV0dXJlIGlzYWxudW0gaXNhbHBoYSBpc2NudHJsIGlzZGlnaXQgaXNncmFwaCBpc2xvd2VyIGlzcHJpbnQgaXNwdW5jdCBpc3NwYWNlIGlzdXBwZXIgJ1xuICAgICAgKyAnaXN4ZGlnaXQgdG9sb3dlciB0b3VwcGVyIGxhYnMgbGRleHAgbG9nMTAgbG9nIG1hbGxvYyByZWFsbG9jIG1lbWNociBtZW1jbXAgbWVtY3B5IG1lbXNldCBtb2RmIHBvdyAnXG4gICAgICArICdwcmludGYgcHV0Y2hhciBwdXRzIHNjYW5mIHNpbmggc2luIHNucHJpbnRmIHNwcmludGYgc3FydCBzc2NhbmYgc3RyY2F0IHN0cmNociBzdHJjbXAgJ1xuICAgICAgKyAnc3RyY3B5IHN0cmNzcG4gc3RybGVuIHN0cm5jYXQgc3RybmNtcCBzdHJuY3B5IHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHRhbmggdGFuICdcbiAgICAgICsgJ3ZmcHJpbnRmIHZwcmludGYgdnNwcmludGYgZW5kbCBpbml0aWFsaXplcl9saXN0IHVuaXF1ZV9wdHInLFxuICB9O1xuXG4gIGNvbnN0IEVYUFJFU1NJT05fQ09OVEFJTlMgPSBbXG4gICAgUFJFUFJPQ0VTU09SLFxuICAgIFRZUEVTLFxuICAgIENfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBOVU1CRVJTLFxuICAgIFNUUklOR1NcbiAgXTtcblxuICBjb25zdCBFWFBSRVNTSU9OX0NPTlRFWFQgPSB7XG4gICAgLy8gVGhpcyBtb2RlIGNvdmVycyBleHByZXNzaW9uIGNvbnRleHQgd2hlcmUgd2UgY2FuJ3QgZXhwZWN0IGEgZnVuY3Rpb25cbiAgICAvLyBkZWZpbml0aW9uIGFuZCBzaG91bGRuJ3QgaGlnaGxpZ2h0IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZSBvbmU6XG4gICAgLy8gYHJldHVybiBzb21lKClgLCBgZWxzZSBpZigpYCwgYCh4KnN1bSgxLCAyKSlgXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC89LyxcbiAgICAgICAgZW5kOiAvOy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgZW5kOiAvXFwpL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25ldyB0aHJvdyByZXR1cm4gZWxzZScsXG4gICAgICAgIGVuZDogLzsvXG4gICAgICB9XG4gICAgXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05fQ09OVEFJTlMuY29uY2F0KFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBFWFBSRVNTSU9OX0NPTlRBSU5TLmNvbmNhdChbICdzZWxmJyBdKSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXSksXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgRlVOQ1RJT05fREVDTEFSQVRJT04gPSB7XG4gICAgYmVnaW46ICcoJyArIEZVTkNUSU9OX1RZUEVfUkUgKyAnW1xcXFwqJlxcXFxzXSspKycgKyBGVU5DVElPTl9USVRMRSxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBlbmQ6IC9bezs9XS8sXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1teXFx3XFxzXFwqJjo8Pi5dLyxcbiAgICBjb250YWluczogW1xuICAgICAgeyAvLyB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgY29uZnVzZWQgYXMgdGhlIGZ1bmN0aW9uIHRpdGxlXG4gICAgICAgIGJlZ2luOiBERUNMVFlQRV9BVVRPX1JFLFxuICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IEZVTkNUSU9OX1RJVExFLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5pbmhlcml0KFRJVExFX01PREUsIHsgY2xhc3NOYW1lOiBcInRpdGxlLmZ1bmN0aW9uXCIgfSkgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gYWxsb3cgZm9yIG11bHRpcGxlIGRlY2xhcmF0aW9ucywgZS5nLjpcbiAgICAgIC8vIGV4dGVybiB2b2lkIGYoaW50KSwgZyhjaGFyKTtcbiAgICAgIHtcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBtYXRjaDogLywvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIENfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBTVFJJTkdTLFxuICAgICAgICAgIE5VTUJFUlMsXG4gICAgICAgICAgVFlQRVMsXG4gICAgICAgICAgLy8gQ291bnQgbWF0Y2hpbmcgcGFyZW50aGVzZXMuXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICAgICAgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgICAgQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HUyxcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgVFlQRVNcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBUWVBFUyxcbiAgICAgIENfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgUFJFUFJPQ0VTU09SXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogXCJDXCIsXG4gICAgYWxpYXNlczogWyAnaCcgXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgLy8gVW50aWwgZGlmZmVyZW50aWF0aW9ucyBhcmUgYWRkZWQgYmV0d2VlbiBgY2AgYW5kIGBjcHBgLCBgY2Agd2lsbFxuICAgIC8vIG5vdCBiZSBhdXRvLWRldGVjdGVkIHRvIGF2b2lkIGF1dG8tZGV0ZWN0IGNvbmZsaWN0cyBiZXR3ZWVuIEMgYW5kIEMrK1xuICAgIGRpc2FibGVBdXRvZGV0ZWN0OiB0cnVlLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtdLmNvbmNhdChcbiAgICAgIEVYUFJFU1NJT05fQ09OVEVYVCxcbiAgICAgIEZVTkNUSU9OX0RFQ0xBUkFUSU9OLFxuICAgICAgRVhQUkVTU0lPTl9DT05UQUlOUyxcbiAgICAgIFtcbiAgICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnOjonLFxuICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEU1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICAgICAgICAgIGJlZ2luS2V5d29yZHM6ICdlbnVtIGNsYXNzIHN0cnVjdCB1bmlvbicsXG4gICAgICAgICAgZW5kOiAvW3s7Ojw+PV0vLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7IGJlZ2luS2V5d29yZHM6IFwiZmluYWwgY2xhc3Mgc3RydWN0XCIgfSxcbiAgICAgICAgICAgIGhsanMuVElUTEVfTU9ERVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXSksXG4gICAgZXhwb3J0czoge1xuICAgICAgcHJlcHJvY2Vzc29yOiBQUkVQUk9DRVNTT1IsXG4gICAgICBzdHJpbmdzOiBTVFJJTkdTLFxuICAgICAga2V5d29yZHM6IEtFWVdPUkRTXG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgeyBjIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJjIiwiaGxqcyIsInJlZ2V4IiwiQ19MSU5FX0NPTU1FTlRfTU9ERSIsIkNPTU1FTlQiLCJjb250YWlucyIsImJlZ2luIiwiREVDTFRZUEVfQVVUT19SRSIsIk5BTUVTUEFDRV9SRSIsIlRFTVBMQVRFX0FSR1VNRU5UX1JFIiwiRlVOQ1RJT05fVFlQRV9SRSIsIm9wdGlvbmFsIiwiVFlQRVMiLCJjbGFzc05hbWUiLCJ2YXJpYW50cyIsIm1hdGNoIiwiQ0hBUkFDVEVSX0VTQ0FQRVMiLCJTVFJJTkdTIiwiZW5kIiwiaWxsZWdhbCIsIkJBQ0tTTEFTSF9FU0NBUEUiLCJFTkRfU0FNRV9BU19CRUdJTiIsIk5VTUJFUlMiLCJyZWxldmFuY2UiLCJQUkVQUk9DRVNTT1IiLCJrZXl3b3JkcyIsImtleXdvcmQiLCJpbmhlcml0IiwiQ19CTE9DS19DT01NRU5UX01PREUiLCJUSVRMRV9NT0RFIiwiSURFTlRfUkUiLCJGVU5DVElPTl9USVRMRSIsIkNfS0VZV09SRFMiLCJDX1RZUEVTIiwiS0VZV09SRFMiLCJ0eXBlIiwibGl0ZXJhbCIsImJ1aWx0X2luIiwiRVhQUkVTU0lPTl9DT05UQUlOUyIsIkVYUFJFU1NJT05fQ09OVEVYVCIsImJlZ2luS2V5d29yZHMiLCJjb25jYXQiLCJGVU5DVElPTl9ERUNMQVJBVElPTiIsInJldHVybkJlZ2luIiwiZXhjbHVkZUVuZCIsIm5hbWUiLCJhbGlhc2VzIiwiZGlzYWJsZUF1dG9kZXRlY3QiLCJleHBvcnRzIiwicHJlcHJvY2Vzc29yIiwic3RyaW5ncyIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/c.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/cpp.js":
/*!*******************************************************!*\
!*** ./node_modules/highlight.js/es/languages/cpp.js ***!
\*******************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ cpp)\n/* harmony export */ });\n/*\nLanguage: C++\nCategory: common, system\nWebsite: https://isocpp.org\n*/ /** @type LanguageFn */ function cpp(hljs) {\n const regex = hljs.regex;\n // added for historic reasons because `hljs.C_LINE_COMMENT_MODE` does\n // not include such support nor can we be sure all the grammars depending\n // on it would desire this behavior\n const C_LINE_COMMENT_MODE = hljs.COMMENT(\"//\", \"$\", {\n contains: [\n {\n begin: /\\\\\\n/\n }\n ]\n });\n const DECLTYPE_AUTO_RE = \"decltype\\\\(auto\\\\)\";\n const NAMESPACE_RE = \"[a-zA-Z_]\\\\w*::\";\n const TEMPLATE_ARGUMENT_RE = \"<[^<>]+>\";\n const FUNCTION_TYPE_RE = \"(?!struct)(\" + DECLTYPE_AUTO_RE + \"|\" + regex.optional(NAMESPACE_RE) + \"[a-zA-Z_]\\\\w*\" + regex.optional(TEMPLATE_ARGUMENT_RE) + \")\";\n const CPP_PRIMITIVE_TYPES = {\n className: \"type\",\n begin: \"\\\\b[a-z\\\\d_]*_t\\\\b\"\n };\n // https://en.cppreference.com/w/cpp/language/escape\n // \\\\ \\x \\xFF \\u2837 \\u00323747 \\374\n const CHARACTER_ESCAPES = \"\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)\";\n const STRINGS = {\n className: \"string\",\n variants: [\n {\n begin: '(u8?|U|L)?\"',\n end: '\"',\n illegal: \"\\\\n\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n {\n begin: \"(u8?|U|L)?'(\" + CHARACTER_ESCAPES + \"|.)\",\n end: \"'\",\n illegal: \".\"\n },\n hljs.END_SAME_AS_BEGIN({\n begin: /(?:u8?|U|L)?R\"([^()\\\\ ]{0,16})\\(/,\n end: /\\)([^()\\\\ ]{0,16})\"/\n })\n ]\n };\n const NUMBERS = {\n className: \"number\",\n variants: [\n {\n begin: \"\\\\b(0b[01']+)\"\n },\n {\n begin: \"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)\"\n },\n {\n begin: \"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n }\n ],\n relevance: 0\n };\n const PREPROCESSOR = {\n className: \"meta\",\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n keyword: \"if else elif endif define undef warning error line \" + \"pragma _Pragma ifdef ifndef include\"\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(STRINGS, {\n className: \"string\"\n }),\n {\n className: \"string\",\n begin: /<.*?>/\n },\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n const TITLE_MODE = {\n className: \"title\",\n begin: regex.optional(NAMESPACE_RE) + hljs.IDENT_RE,\n relevance: 0\n };\n const FUNCTION_TITLE = regex.optional(NAMESPACE_RE) + hljs.IDENT_RE + \"\\\\s*\\\\(\";\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_KEYWORDS = [\n \"alignas\",\n \"alignof\",\n \"and\",\n \"and_eq\",\n \"asm\",\n \"atomic_cancel\",\n \"atomic_commit\",\n \"atomic_noexcept\",\n \"auto\",\n \"bitand\",\n \"bitor\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"co_await\",\n \"co_return\",\n \"co_yield\",\n \"compl\",\n \"concept\",\n \"const_cast|10\",\n \"consteval\",\n \"constexpr\",\n \"constinit\",\n \"continue\",\n \"decltype\",\n \"default\",\n \"delete\",\n \"do\",\n \"dynamic_cast|10\",\n \"else\",\n \"enum\",\n \"explicit\",\n \"export\",\n \"extern\",\n \"false\",\n \"final\",\n \"for\",\n \"friend\",\n \"goto\",\n \"if\",\n \"import\",\n \"inline\",\n \"module\",\n \"mutable\",\n \"namespace\",\n \"new\",\n \"noexcept\",\n \"not\",\n \"not_eq\",\n \"nullptr\",\n \"operator\",\n \"or\",\n \"or_eq\",\n \"override\",\n \"private\",\n \"protected\",\n \"public\",\n \"reflexpr\",\n \"register\",\n \"reinterpret_cast|10\",\n \"requires\",\n \"return\",\n \"sizeof\",\n \"static_assert\",\n \"static_cast|10\",\n \"struct\",\n \"switch\",\n \"synchronized\",\n \"template\",\n \"this\",\n \"thread_local\",\n \"throw\",\n \"transaction_safe\",\n \"transaction_safe_dynamic\",\n \"true\",\n \"try\",\n \"typedef\",\n \"typeid\",\n \"typename\",\n \"union\",\n \"using\",\n \"virtual\",\n \"volatile\",\n \"while\",\n \"xor\",\n \"xor_eq\"\n ];\n // https://en.cppreference.com/w/cpp/keyword\n const RESERVED_TYPES = [\n \"bool\",\n \"char\",\n \"char16_t\",\n \"char32_t\",\n \"char8_t\",\n \"double\",\n \"float\",\n \"int\",\n \"long\",\n \"short\",\n \"void\",\n \"wchar_t\",\n \"unsigned\",\n \"signed\",\n \"const\",\n \"static\"\n ];\n const TYPE_HINTS = [\n \"any\",\n \"auto_ptr\",\n \"barrier\",\n \"binary_semaphore\",\n \"bitset\",\n \"complex\",\n \"condition_variable\",\n \"condition_variable_any\",\n \"counting_semaphore\",\n \"deque\",\n \"false_type\",\n \"future\",\n \"imaginary\",\n \"initializer_list\",\n \"istringstream\",\n \"jthread\",\n \"latch\",\n \"lock_guard\",\n \"multimap\",\n \"multiset\",\n \"mutex\",\n \"optional\",\n \"ostringstream\",\n \"packaged_task\",\n \"pair\",\n \"promise\",\n \"priority_queue\",\n \"queue\",\n \"recursive_mutex\",\n \"recursive_timed_mutex\",\n \"scoped_lock\",\n \"set\",\n \"shared_future\",\n \"shared_lock\",\n \"shared_mutex\",\n \"shared_timed_mutex\",\n \"shared_ptr\",\n \"stack\",\n \"string_view\",\n \"stringstream\",\n \"timed_mutex\",\n \"thread\",\n \"true_type\",\n \"tuple\",\n \"unique_lock\",\n \"unique_ptr\",\n \"unordered_map\",\n \"unordered_multimap\",\n \"unordered_multiset\",\n \"unordered_set\",\n \"variant\",\n \"vector\",\n \"weak_ptr\",\n \"wstring\",\n \"wstring_view\"\n ];\n const FUNCTION_HINTS = [\n \"abort\",\n \"abs\",\n \"acos\",\n \"apply\",\n \"as_const\",\n \"asin\",\n \"atan\",\n \"atan2\",\n \"calloc\",\n \"ceil\",\n \"cerr\",\n \"cin\",\n \"clog\",\n \"cos\",\n \"cosh\",\n \"cout\",\n \"declval\",\n \"endl\",\n \"exchange\",\n \"exit\",\n \"exp\",\n \"fabs\",\n \"floor\",\n \"fmod\",\n \"forward\",\n \"fprintf\",\n \"fputs\",\n \"free\",\n \"frexp\",\n \"fscanf\",\n \"future\",\n \"invoke\",\n \"isalnum\",\n \"isalpha\",\n \"iscntrl\",\n \"isdigit\",\n \"isgraph\",\n \"islower\",\n \"isprint\",\n \"ispunct\",\n \"isspace\",\n \"isupper\",\n \"isxdigit\",\n \"labs\",\n \"launder\",\n \"ldexp\",\n \"log\",\n \"log10\",\n \"make_pair\",\n \"make_shared\",\n \"make_shared_for_overwrite\",\n \"make_tuple\",\n \"make_unique\",\n \"malloc\",\n \"memchr\",\n \"memcmp\",\n \"memcpy\",\n \"memset\",\n \"modf\",\n \"move\",\n \"pow\",\n \"printf\",\n \"putchar\",\n \"puts\",\n \"realloc\",\n \"scanf\",\n \"sin\",\n \"sinh\",\n \"snprintf\",\n \"sprintf\",\n \"sqrt\",\n \"sscanf\",\n \"std\",\n \"stderr\",\n \"stdin\",\n \"stdout\",\n \"strcat\",\n \"strchr\",\n \"strcmp\",\n \"strcpy\",\n \"strcspn\",\n \"strlen\",\n \"strncat\",\n \"strncmp\",\n \"strncpy\",\n \"strpbrk\",\n \"strrchr\",\n \"strspn\",\n \"strstr\",\n \"swap\",\n \"tan\",\n \"tanh\",\n \"terminate\",\n \"to_underlying\",\n \"tolower\",\n \"toupper\",\n \"vfprintf\",\n \"visit\",\n \"vprintf\",\n \"vsprintf\"\n ];\n const LITERALS = [\n \"NULL\",\n \"false\",\n \"nullopt\",\n \"nullptr\",\n \"true\"\n ];\n // https://en.cppreference.com/w/cpp/keyword\n const BUILT_IN = [\n \"_Pragma\"\n ];\n const CPP_KEYWORDS = {\n type: RESERVED_TYPES,\n keyword: RESERVED_KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_IN,\n _type_hints: TYPE_HINTS\n };\n const FUNCTION_DISPATCH = {\n className: \"function.dispatch\",\n relevance: 0,\n keywords: {\n // Only for relevance, not highlighting.\n _hint: FUNCTION_HINTS\n },\n begin: regex.concat(/\\b/, /(?!decltype)/, /(?!if)/, /(?!for)/, /(?!switch)/, /(?!while)/, hljs.IDENT_RE, regex.lookahead(/(<[^<>]+>|)\\s*\\(/))\n };\n const EXPRESSION_CONTAINS = [\n FUNCTION_DISPATCH,\n PREPROCESSOR,\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n const EXPRESSION_CONTEXT = {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {\n begin: /=/,\n end: /;/\n },\n {\n begin: /\\(/,\n end: /\\)/\n },\n {\n beginKeywords: \"new throw return else\",\n end: /;/\n }\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n \"self\"\n ]),\n relevance: 0\n }\n ]),\n relevance: 0\n };\n const FUNCTION_DECLARATION = {\n className: \"function\",\n begin: \"(\" + FUNCTION_TYPE_RE + \"[\\\\*&\\\\s]+)+\" + FUNCTION_TITLE,\n returnBegin: true,\n end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&:<>.]/,\n contains: [\n {\n begin: DECLTYPE_AUTO_RE,\n keywords: CPP_KEYWORDS,\n relevance: 0\n },\n {\n begin: FUNCTION_TITLE,\n returnBegin: true,\n contains: [\n TITLE_MODE\n ],\n relevance: 0\n },\n // needed because we do not have look-behind on the below rule\n // to prevent it from grabbing the final : in a :: pair\n {\n begin: /::/,\n relevance: 0\n },\n // initializers\n {\n begin: /:/,\n endsWithParent: true,\n contains: [\n STRINGS,\n NUMBERS\n ]\n },\n // allow for multiple declarations, e.g.:\n // extern void f(int), g(char);\n {\n relevance: 0,\n match: /,/\n },\n {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n \"self\",\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n CPP_PRIMITIVE_TYPES,\n C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n };\n return {\n name: \"C++\",\n aliases: [\n \"cc\",\n \"c++\",\n \"h++\",\n \"hpp\",\n \"hh\",\n \"hxx\",\n \"cxx\"\n ],\n keywords: CPP_KEYWORDS,\n illegal: \"</\",\n classNameAliases: {\n \"function.dispatch\": \"built_in\"\n },\n contains: [].concat(EXPRESSION_CONTEXT, FUNCTION_DECLARATION, FUNCTION_DISPATCH, EXPRESSION_CONTAINS, [\n PREPROCESSOR,\n {\n begin: \"\\\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\\\s*<(?!<)\",\n end: \">\",\n keywords: CPP_KEYWORDS,\n contains: [\n \"self\",\n CPP_PRIMITIVE_TYPES\n ]\n },\n {\n begin: hljs.IDENT_RE + \"::\",\n keywords: CPP_KEYWORDS\n },\n {\n match: [\n // extra complexity to deal with `enum class` and `enum struct`\n /\\b(?:enum(?:\\s+(?:class|struct))?|class|struct|union)/,\n /\\s+/,\n /\\w+/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n }\n ])\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9jcHAuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7O0FBSUEsR0FFQSxxQkFBcUIsR0FDckIsU0FBU0EsSUFBSUMsSUFBSTtJQUNmLE1BQU1DLFFBQVFELEtBQUtDLEtBQUs7SUFDeEIscUVBQXFFO0lBQ3JFLHlFQUF5RTtJQUN6RSxtQ0FBbUM7SUFDbkMsTUFBTUMsc0JBQXNCRixLQUFLRyxPQUFPLENBQUMsTUFBTSxLQUFLO1FBQUVDLFVBQVU7WUFBRTtnQkFBRUMsT0FBTztZQUFPO1NBQUc7SUFBQztJQUN0RixNQUFNQyxtQkFBbUI7SUFDekIsTUFBTUMsZUFBZTtJQUNyQixNQUFNQyx1QkFBdUI7SUFDN0IsTUFBTUMsbUJBQW1CLGdCQUNyQkgsbUJBQW1CLE1BQ25CTCxNQUFNUyxRQUFRLENBQUNILGdCQUNmLGtCQUFrQk4sTUFBTVMsUUFBUSxDQUFDRix3QkFDbkM7SUFFRixNQUFNRyxzQkFBc0I7UUFDMUJDLFdBQVc7UUFDWFAsT0FBTztJQUNUO0lBRUEsb0RBQW9EO0lBQ3BELG9DQUFvQztJQUNwQyxNQUFNUSxvQkFBb0I7SUFDMUIsTUFBTUMsVUFBVTtRQUNkRixXQUFXO1FBQ1hHLFVBQVU7WUFDUjtnQkFDRVYsT0FBTztnQkFDUFcsS0FBSztnQkFDTEMsU0FBUztnQkFDVGIsVUFBVTtvQkFBRUosS0FBS2tCLGdCQUFnQjtpQkFBRTtZQUNyQztZQUNBO2dCQUNFYixPQUFPLGlCQUFrQlEsb0JBQW9CO2dCQUM3Q0csS0FBSztnQkFDTEMsU0FBUztZQUNYO1lBQ0FqQixLQUFLbUIsaUJBQWlCLENBQUM7Z0JBQ3JCZCxPQUFPO2dCQUNQVyxLQUFLO1lBQ1A7U0FDRDtJQUNIO0lBRUEsTUFBTUksVUFBVTtRQUNkUixXQUFXO1FBQ1hHLFVBQVU7WUFDUjtnQkFBRVYsT0FBTztZQUFpQjtZQUMxQjtnQkFBRUEsT0FBTztZQUEyRjtZQUNwRztnQkFBRUEsT0FBTztZQUEyRjtTQUNyRztRQUNEZ0IsV0FBVztJQUNiO0lBRUEsTUFBTUMsZUFBZTtRQUNuQlYsV0FBVztRQUNYUCxPQUFPO1FBQ1BXLEtBQUs7UUFDTE8sVUFBVTtZQUFFQyxTQUNSLHdEQUNFO1FBQXNDO1FBQzVDcEIsVUFBVTtZQUNSO2dCQUNFQyxPQUFPO2dCQUNQZ0IsV0FBVztZQUNiO1lBQ0FyQixLQUFLeUIsT0FBTyxDQUFDWCxTQUFTO2dCQUFFRixXQUFXO1lBQVM7WUFDNUM7Z0JBQ0VBLFdBQVc7Z0JBQ1hQLE9BQU87WUFDVDtZQUNBSDtZQUNBRixLQUFLMEIsb0JBQW9CO1NBQzFCO0lBQ0g7SUFFQSxNQUFNQyxhQUFhO1FBQ2pCZixXQUFXO1FBQ1hQLE9BQU9KLE1BQU1TLFFBQVEsQ0FBQ0gsZ0JBQWdCUCxLQUFLNEIsUUFBUTtRQUNuRFAsV0FBVztJQUNiO0lBRUEsTUFBTVEsaUJBQWlCNUIsTUFBTVMsUUFBUSxDQUFDSCxnQkFBZ0JQLEtBQUs0QixRQUFRLEdBQUc7SUFFdEUsNENBQTRDO0lBQzVDLE1BQU1FLG9CQUFvQjtRQUN4QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELDRDQUE0QztJQUM1QyxNQUFNQyxpQkFBaUI7UUFDckI7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELE1BQU1DLGFBQWE7UUFDakI7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELE1BQU1DLGlCQUFpQjtRQUNyQjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7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QU0sQ0FDakJHLG9CQUNBRSxzQkFDQVAsbUJBQ0FJLHFCQUNBO1lBQ0V2QjtZQUNBO2dCQUNFakIsT0FBTztnQkFDUFcsS0FBSztnQkFDTE8sVUFBVWE7Z0JBQ1ZoQyxVQUFVO29CQUNSO29CQUNBTztpQkFDRDtZQUNIO1lBQ0E7Z0JBQ0VOLE9BQU9MLEtBQUs0QixRQUFRLEdBQUc7Z0JBQ3ZCTCxVQUFVYTtZQUNaO1lBQ0E7Z0JBQ0VnQixPQUFPO29CQUNMLCtEQUErRDtvQkFDL0Q7b0JBQ0E7b0JBQ0E7aUJBQ0Q7Z0JBQ0R4QyxXQUFXO29CQUNULEdBQUc7b0JBQ0gsR0FBRztnQkFDTDtZQUNGO1NBQ0Q7SUFDTDtBQUNGO0FBRTBCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9jcHAuanM/MjFlZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEMrK1xuQ2F0ZWdvcnk6IGNvbW1vbiwgc3lzdGVtXG5XZWJzaXRlOiBodHRwczovL2lzb2NwcC5vcmdcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBjcHAoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIC8vIGFkZGVkIGZvciBoaXN0b3JpYyByZWFzb25zIGJlY2F1c2UgYGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERWAgZG9lc1xuICAvLyBub3QgaW5jbHVkZSBzdWNoIHN1cHBvcnQgbm9yIGNhbiB3ZSBiZSBzdXJlIGFsbCB0aGUgZ3JhbW1hcnMgZGVwZW5kaW5nXG4gIC8vIG9uIGl0IHdvdWxkIGRlc2lyZSB0aGlzIGJlaGF2aW9yXG4gIGNvbnN0IENfTElORV9DT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJy8vJywgJyQnLCB7IGNvbnRhaW5zOiBbIHsgYmVnaW46IC9cXFxcXFxuLyB9IF0gfSk7XG4gIGNvbnN0IERFQ0xUWVBFX0FVVE9fUkUgPSAnZGVjbHR5cGVcXFxcKGF1dG9cXFxcKSc7XG4gIGNvbnN0IE5BTUVTUEFDRV9SRSA9ICdbYS16QS1aX11cXFxcdyo6Oic7XG4gIGNvbnN0IFRFTVBMQVRFX0FSR1VNRU5UX1JFID0gJzxbXjw+XSs+JztcbiAgY29uc3QgRlVOQ1RJT05fVFlQRV9SRSA9ICcoPyFzdHJ1Y3QpKCdcbiAgICArIERFQ0xUWVBFX0FVVE9fUkUgKyAnfCdcbiAgICArIHJlZ2V4Lm9wdGlvbmFsKE5BTUVTUEFDRV9SRSlcbiAgICArICdbYS16QS1aX11cXFxcdyonICsgcmVnZXgub3B0aW9uYWwoVEVNUExBVEVfQVJHVU1FTlRfUkUpXG4gICsgJyknO1xuXG4gIGNvbnN0IENQUF9QUklNSVRJVkVfVFlQRVMgPSB7XG4gICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgYmVnaW46ICdcXFxcYlthLXpcXFxcZF9dKl90XFxcXGInXG4gIH07XG5cbiAgLy8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2xhbmd1YWdlL2VzY2FwZVxuICAvLyBcXFxcIFxceCBcXHhGRiBcXHUyODM3IFxcdTAwMzIzNzQ3IFxcMzc0XG4gIGNvbnN0IENIQVJBQ1RFUl9FU0NBUEVTID0gJ1xcXFxcXFxcKHhbMC05QS1GYS1mXXsyfXx1WzAtOUEtRmEtZl17NCw4fXxbMC03XXszfXxcXFxcUyknO1xuICBjb25zdCBTVFJJTkdTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICcodTg/fFV8TCk/XCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgIGNvbnRhaW5zOiBbIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyh1OD98VXxMKT9cXCcoJyArIENIQVJBQ1RFUl9FU0NBUEVTICsgJ3wuKScsXG4gICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgIGlsbGVnYWw6ICcuJ1xuICAgICAgfSxcbiAgICAgIGhsanMuRU5EX1NBTUVfQVNfQkVHSU4oe1xuICAgICAgICBiZWdpbjogLyg/OnU4P3xVfEwpP1JcIihbXigpXFxcXCBdezAsMTZ9KVxcKC8sXG4gICAgICAgIGVuZDogL1xcKShbXigpXFxcXCBdezAsMTZ9KVwiL1xuICAgICAgfSlcbiAgICBdXG4gIH07XG5cbiAgY29uc3QgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXGIoMGJbMDFcXCddKyknIH0sXG4gICAgICB7IGJlZ2luOiAnKC0/KVxcXFxiKFtcXFxcZFxcJ10rKFxcXFwuW1xcXFxkXFwnXSopP3xcXFxcLltcXFxcZFxcJ10rKSgobGx8TEx8bHxMKSh1fFUpP3wodXxVKShsbHxMTHxsfEwpP3xmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBQUkVQUk9DRVNTT1IgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46IC8jXFxzKlthLXpdK1xcYi8sXG4gICAgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHsga2V5d29yZDpcbiAgICAgICAgJ2lmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgd2FybmluZyBlcnJvciBsaW5lICdcbiAgICAgICAgKyAncHJhZ21hIF9QcmFnbWEgaWZkZWYgaWZuZGVmIGluY2x1ZGUnIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXFxcXFxuLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgaGxqcy5pbmhlcml0KFNUUklOR1MsIHsgY2xhc3NOYW1lOiAnc3RyaW5nJyB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgYmVnaW46IC88Lio/Pi9cbiAgICAgIH0sXG4gICAgICBDX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgIF1cbiAgfTtcblxuICBjb25zdCBUSVRMRV9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3RpdGxlJyxcbiAgICBiZWdpbjogcmVnZXgub3B0aW9uYWwoTkFNRVNQQUNFX1JFKSArIGhsanMuSURFTlRfUkUsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgRlVOQ1RJT05fVElUTEUgPSByZWdleC5vcHRpb25hbChOQU1FU1BBQ0VfUkUpICsgaGxqcy5JREVOVF9SRSArICdcXFxccypcXFxcKCc7XG5cbiAgLy8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2tleXdvcmRcbiAgY29uc3QgUkVTRVJWRURfS0VZV09SRFMgPSBbXG4gICAgJ2FsaWduYXMnLFxuICAgICdhbGlnbm9mJyxcbiAgICAnYW5kJyxcbiAgICAnYW5kX2VxJyxcbiAgICAnYXNtJyxcbiAgICAnYXRvbWljX2NhbmNlbCcsXG4gICAgJ2F0b21pY19jb21taXQnLFxuICAgICdhdG9taWNfbm9leGNlcHQnLFxuICAgICdhdXRvJyxcbiAgICAnYml0YW5kJyxcbiAgICAnYml0b3InLFxuICAgICdicmVhaycsXG4gICAgJ2Nhc2UnLFxuICAgICdjYXRjaCcsXG4gICAgJ2NsYXNzJyxcbiAgICAnY29fYXdhaXQnLFxuICAgICdjb19yZXR1cm4nLFxuICAgICdjb195aWVsZCcsXG4gICAgJ2NvbXBsJyxcbiAgICAnY29uY2VwdCcsXG4gICAgJ2NvbnN0X2Nhc3R8MTAnLFxuICAgICdjb25zdGV2YWwnLFxuICAgICdjb25zdGV4cHInLFxuICAgICdjb25zdGluaXQnLFxuICAgICdjb250aW51ZScsXG4gICAgJ2RlY2x0eXBlJyxcbiAgICAnZGVmYXVsdCcsXG4gICAgJ2RlbGV0ZScsXG4gICAgJ2RvJyxcbiAgICAnZHluYW1pY19jYXN0fDEwJyxcbiAgICAnZWxzZScsXG4gICAgJ2VudW0nLFxuICAgICdleHBsaWNpdCcsXG4gICAgJ2V4cG9ydCcsXG4gICAgJ2V4dGVybicsXG4gICAgJ2ZhbHNlJyxcbiAgICAnZmluYWwnLFxuICAgICdmb3InLFxuICAgICdmcmllbmQnLFxuICAgICdnb3RvJyxcbiAgICAnaWYnLFxuICAgICdpbXBvcnQnLFxuICAgICdpbmxpbmUnLFxuICAgICdtb2R1bGUnLFxuICAgICdtdXRhYmxlJyxcbiAgICAnbmFtZXNwYWNlJyxcbiAgICAnbmV3JyxcbiAgICAnbm9leGNlcHQnLFxuICAgICdub3QnLFxuICAgICdub3RfZXEnLFxuICAgICdudWxscHRyJyxcbiAgICAnb3BlcmF0b3InLFxuICAgICdvcicsXG4gICAgJ29yX2VxJyxcbiAgICAnb3ZlcnJpZGUnLFxuICAgICdwcml2YXRlJyxcbiAgICAncHJvdGVjdGVkJyxcbiAgICAncHVibGljJyxcbiAgICAncmVmbGV4cHInLFxuICAgICdyZWdpc3RlcicsXG4gICAgJ3JlaW50ZXJwcmV0X2Nhc3R8MTAnLFxuICAgICdyZXF1aXJlcycsXG4gICAgJ3JldHVybicsXG4gICAgJ3NpemVvZicsXG4gICAgJ3N0YXRpY19hc3NlcnQnLFxuICAgICdzdGF0aWNfY2FzdHwxMCcsXG4gICAgJ3N0cnVjdCcsXG4gICAgJ3N3aXRjaCcsXG4gICAgJ3N5bmNocm9uaXplZCcsXG4gICAgJ3RlbXBsYXRlJyxcbiAgICAndGhpcycsXG4gICAgJ3RocmVhZF9sb2NhbCcsXG4gICAgJ3Rocm93JyxcbiAgICAndHJhbnNhY3Rpb25fc2FmZScsXG4gICAgJ3RyYW5zYWN0aW9uX3NhZmVfZHluYW1pYycsXG4gICAgJ3RydWUnLFxuICAgICd0cnknLFxuICAgICd0eXBlZGVmJyxcbiAgICAndHlwZWlkJyxcbiAgICAndHlwZW5hbWUnLFxuICAgICd1bmlvbicsXG4gICAgJ3VzaW5nJyxcbiAgICAndmlydHVhbCcsXG4gICAgJ3ZvbGF0aWxlJyxcbiAgICAnd2hpbGUnLFxuICAgICd4b3InLFxuICAgICd4b3JfZXEnXG4gIF07XG5cbiAgLy8gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29tL3cvY3BwL2tleXdvcmRcbiAgY29uc3QgUkVTRVJWRURfVFlQRVMgPSBbXG4gICAgJ2Jvb2wnLFxuICAgICdjaGFyJyxcbiAgICAnY2hhcjE2X3QnLFxuICAgICdjaGFyMzJfdCcsXG4gICAgJ2NoYXI4X3QnLFxuICAgICdkb3VibGUnLFxuICAgICdmbG9hdCcsXG4gICAgJ2ludCcsXG4gICAgJ2xvbmcnLFxuICAgICdzaG9ydCcsXG4gICAgJ3ZvaWQnLFxuICAgICd3Y2hhcl90JyxcbiAgICAndW5zaWduZWQnLFxuICAgICdzaWduZWQnLFxuICAgICdjb25zdCcsXG4gICAgJ3N0YXRpYydcbiAgXTtcblxuICBjb25zdCBUWVBFX0hJTlRTID0gW1xuICAgICdhbnknLFxuICAgICdhdXRvX3B0cicsXG4gICAgJ2JhcnJpZXInLFxuICAgICdiaW5hcnlfc2VtYXBob3JlJyxcbiAgICAnYml0c2V0JyxcbiAgICAnY29tcGxleCcsXG4gICAgJ2NvbmRpdGlvbl92YXJpYWJsZScsXG4gICAgJ2NvbmRpdGlvbl92YXJpYWJsZV9hbnknLFxuICAgICdjb3VudGluZ19zZW1hcGhvcmUnLFxuICAgICdkZXF1ZScsXG4gICAgJ2ZhbHNlX3R5cGUnLFxuICAgICdmdXR1cmUnLFxuICAgICdpbWFnaW5hcnknLFxuICAgICdpbml0aWFsaXplcl9saXN0JyxcbiAgICAnaXN0cmluZ3N0cmVhbScsXG4gICAgJ2p0aHJlYWQnLFxuICAgICdsYXRjaCcsXG4gICAgJ2xvY2tfZ3VhcmQnLFxuICAgICdtdWx0aW1hcCcsXG4gICAgJ211bHRpc2V0JyxcbiAgICAnbXV0ZXgnLFxuICAgICdvcHRpb25hbCcsXG4gICAgJ29zdHJpbmdzdHJlYW0nLFxuICAgICdwYWNrYWdlZF90YXNrJyxcbiAgICAncGFpcicsXG4gICAgJ3Byb21pc2UnLFxuICAgICdwcmlvcml0eV9xdWV1ZScsXG4gICAgJ3F1ZXVlJyxcbiAgICAncmVjdXJzaXZlX211dGV4JyxcbiAgICAncmVjdXJzaXZlX3RpbWVkX211dGV4JyxcbiAgICAnc2NvcGVkX2xvY2snLFxuICAgICdzZXQnLFxuICAgICdzaGFyZWRfZnV0dXJlJyxcbiAgICAnc2hhcmVkX2xvY2snLFxuICAgICdzaGFyZWRfbXV0ZXgnLFxuICAgICdzaGFyZWRfdGltZWRfbXV0ZXgnLFxuICAgICdzaGFyZWRfcHRyJyxcbiAgICAnc3RhY2snLFxuICAgICdzdHJpbmdfdmlldycsXG4gICAgJ3N0cmluZ3N0cmVhbScsXG4gICAgJ3RpbWVkX211dGV4JyxcbiAgICAndGhyZWFkJyxcbiAgICAndHJ1ZV90eXBlJyxcbiAgICAndHVwbGUnLFxuICAgICd1bmlxdWVfbG9jaycsXG4gICAgJ3VuaXF1ZV9wdHInLFxuICAgICd1bm9yZGVyZWRfbWFwJyxcbiAgICAndW5vcmRlcmVkX211bHRpbWFwJyxcbiAgICAndW5vcmRlcmVkX211bHRpc2V0JyxcbiAgICAndW5vcmRlcmVkX3NldCcsXG4gICAgJ3ZhcmlhbnQnLFxuICAgICd2ZWN0b3InLFxuICAgICd3ZWFrX3B0cicsXG4gICAgJ3dzdHJpbmcnLFxuICAgICd3c3RyaW5nX3ZpZXcnXG4gIF07XG5cbiAgY29uc3QgRlVOQ1RJT05fSElOVFMgPSBbXG4gICAgJ2Fib3J0JyxcbiAgICAnYWJzJyxcbiAgICAnYWNvcycsXG4gICAgJ2FwcGx5JyxcbiAgICAnYXNfY29uc3QnLFxuICAgICdhc2luJyxcbiAgICAnYXRhbicsXG4gICAgJ2F0YW4yJyxcbiAgICAnY2FsbG9jJyxcbiAgICAnY2VpbCcsXG4gICAgJ2NlcnInLFxuICAgICdjaW4nLFxuICAgICdjbG9nJyxcbiAgICAnY29zJyxcbiAgICAnY29zaCcsXG4gICAgJ2NvdXQnLFxuICAgICdkZWNsdmFsJyxcbiAgICAnZW5kbCcsXG4gICAgJ2V4Y2hhbmdlJyxcbiAgICAnZXhpdCcsXG4gICAgJ2V4cCcsXG4gICAgJ2ZhYnMnLFxuICAgICdmbG9vcicsXG4gICAgJ2Ztb2QnLFxuICAgICdmb3J3YXJkJyxcbiAgICAnZnByaW50ZicsXG4gICAgJ2ZwdXRzJyxcbiAgICAnZnJlZScsXG4gICAgJ2ZyZXhwJyxcbiAgICAnZnNjYW5mJyxcbiAgICAnZnV0dXJlJyxcbiAgICAnaW52b2tlJyxcbiAgICAnaXNhbG51bScsXG4gICAgJ2lzYWxwaGEnLFxuICAgICdpc2NudHJsJyxcbiAgICAnaXNkaWdpdCcsXG4gICAgJ2lzZ3JhcGgnLFxuICAgICdpc2xvd2VyJyxcbiAgICAnaXNwcmludCcsXG4gICAgJ2lzcHVuY3QnLFxuICAgICdpc3NwYWNlJyxcbiAgICAnaXN1cHBlcicsXG4gICAgJ2lzeGRpZ2l0JyxcbiAgICAnbGFicycsXG4gICAgJ2xhdW5kZXInLFxuICAgICdsZGV4cCcsXG4gICAgJ2xvZycsXG4gICAgJ2xvZzEwJyxcbiAgICAnbWFrZV9wYWlyJyxcbiAgICAnbWFrZV9zaGFyZWQnLFxuICAgICdtYWtlX3NoYXJlZF9mb3Jfb3ZlcndyaXRlJyxcbiAgICAnbWFrZV90dXBsZScsXG4gICAgJ21ha2VfdW5pcXVlJyxcbiAgICAnbWFsbG9jJyxcbiAgICAnbWVtY2hyJyxcbiAgICAnbWVtY21wJyxcbiAgICAnbWVtY3B5JyxcbiAgICAnbWVtc2V0JyxcbiAgICAnbW9kZicsXG4gICAgJ21vdmUnLFxuICAgICdwb3cnLFxuICAgICdwcmludGYnLFxuICAgICdwdXRjaGFyJyxcbiAgICAncHV0cycsXG4gICAgJ3JlYWxsb2MnLFxuICAgICdzY2FuZicsXG4gICAgJ3NpbicsXG4gICAgJ3NpbmgnLFxuICAgICdzbnByaW50ZicsXG4gICAgJ3NwcmludGYnLFxuICAgICdzcXJ0JyxcbiAgICAnc3NjYW5mJyxcbiAgICAnc3RkJyxcbiAgICAnc3RkZXJyJyxcbiAgICAnc3RkaW4nLFxuICAgICdzdGRvdXQnLFxuICAgICdzdHJjYXQnLFxuICAgICdzdHJjaHInLFxuICAgICdzdHJjbXAnLFxuICAgICdzdHJjcHknLFxuICAgICdzdHJjc3BuJyxcbiAgICAnc3RybGVuJyxcbiAgICAnc3RybmNhdCcsXG4gICAgJ3N0cm5jbXAnLFxuICAgICdzdHJuY3B5JyxcbiAgICAnc3RycGJyaycsXG4gICAgJ3N0cnJjaHInLFxuICAgICdzdHJzcG4nLFxuICAgICdzdHJzdHInLFxuICAgICdzd2FwJyxcbiAgICAndGFuJyxcbiAgICAndGFuaCcsXG4gICAgJ3Rlcm1pbmF0ZScsXG4gICAgJ3RvX3VuZGVybHlpbmcnLFxuICAgICd0b2xvd2VyJyxcbiAgICAndG91cHBlcicsXG4gICAgJ3ZmcHJpbnRmJyxcbiAgICAndmlzaXQnLFxuICAgICd2cHJpbnRmJyxcbiAgICAndnNwcmludGYnXG4gIF07XG5cbiAgY29uc3QgTElURVJBTFMgPSBbXG4gICAgJ05VTEwnLFxuICAgICdmYWxzZScsXG4gICAgJ251bGxvcHQnLFxuICAgICdudWxscHRyJyxcbiAgICAndHJ1ZSdcbiAgXTtcblxuICAvLyBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAva2V5d29yZFxuICBjb25zdCBCVUlMVF9JTiA9IFsgJ19QcmFnbWEnIF07XG5cbiAgY29uc3QgQ1BQX0tFWVdPUkRTID0ge1xuICAgIHR5cGU6IFJFU0VSVkVEX1RZUEVTLFxuICAgIGtleXdvcmQ6IFJFU0VSVkVEX0tFWVdPUkRTLFxuICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgIGJ1aWx0X2luOiBCVUlMVF9JTixcbiAgICBfdHlwZV9oaW50czogVFlQRV9ISU5UU1xuICB9O1xuXG4gIGNvbnN0IEZVTkNUSU9OX0RJU1BBVENIID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uLmRpc3BhdGNoJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAga2V5d29yZHM6IHtcbiAgICAgIC8vIE9ubHkgZm9yIHJlbGV2YW5jZSwgbm90IGhpZ2hsaWdodGluZy5cbiAgICAgIF9oaW50OiBGVU5DVElPTl9ISU5UUyB9LFxuICAgIGJlZ2luOiByZWdleC5jb25jYXQoXG4gICAgICAvXFxiLyxcbiAgICAgIC8oPyFkZWNsdHlwZSkvLFxuICAgICAgLyg/IWlmKS8sXG4gICAgICAvKD8hZm9yKS8sXG4gICAgICAvKD8hc3dpdGNoKS8sXG4gICAgICAvKD8hd2hpbGUpLyxcbiAgICAgIGhsanMuSURFTlRfUkUsXG4gICAgICByZWdleC5sb29rYWhlYWQoLyg8W148Pl0rPnwpXFxzKlxcKC8pKVxuICB9O1xuXG4gIGNvbnN0IEVYUFJFU1NJT05fQ09OVEFJTlMgPSBbXG4gICAgRlVOQ1RJT05fRElTUEFUQ0gsXG4gICAgUFJFUFJPQ0VTU09SLFxuICAgIENQUF9QUklNSVRJVkVfVFlQRVMsXG4gICAgQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIE5VTUJFUlMsXG4gICAgU1RSSU5HU1xuICBdO1xuXG4gIGNvbnN0IEVYUFJFU1NJT05fQ09OVEVYVCA9IHtcbiAgICAvLyBUaGlzIG1vZGUgY292ZXJzIGV4cHJlc3Npb24gY29udGV4dCB3aGVyZSB3ZSBjYW4ndCBleHBlY3QgYSBmdW5jdGlvblxuICAgIC8vIGRlZmluaXRpb24gYW5kIHNob3VsZG4ndCBoaWdobGlnaHQgYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlIG9uZTpcbiAgICAvLyBgcmV0dXJuIHNvbWUoKWAsIGBlbHNlIGlmKClgLCBgKHgqc3VtKDEsIDIpKWBcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogLz0vLFxuICAgICAgICBlbmQ6IC87L1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmV3IHRocm93IHJldHVybiBlbHNlJyxcbiAgICAgICAgZW5kOiAvOy9cbiAgICAgIH1cbiAgICBdLFxuICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgY29udGFpbnM6IEVYUFJFU1NJT05fQ09OVEFJTlMuY29uY2F0KFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICBjb250YWluczogRVhQUkVTU0lPTl9DT05UQUlOUy5jb25jYXQoWyAnc2VsZicgXSksXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0pLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IEZVTkNUSU9OX0RFQ0xBUkFUSU9OID0ge1xuICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICBiZWdpbjogJygnICsgRlVOQ1RJT05fVFlQRV9SRSArICdbXFxcXComXFxcXHNdKykrJyArIEZVTkNUSU9OX1RJVExFLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGVuZDogL1t7Oz1dLyxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1teXFx3XFxzXFwqJjo8Pi5dLyxcbiAgICBjb250YWluczogW1xuICAgICAgeyAvLyB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgY29uZnVzZWQgYXMgdGhlIGZ1bmN0aW9uIHRpdGxlXG4gICAgICAgIGJlZ2luOiBERUNMVFlQRV9BVVRPX1JFLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBGVU5DVElPTl9USVRMRSxcbiAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbIFRJVExFX01PREUgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gbmVlZGVkIGJlY2F1c2Ugd2UgZG8gbm90IGhhdmUgbG9vay1iZWhpbmQgb24gdGhlIGJlbG93IHJ1bGVcbiAgICAgIC8vIHRvIHByZXZlbnQgaXQgZnJvbSBncmFiYmluZyB0aGUgZmluYWwgOiBpbiBhIDo6IHBhaXJcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC86Oi8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC8vIGluaXRpYWxpemVyc1xuICAgICAge1xuICAgICAgICBiZWdpbjogLzovLFxuICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBTVFJJTkdTLFxuICAgICAgICAgIE5VTUJFUlNcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGFsbG93IGZvciBtdWx0aXBsZSBkZWNsYXJhdGlvbnMsIGUuZy46XG4gICAgICAvLyBleHRlcm4gdm9pZCBmKGludCksIGcoY2hhcik7XG4gICAgICB7XG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgbWF0Y2g6IC8sL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIFNUUklOR1MsXG4gICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICBDUFBfUFJJTUlUSVZFX1RZUEVTLFxuICAgICAgICAgIC8vIENvdW50IG1hdGNoaW5nIHBhcmVudGhlc2VzLlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgICAgICBDX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBTVFJJTkdTLFxuICAgICAgICAgICAgICBOVU1CRVJTLFxuICAgICAgICAgICAgICBDUFBfUFJJTUlUSVZFX1RZUEVTXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgQ1BQX1BSSU1JVElWRV9UWVBFUyxcbiAgICAgIENfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgUFJFUFJPQ0VTU09SXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0MrKycsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ2NjJyxcbiAgICAgICdjKysnLFxuICAgICAgJ2grKycsXG4gICAgICAnaHBwJyxcbiAgICAgICdoaCcsXG4gICAgICAnaHh4JyxcbiAgICAgICdjeHgnXG4gICAgXSxcbiAgICBrZXl3b3JkczogQ1BQX0tFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY2xhc3NOYW1lQWxpYXNlczogeyAnZnVuY3Rpb24uZGlzcGF0Y2gnOiAnYnVpbHRfaW4nIH0sXG4gICAgY29udGFpbnM6IFtdLmNvbmNhdChcbiAgICAgIEVYUFJFU1NJT05fQ09OVEVYVCxcbiAgICAgIEZVTkNUSU9OX0RFQ0xBUkFUSU9OLFxuICAgICAgRlVOQ1RJT05fRElTUEFUQ0gsXG4gICAgICBFWFBSRVNTSU9OX0NPTlRBSU5TLFxuICAgICAgW1xuICAgICAgICBQUkVQUk9DRVNTT1IsXG4gICAgICAgIHsgLy8gY29udGFpbmVyczogaWUsIGB2ZWN0b3IgPGludD4gcm9vbXMgKDkpO2BcbiAgICAgICAgICBiZWdpbjogJ1xcXFxiKGRlcXVlfGxpc3R8cXVldWV8cHJpb3JpdHlfcXVldWV8cGFpcnxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXl8dHVwbGV8b3B0aW9uYWx8dmFyaWFudHxmdW5jdGlvbilcXFxccyo8KD8hPCknLFxuICAgICAgICAgIGVuZDogJz4nLFxuICAgICAgICAgIGtleXdvcmRzOiBDUFBfS0VZV09SRFMsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICdzZWxmJyxcbiAgICAgICAgICAgIENQUF9QUklNSVRJVkVfVFlQRVNcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicsXG4gICAgICAgICAga2V5d29yZHM6IENQUF9LRVlXT1JEU1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAgIC8vIGV4dHJhIGNvbXBsZXhpdHkgdG8gZGVhbCB3aXRoIGBlbnVtIGNsYXNzYCBhbmQgYGVudW0gc3RydWN0YFxuICAgICAgICAgICAgL1xcYig/OmVudW0oPzpcXHMrKD86Y2xhc3N8c3RydWN0KSk/fGNsYXNzfHN0cnVjdHx1bmlvbikvLFxuICAgICAgICAgICAgL1xccysvLFxuICAgICAgICAgICAgL1xcdysvXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgICAgIDE6ICdrZXl3b3JkJyxcbiAgICAgICAgICAgIDM6ICd0aXRsZS5jbGFzcydcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0pXG4gIH07XG59XG5cbmV4cG9ydCB7IGNwcCBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsiY3BwIiwiaGxqcyIsInJlZ2V4IiwiQ19MSU5FX0NPTU1FTlRfTU9ERSIsIkNPTU1FTlQiLCJjb250YWlucyIsImJlZ2luIiwiREVDTFRZUEVfQVVUT19SRSIsIk5BTUVTUEFDRV9SRSIsIlRFTVBMQVRFX0FSR1VNRU5UX1JFIiwiRlVOQ1RJT05fVFlQRV9SRSIsIm9wdGlvbmFsIiwiQ1BQX1BSSU1JVElWRV9UWVBFUyIsImNsYXNzTmFtZSIsIkNIQVJBQ1RFUl9FU0NBUEVTIiwiU1RSSU5HUyIsInZhcmlhbnRzIiwiZW5kIiwiaWxsZWdhbCIsIkJBQ0tTTEFTSF9FU0NBUEUiLCJFTkRfU0FNRV9BU19CRUdJTiIsIk5VTUJFUlMiLCJyZWxldmFuY2UiLCJQUkVQUk9DRVNTT1IiLCJrZXl3b3JkcyIsImtleXdvcmQiLCJpbmhlcml0IiwiQ19CTE9DS19DT01NRU5UX01PREUiLCJUSVRMRV9NT0RFIiwiSURFTlRfUkUiLCJGVU5DVElPTl9USVRMRSIsIlJFU0VSVkVEX0tFWVdPUkRTIiwiUkVTRVJWRURfVFlQRVMiLCJUWVBFX0hJTlRTIiwiRlVOQ1RJT05fSElOVFMiLCJMSVRFUkFMUyIsIkJVSUxUX0lOIiwiQ1BQX0tFWVdPUkRTIiwidHlwZSIsImxpdGVyYWwiLCJidWlsdF9pbiIsIl90eXBlX2hpbnRzIiwiRlVOQ1RJT05fRElTUEFUQ0giLCJfaGludCIsImNvbmNhdCIsImxvb2thaGVhZCIsIkVYUFJFU1NJT05fQ09OVEFJTlMiLCJFWFBSRVNTSU9OX0NPTlRFWFQiLCJiZWdpbktleXdvcmRzIiwiRlVOQ1RJT05fREVDTEFSQVRJT04iLCJyZXR1cm5CZWdpbiIsImV4Y2x1ZGVFbmQiLCJlbmRzV2l0aFBhcmVudCIsIm1hdGNoIiwibmFtZSIsImFsaWFzZXMiLCJjbGFzc05hbWVBbGlhc2VzIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/cpp.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/csharp.js":
/*!**********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/csharp.js ***!
\**********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ csharp)\n/* harmony export */ });\n/*\nLanguage: C#\nAuthor: Jason Diamond <jason@diamond.name>\nContributor: Nicolas LLOBERA <nllobera@gmail.com>, Pieter Vantorre <pietervantorre@gmail.com>, David Pine <david.pine@microsoft.com>\nWebsite: https://docs.microsoft.com/dotnet/csharp/\nCategory: common\n*/ /** @type LanguageFn */ function csharp(hljs) {\n const BUILT_IN_KEYWORDS = [\n \"bool\",\n \"byte\",\n \"char\",\n \"decimal\",\n \"delegate\",\n \"double\",\n \"dynamic\",\n \"enum\",\n \"float\",\n \"int\",\n \"long\",\n \"nint\",\n \"nuint\",\n \"object\",\n \"sbyte\",\n \"short\",\n \"string\",\n \"ulong\",\n \"uint\",\n \"ushort\"\n ];\n const FUNCTION_MODIFIERS = [\n \"public\",\n \"private\",\n \"protected\",\n \"static\",\n \"internal\",\n \"protected\",\n \"abstract\",\n \"async\",\n \"extern\",\n \"override\",\n \"unsafe\",\n \"virtual\",\n \"new\",\n \"sealed\",\n \"partial\"\n ];\n const LITERAL_KEYWORDS = [\n \"default\",\n \"false\",\n \"null\",\n \"true\"\n ];\n const NORMAL_KEYWORDS = [\n \"abstract\",\n \"as\",\n \"base\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"do\",\n \"else\",\n \"event\",\n \"explicit\",\n \"extern\",\n \"finally\",\n \"fixed\",\n \"for\",\n \"foreach\",\n \"goto\",\n \"if\",\n \"implicit\",\n \"in\",\n \"interface\",\n \"internal\",\n \"is\",\n \"lock\",\n \"namespace\",\n \"new\",\n \"operator\",\n \"out\",\n \"override\",\n \"params\",\n \"private\",\n \"protected\",\n \"public\",\n \"readonly\",\n \"record\",\n \"ref\",\n \"return\",\n \"scoped\",\n \"sealed\",\n \"sizeof\",\n \"stackalloc\",\n \"static\",\n \"struct\",\n \"switch\",\n \"this\",\n \"throw\",\n \"try\",\n \"typeof\",\n \"unchecked\",\n \"unsafe\",\n \"using\",\n \"virtual\",\n \"void\",\n \"volatile\",\n \"while\"\n ];\n const CONTEXTUAL_KEYWORDS = [\n \"add\",\n \"alias\",\n \"and\",\n \"ascending\",\n \"async\",\n \"await\",\n \"by\",\n \"descending\",\n \"equals\",\n \"from\",\n \"get\",\n \"global\",\n \"group\",\n \"init\",\n \"into\",\n \"join\",\n \"let\",\n \"nameof\",\n \"not\",\n \"notnull\",\n \"on\",\n \"or\",\n \"orderby\",\n \"partial\",\n \"remove\",\n \"select\",\n \"set\",\n \"unmanaged\",\n \"value|0\",\n \"var\",\n \"when\",\n \"where\",\n \"with\",\n \"yield\"\n ];\n const KEYWORDS = {\n keyword: NORMAL_KEYWORDS.concat(CONTEXTUAL_KEYWORDS),\n built_in: BUILT_IN_KEYWORDS,\n literal: LITERAL_KEYWORDS\n };\n const TITLE_MODE = hljs.inherit(hljs.TITLE_MODE, {\n begin: \"[a-zA-Z](\\\\.?\\\\w)*\"\n });\n const NUMBERS = {\n className: \"number\",\n variants: [\n {\n begin: \"\\\\b(0b[01']+)\"\n },\n {\n begin: \"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)(u|U|l|L|ul|UL|f|F|b|B)\"\n },\n {\n begin: \"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n }\n ],\n relevance: 0\n };\n const VERBATIM_STRING = {\n className: \"string\",\n begin: '@\"',\n end: '\"',\n contains: [\n {\n begin: '\"\"'\n }\n ]\n };\n const VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {\n illegal: /\\n/\n });\n const SUBST = {\n className: \"subst\",\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS\n };\n const SUBST_NO_LF = hljs.inherit(SUBST, {\n illegal: /\\n/\n });\n const INTERPOLATED_STRING = {\n className: \"string\",\n begin: /\\$\"/,\n end: '\"',\n illegal: /\\n/,\n contains: [\n {\n begin: /\\{\\{/\n },\n {\n begin: /\\}\\}/\n },\n hljs.BACKSLASH_ESCAPE,\n SUBST_NO_LF\n ]\n };\n const INTERPOLATED_VERBATIM_STRING = {\n className: \"string\",\n begin: /\\$@\"/,\n end: '\"',\n contains: [\n {\n begin: /\\{\\{/\n },\n {\n begin: /\\}\\}/\n },\n {\n begin: '\"\"'\n },\n SUBST\n ]\n };\n const INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [\n {\n begin: /\\{\\{/\n },\n {\n begin: /\\}\\}/\n },\n {\n begin: '\"\"'\n },\n SUBST_NO_LF\n ]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, {\n illegal: /\\n/\n })\n ];\n const STRING = {\n variants: [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n const GENERIC_MODIFIER = {\n begin: \"<\",\n end: \">\",\n contains: [\n {\n beginKeywords: \"in out\"\n },\n TITLE_MODE\n ]\n };\n const TYPE_IDENT_RE = hljs.IDENT_RE + \"(<\" + hljs.IDENT_RE + \"(\\\\s*,\\\\s*\" + hljs.IDENT_RE + \")*>)?(\\\\[\\\\])?\";\n const AT_IDENTIFIER = {\n // prevents expressions like `@class` from incorrect flagging\n // `class` as a keyword\n begin: \"@\" + hljs.IDENT_RE,\n relevance: 0\n };\n return {\n name: \"C#\",\n aliases: [\n \"cs\",\n \"c#\"\n ],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\"///\", \"$\", {\n returnBegin: true,\n contains: [\n {\n className: \"doctag\",\n variants: [\n {\n begin: \"///\",\n relevance: 0\n },\n {\n begin: \"<!--|-->\"\n },\n {\n begin: \"</?\",\n end: \">\"\n }\n ]\n }\n ]\n }),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: \"meta\",\n begin: \"#\",\n end: \"$\",\n keywords: {\n keyword: \"if else elif endif define undef warning error line region endregion pragma checksum\"\n }\n },\n STRING,\n NUMBERS,\n {\n beginKeywords: \"class interface\",\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:,]/,\n contains: [\n {\n beginKeywords: \"where class\"\n },\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: \"namespace\",\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: \"record\",\n relevance: 0,\n end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n TITLE_MODE,\n GENERIC_MODIFIER,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // [Attributes(\"\")]\n className: \"meta\",\n begin: \"^\\\\s*\\\\[(?=[\\\\w])\",\n excludeBegin: true,\n end: \"\\\\]\",\n excludeEnd: true,\n contains: [\n {\n className: \"string\",\n begin: /\"/,\n end: /\"/\n }\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: \"new return throw await else\",\n relevance: 0\n },\n {\n className: \"function\",\n begin: \"(\" + TYPE_IDENT_RE + \"\\\\s+)+\" + hljs.IDENT_RE + \"\\\\s*(<[^=]+>\\\\s*)?\\\\(\",\n returnBegin: true,\n end: /\\s*[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n // prevents these from being highlighted `title`\n {\n beginKeywords: FUNCTION_MODIFIERS.join(\" \"),\n relevance: 0\n },\n {\n begin: hljs.IDENT_RE + \"\\\\s*(<[^=]+>\\\\s*)?\\\\(\",\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n GENERIC_MODIFIER\n ],\n relevance: 0\n },\n {\n match: /\\(\\)/\n },\n {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n AT_IDENTIFIER\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9jc2hhcnAuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7QUFNQSxHQUVBLHFCQUFxQixHQUNyQixTQUFTQSxPQUFPQyxJQUFJO0lBQ2xCLE1BQU1DLG9CQUFvQjtRQUN4QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFDRCxNQUFNQyxxQkFBcUI7UUFDekI7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFDRCxNQUFNQyxtQkFBbUI7UUFDdkI7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUNELE1BQU1DLGtCQUFrQjtRQUN0QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUNELE1BQU1DLHNCQUFzQjtRQUMxQjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNB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O2dCQUNFLDZEQUE2RDtnQkFDN0Qsc0NBQXNDO2dCQUN0Q2dCLGVBQWU7Z0JBQ2ZsQixXQUFXO1lBQ2I7WUFDQTtnQkFDRUYsV0FBVztnQkFDWEYsT0FBTyxNQUFNdUIsZ0JBQWdCLFdBQVdwQyxLQUFLcUMsUUFBUSxHQUFHO2dCQUN4REssYUFBYTtnQkFDYnZCLEtBQUs7Z0JBQ0wwQixZQUFZO2dCQUNackIsVUFBVWxCO2dCQUNWYyxVQUFVO29CQUNSLGdEQUFnRDtvQkFDaEQ7d0JBQ0VlLGVBQWVqQyxtQkFBbUI0QyxJQUFJLENBQUM7d0JBQ3ZDN0IsV0FBVztvQkFDYjtvQkFDQTt3QkFDRUosT0FBT2IsS0FBS3FDLFFBQVEsR0FBRzt3QkFDdkJLLGFBQWE7d0JBQ2J0QixVQUFVOzRCQUNScEIsS0FBS1csVUFBVTs0QkFDZnVCO3lCQUNEO3dCQUNEakIsV0FBVztvQkFDYjtvQkFDQTt3QkFBRThCLE9BQU87b0JBQU87b0JBQ2hCO3dCQUNFaEMsV0FBVzt3QkFDWEYsT0FBTzt3QkFDUE0sS0FBSzt3QkFDTHlCLGNBQWM7d0JBQ2RDLFlBQVk7d0JBQ1pyQixVQUFVbEI7d0JBQ1ZXLFdBQVc7d0JBQ1hHLFVBQVU7NEJBQ1JhOzRCQUNBbkI7NEJBQ0FkLEtBQUtnQyxvQkFBb0I7eUJBQzFCO29CQUNIO29CQUNBaEMsS0FBSzJDLG1CQUFtQjtvQkFDeEIzQyxLQUFLZ0Msb0JBQW9CO2lCQUMxQjtZQUNIO1lBQ0FNO1NBQ0Q7SUFDSDtBQUNGO0FBRTZCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9jc2hhcnAuanM/ZTk1MSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEMjXG5BdXRob3I6IEphc29uIERpYW1vbmQgPGphc29uQGRpYW1vbmQubmFtZT5cbkNvbnRyaWJ1dG9yOiBOaWNvbGFzIExMT0JFUkEgPG5sbG9iZXJhQGdtYWlsLmNvbT4sIFBpZXRlciBWYW50b3JyZSA8cGlldGVydmFudG9ycmVAZ21haWwuY29tPiwgRGF2aWQgUGluZSA8ZGF2aWQucGluZUBtaWNyb3NvZnQuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZG90bmV0L2NzaGFycC9cbkNhdGVnb3J5OiBjb21tb25cbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBjc2hhcnAoaGxqcykge1xuICBjb25zdCBCVUlMVF9JTl9LRVlXT1JEUyA9IFtcbiAgICAnYm9vbCcsXG4gICAgJ2J5dGUnLFxuICAgICdjaGFyJyxcbiAgICAnZGVjaW1hbCcsXG4gICAgJ2RlbGVnYXRlJyxcbiAgICAnZG91YmxlJyxcbiAgICAnZHluYW1pYycsXG4gICAgJ2VudW0nLFxuICAgICdmbG9hdCcsXG4gICAgJ2ludCcsXG4gICAgJ2xvbmcnLFxuICAgICduaW50JyxcbiAgICAnbnVpbnQnLFxuICAgICdvYmplY3QnLFxuICAgICdzYnl0ZScsXG4gICAgJ3Nob3J0JyxcbiAgICAnc3RyaW5nJyxcbiAgICAndWxvbmcnLFxuICAgICd1aW50JyxcbiAgICAndXNob3J0J1xuICBdO1xuICBjb25zdCBGVU5DVElPTl9NT0RJRklFUlMgPSBbXG4gICAgJ3B1YmxpYycsXG4gICAgJ3ByaXZhdGUnLFxuICAgICdwcm90ZWN0ZWQnLFxuICAgICdzdGF0aWMnLFxuICAgICdpbnRlcm5hbCcsXG4gICAgJ3Byb3RlY3RlZCcsXG4gICAgJ2Fic3RyYWN0JyxcbiAgICAnYXN5bmMnLFxuICAgICdleHRlcm4nLFxuICAgICdvdmVycmlkZScsXG4gICAgJ3Vuc2FmZScsXG4gICAgJ3ZpcnR1YWwnLFxuICAgICduZXcnLFxuICAgICdzZWFsZWQnLFxuICAgICdwYXJ0aWFsJ1xuICBdO1xuICBjb25zdCBMSVRFUkFMX0tFWVdPUkRTID0gW1xuICAgICdkZWZhdWx0JyxcbiAgICAnZmFsc2UnLFxuICAgICdudWxsJyxcbiAgICAndHJ1ZSdcbiAgXTtcbiAgY29uc3QgTk9STUFMX0tFWVdPUkRTID0gW1xuICAgICdhYnN0cmFjdCcsXG4gICAgJ2FzJyxcbiAgICAnYmFzZScsXG4gICAgJ2JyZWFrJyxcbiAgICAnY2FzZScsXG4gICAgJ2NhdGNoJyxcbiAgICAnY2xhc3MnLFxuICAgICdjb25zdCcsXG4gICAgJ2NvbnRpbnVlJyxcbiAgICAnZG8nLFxuICAgICdlbHNlJyxcbiAgICAnZXZlbnQnLFxuICAgICdleHBsaWNpdCcsXG4gICAgJ2V4dGVybicsXG4gICAgJ2ZpbmFsbHknLFxuICAgICdmaXhlZCcsXG4gICAgJ2ZvcicsXG4gICAgJ2ZvcmVhY2gnLFxuICAgICdnb3RvJyxcbiAgICAnaWYnLFxuICAgICdpbXBsaWNpdCcsXG4gICAgJ2luJyxcbiAgICAnaW50ZXJmYWNlJyxcbiAgICAnaW50ZXJuYWwnLFxuICAgICdpcycsXG4gICAgJ2xvY2snLFxuICAgICduYW1lc3BhY2UnLFxuICAgICduZXcnLFxuICAgICdvcGVyYXRvcicsXG4gICAgJ291dCcsXG4gICAgJ292ZXJyaWRlJyxcbiAgICAncGFyYW1zJyxcbiAgICAncHJpdmF0ZScsXG4gICAgJ3Byb3RlY3RlZCcsXG4gICAgJ3B1YmxpYycsXG4gICAgJ3JlYWRvbmx5JyxcbiAgICAncmVjb3JkJyxcbiAgICAncmVmJyxcbiAgICAncmV0dXJuJyxcbiAgICAnc2NvcGVkJyxcbiAgICAnc2VhbGVkJyxcbiAgICAnc2l6ZW9mJyxcbiAgICAnc3RhY2thbGxvYycsXG4gICAgJ3N0YXRpYycsXG4gICAgJ3N0cnVjdCcsXG4gICAgJ3N3aXRjaCcsXG4gICAgJ3RoaXMnLFxuICAgICd0aHJvdycsXG4gICAgJ3RyeScsXG4gICAgJ3R5cGVvZicsXG4gICAgJ3VuY2hlY2tlZCcsXG4gICAgJ3Vuc2FmZScsXG4gICAgJ3VzaW5nJyxcbiAgICAndmlydHVhbCcsXG4gICAgJ3ZvaWQnLFxuICAgICd2b2xhdGlsZScsXG4gICAgJ3doaWxlJ1xuICBdO1xuICBjb25zdCBDT05URVhUVUFMX0tFWVdPUkRTID0gW1xuICAgICdhZGQnLFxuICAgICdhbGlhcycsXG4gICAgJ2FuZCcsXG4gICAgJ2FzY2VuZGluZycsXG4gICAgJ2FzeW5jJyxcbiAgICAnYXdhaXQnLFxuICAgICdieScsXG4gICAgJ2Rlc2NlbmRpbmcnLFxuICAgICdlcXVhbHMnLFxuICAgICdmcm9tJyxcbiAgICAnZ2V0JyxcbiAgICAnZ2xvYmFsJyxcbiAgICAnZ3JvdXAnLFxuICAgICdpbml0JyxcbiAgICAnaW50bycsXG4gICAgJ2pvaW4nLFxuICAgICdsZXQnLFxuICAgICduYW1lb2YnLFxuICAgICdub3QnLFxuICAgICdub3RudWxsJyxcbiAgICAnb24nLFxuICAgICdvcicsXG4gICAgJ29yZGVyYnknLFxuICAgICdwYXJ0aWFsJyxcbiAgICAncmVtb3ZlJyxcbiAgICAnc2VsZWN0JyxcbiAgICAnc2V0JyxcbiAgICAndW5tYW5hZ2VkJyxcbiAgICAndmFsdWV8MCcsXG4gICAgJ3ZhcicsXG4gICAgJ3doZW4nLFxuICAgICd3aGVyZScsXG4gICAgJ3dpdGgnLFxuICAgICd5aWVsZCdcbiAgXTtcblxuICBjb25zdCBLRVlXT1JEUyA9IHtcbiAgICBrZXl3b3JkOiBOT1JNQUxfS0VZV09SRFMuY29uY2F0KENPTlRFWFRVQUxfS0VZV09SRFMpLFxuICAgIGJ1aWx0X2luOiBCVUlMVF9JTl9LRVlXT1JEUyxcbiAgICBsaXRlcmFsOiBMSVRFUkFMX0tFWVdPUkRTXG4gIH07XG4gIGNvbnN0IFRJVExFX01PREUgPSBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7IGJlZ2luOiAnW2EtekEtWl0oXFxcXC4/XFxcXHcpKicgfSk7XG4gIGNvbnN0IE5VTUJFUlMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogJ1xcXFxiKDBiWzAxXFwnXSspJyB9LFxuICAgICAgeyBiZWdpbjogJygtPylcXFxcYihbXFxcXGRcXCddKyhcXFxcLltcXFxcZFxcJ10qKT98XFxcXC5bXFxcXGRcXCddKykodXxVfGx8THx1bHxVTHxmfEZ8YnxCKScgfSxcbiAgICAgIHsgYmVnaW46ICcoLT8pKFxcXFxiMFt4WF1bYS1mQS1GMC05XFwnXSt8KFxcXFxiW1xcXFxkXFwnXSsoXFxcXC5bXFxcXGRcXCddKik/fFxcXFwuW1xcXFxkXFwnXSspKFtlRV1bLStdP1tcXFxcZFxcJ10rKT8pJyB9XG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcbiAgY29uc3QgVkVSQkFUSU1fU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdAXCInLFxuICAgIGVuZDogJ1wiJyxcbiAgICBjb250YWluczogWyB7IGJlZ2luOiAnXCJcIicgfSBdXG4gIH07XG4gIGNvbnN0IFZFUkJBVElNX1NUUklOR19OT19MRiA9IGhsanMuaW5oZXJpdChWRVJCQVRJTV9TVFJJTkcsIHsgaWxsZWdhbDogL1xcbi8gfSk7XG4gIGNvbnN0IFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogL1xcey8sXG4gICAgZW5kOiAvXFx9LyxcbiAgICBrZXl3b3JkczogS0VZV09SRFNcbiAgfTtcbiAgY29uc3QgU1VCU1RfTk9fTEYgPSBobGpzLmluaGVyaXQoU1VCU1QsIHsgaWxsZWdhbDogL1xcbi8gfSk7XG4gIGNvbnN0IElOVEVSUE9MQVRFRF9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1xcJFwiLyxcbiAgICBlbmQ6ICdcIicsXG4gICAgaWxsZWdhbDogL1xcbi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgYmVnaW46IC9cXHtcXHsvIH0sXG4gICAgICB7IGJlZ2luOiAvXFx9XFx9LyB9LFxuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgU1VCU1RfTk9fTEZcbiAgICBdXG4gIH07XG4gIGNvbnN0IElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1xcJEBcIi8sXG4gICAgZW5kOiAnXCInLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IGJlZ2luOiAvXFx7XFx7LyB9LFxuICAgICAgeyBiZWdpbjogL1xcfVxcfS8gfSxcbiAgICAgIHsgYmVnaW46ICdcIlwiJyB9LFxuICAgICAgU1VCU1RcbiAgICBdXG4gIH07XG4gIGNvbnN0IElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkdfTk9fTEYgPSBobGpzLmluaGVyaXQoSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklORywge1xuICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IGJlZ2luOiAvXFx7XFx7LyB9LFxuICAgICAgeyBiZWdpbjogL1xcfVxcfS8gfSxcbiAgICAgIHsgYmVnaW46ICdcIlwiJyB9LFxuICAgICAgU1VCU1RfTk9fTEZcbiAgICBdXG4gIH0pO1xuICBTVUJTVC5jb250YWlucyA9IFtcbiAgICBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HLFxuICAgIElOVEVSUE9MQVRFRF9TVFJJTkcsXG4gICAgVkVSQkFUSU1fU1RSSU5HLFxuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIE5VTUJFUlMsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICBdO1xuICBTVUJTVF9OT19MRi5jb250YWlucyA9IFtcbiAgICBJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HX05PX0xGLFxuICAgIElOVEVSUE9MQVRFRF9TVFJJTkcsXG4gICAgVkVSQkFUSU1fU1RSSU5HX05PX0xGLFxuICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgIE5VTUJFUlMsXG4gICAgaGxqcy5pbmhlcml0KGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsIHsgaWxsZWdhbDogL1xcbi8gfSlcbiAgXTtcbiAgY29uc3QgU1RSSU5HID0geyB2YXJpYW50czogW1xuICAgIElOVEVSUE9MQVRFRF9WRVJCQVRJTV9TVFJJTkcsXG4gICAgSU5URVJQT0xBVEVEX1NUUklORyxcbiAgICBWRVJCQVRJTV9TVFJJTkcsXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgXSB9O1xuXG4gIGNvbnN0IEdFTkVSSUNfTU9ESUZJRVIgPSB7XG4gICAgYmVnaW46IFwiPFwiLFxuICAgIGVuZDogXCI+XCIsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgYmVnaW5LZXl3b3JkczogXCJpbiBvdXRcIiB9LFxuICAgICAgVElUTEVfTU9ERVxuICAgIF1cbiAgfTtcbiAgY29uc3QgVFlQRV9JREVOVF9SRSA9IGhsanMuSURFTlRfUkUgKyAnKDwnICsgaGxqcy5JREVOVF9SRSArICcoXFxcXHMqLFxcXFxzKicgKyBobGpzLklERU5UX1JFICsgJykqPik/KFxcXFxbXFxcXF0pPyc7XG4gIGNvbnN0IEFUX0lERU5USUZJRVIgPSB7XG4gICAgLy8gcHJldmVudHMgZXhwcmVzc2lvbnMgbGlrZSBgQGNsYXNzYCBmcm9tIGluY29ycmVjdCBmbGFnZ2luZ1xuICAgIC8vIGBjbGFzc2AgYXMgYSBrZXl3b3JkXG4gICAgYmVnaW46IFwiQFwiICsgaGxqcy5JREVOVF9SRSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdDIycsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ2NzJyxcbiAgICAgICdjIydcbiAgICBdLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICBpbGxlZ2FsOiAvOjovLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvLy8nLFxuICAgICAgICAnJCcsXG4gICAgICAgIHtcbiAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAnLy8vJyxcbiAgICAgICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgeyBiZWdpbjogJzwhLS18LS0+JyB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGJlZ2luOiAnPC8/JyxcbiAgICAgICAgICAgICAgICAgIGVuZDogJz4nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIycsXG4gICAgICAgIGVuZDogJyQnLFxuICAgICAgICBrZXl3b3JkczogeyBrZXl3b3JkOiAnaWYgZWxzZSBlbGlmIGVuZGlmIGRlZmluZSB1bmRlZiB3YXJuaW5nIGVycm9yIGxpbmUgcmVnaW9uIGVuZHJlZ2lvbiBwcmFnbWEgY2hlY2tzdW0nIH1cbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBOVU1CRVJTLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnY2xhc3MgaW50ZXJmYWNlJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcczosXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyBiZWdpbktleXdvcmRzOiBcIndoZXJlIGNsYXNzXCIgfSxcbiAgICAgICAgICBUSVRMRV9NT0RFLFxuICAgICAgICAgIEdFTkVSSUNfTU9ESUZJRVIsXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ25hbWVzcGFjZScsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgZW5kOiAvW3s7PV0vLFxuICAgICAgICBpbGxlZ2FsOiAvW15cXHM6XS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgVElUTEVfTU9ERSxcbiAgICAgICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAncmVjb3JkJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBlbmQ6IC9bezs9XS8sXG4gICAgICAgIGlsbGVnYWw6IC9bXlxcczpdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBUSVRMRV9NT0RFLFxuICAgICAgICAgIEdFTkVSSUNfTU9ESUZJRVIsXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gW0F0dHJpYnV0ZXMoXCJcIildXG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogJ15cXFxccypcXFxcWyg/PVtcXFxcd10pJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICAgICAgZW5kOiAvXCIvXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBFeHByZXNzaW9uIGtleXdvcmRzIHByZXZlbnQgJ2tleXdvcmQgTmFtZSguLi4pJyBmcm9tIGJlaW5nXG4gICAgICAgIC8vIHJlY29nbml6ZWQgYXMgYSBmdW5jdGlvbiBkZWZpbml0aW9uXG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduZXcgcmV0dXJuIHRocm93IGF3YWl0IGVsc2UnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW46ICcoJyArIFRZUEVfSURFTlRfUkUgKyAnXFxcXHMrKSsnICsgaGxqcy5JREVOVF9SRSArICdcXFxccyooPFtePV0rPlxcXFxzKik/XFxcXCgnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZW5kOiAvXFxzKlt7Oz1dLyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIHByZXZlbnRzIHRoZXNlIGZyb20gYmVpbmcgaGlnaGxpZ2h0ZWQgYHRpdGxlYFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luS2V5d29yZHM6IEZVTkNUSU9OX01PRElGSUVSUy5qb2luKFwiIFwiKSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuSURFTlRfUkUgKyAnXFxcXHMqKDxbXj1dKz5cXFxccyopP1xcXFwoJyxcbiAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgICAgICBHRU5FUklDX01PRElGSUVSXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IG1hdGNoOiAvXFwoXFwpLyB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgTlVNQkVSUyxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIEFUX0lERU5USUZJRVJcbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IGNzaGFycCBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsiY3NoYXJwIiwiaGxqcyIsIkJVSUxUX0lOX0tFWVdPUkRTIiwiRlVOQ1RJT05fTU9ESUZJRVJTIiwiTElURVJBTF9LRVlXT1JEUyIsIk5PUk1BTF9LRVlXT1JEUyIsIkNPTlRFWFRVQUxfS0VZV09SRFMiLCJLRVlXT1JEUyIsImtleXdvcmQiLCJjb25jYXQiLCJidWlsdF9pbiIsImxpdGVyYWwiLCJUSVRMRV9NT0RFIiwiaW5oZXJpdCIsImJlZ2luIiwiTlVNQkVSUyIsImNsYXNzTmFtZSIsInZhcmlhbnRzIiwicmVsZXZhbmNlIiwiVkVSQkFUSU1fU1RSSU5HIiwiZW5kIiwiY29udGFpbnMiLCJWRVJCQVRJTV9TVFJJTkdfTk9fTEYiLCJpbGxlZ2FsIiwiU1VCU1QiLCJrZXl3b3JkcyIsIlNVQlNUX05PX0xGIiwiSU5URVJQT0xBVEVEX1NUUklORyIsIkJBQ0tTTEFTSF9FU0NBUEUiLCJJTlRFUlBPTEFURURfVkVSQkFUSU1fU1RSSU5HIiwiSU5URVJQT0xBVEVEX1ZFUkJBVElNX1NUUklOR19OT19MRiIsIkFQT1NfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIkNfQkxPQ0tfQ09NTUVOVF9NT0RFIiwiU1RSSU5HIiwiR0VORVJJQ19NT0RJRklFUiIsImJlZ2luS2V5d29yZHMiLCJUWVBFX0lERU5UX1JFIiwiSURFTlRfUkUiLCJBVF9JREVOVElGSUVSIiwibmFtZSIsImFsaWFzZXMiLCJDT01NRU5UIiwicmV0dXJuQmVnaW4iLCJDX0xJTkVfQ09NTUVOVF9NT0RFIiwiZXhjbHVkZUJlZ2luIiwiZXhjbHVkZUVuZCIsImpvaW4iLCJtYXRjaCIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/csharp.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/css.js":
/*!*******************************************************!*\
!*** ./node_modules/highlight.js/es/languages/css.js ***!
\*******************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ css)\n/* harmony export */ });\nconst MODES = (hljs)=>{\n return {\n IMPORTANT: {\n scope: \"meta\",\n begin: \"!important\"\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: \"number\",\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: \"selector-attr\",\n begin: /\\[/,\n end: /\\]/,\n illegal: \"$\",\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: \"number\",\n begin: hljs.NUMBER_RE + \"(\" + \"%|em|ex|ch|rem\" + \"|vw|vh|vmin|vmax\" + \"|cm|mm|in|pt|pc|px\" + \"|deg|grad|rad|turn\" + \"|s|ms\" + \"|Hz|kHz\" + \"|dpi|dpcm|dppx\" + \")?\",\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z][A-Za-z0-9_-]*/\n }\n };\n};\nconst TAGS = [\n \"a\",\n \"abbr\",\n \"address\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"blockquote\",\n \"body\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"html\",\n \"i\",\n \"iframe\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"label\",\n \"legend\",\n \"li\",\n \"main\",\n \"mark\",\n \"menu\",\n \"nav\",\n \"object\",\n \"ol\",\n \"p\",\n \"q\",\n \"quote\",\n \"samp\",\n \"section\",\n \"span\",\n \"strong\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"tr\",\n \"ul\",\n \"var\",\n \"video\"\n];\nconst MEDIA_FEATURES = [\n \"any-hover\",\n \"any-pointer\",\n \"aspect-ratio\",\n \"color\",\n \"color-gamut\",\n \"color-index\",\n \"device-aspect-ratio\",\n \"device-height\",\n \"device-width\",\n \"display-mode\",\n \"forced-colors\",\n \"grid\",\n \"height\",\n \"hover\",\n \"inverted-colors\",\n \"monochrome\",\n \"orientation\",\n \"overflow-block\",\n \"overflow-inline\",\n \"pointer\",\n \"prefers-color-scheme\",\n \"prefers-contrast\",\n \"prefers-reduced-motion\",\n \"prefers-reduced-transparency\",\n \"resolution\",\n \"scan\",\n \"scripting\",\n \"update\",\n \"width\",\n // TODO: find a better solution?\n \"min-width\",\n \"max-width\",\n \"min-height\",\n \"max-height\"\n];\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n \"active\",\n \"any-link\",\n \"blank\",\n \"checked\",\n \"current\",\n \"default\",\n \"defined\",\n \"dir\",\n \"disabled\",\n \"drop\",\n \"empty\",\n \"enabled\",\n \"first\",\n \"first-child\",\n \"first-of-type\",\n \"fullscreen\",\n \"future\",\n \"focus\",\n \"focus-visible\",\n \"focus-within\",\n \"has\",\n \"host\",\n \"host-context\",\n \"hover\",\n \"indeterminate\",\n \"in-range\",\n \"invalid\",\n \"is\",\n \"lang\",\n \"last-child\",\n \"last-of-type\",\n \"left\",\n \"link\",\n \"local-link\",\n \"not\",\n \"nth-child\",\n \"nth-col\",\n \"nth-last-child\",\n \"nth-last-col\",\n \"nth-last-of-type\",\n \"nth-of-type\",\n \"only-child\",\n \"only-of-type\",\n \"optional\",\n \"out-of-range\",\n \"past\",\n \"placeholder-shown\",\n \"read-only\",\n \"read-write\",\n \"required\",\n \"right\",\n \"root\",\n \"scope\",\n \"target\",\n \"target-within\",\n \"user-invalid\",\n \"valid\",\n \"visited\",\n \"where\" // where()\n];\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n \"after\",\n \"backdrop\",\n \"before\",\n \"cue\",\n \"cue-region\",\n \"first-letter\",\n \"first-line\",\n \"grammar-error\",\n \"marker\",\n \"part\",\n \"placeholder\",\n \"selection\",\n \"slotted\",\n \"spelling-error\"\n];\nconst ATTRIBUTES = [\n \"align-content\",\n \"align-items\",\n \"align-self\",\n \"all\",\n \"animation\",\n \"animation-delay\",\n \"animation-direction\",\n \"animation-duration\",\n \"animation-fill-mode\",\n \"animation-iteration-count\",\n \"animation-name\",\n \"animation-play-state\",\n \"animation-timing-function\",\n \"backface-visibility\",\n \"background\",\n \"background-attachment\",\n \"background-blend-mode\",\n \"background-clip\",\n \"background-color\",\n \"background-image\",\n \"background-origin\",\n \"background-position\",\n \"background-repeat\",\n \"background-size\",\n \"block-size\",\n \"border\",\n \"border-block\",\n \"border-block-color\",\n \"border-block-end\",\n \"border-block-end-color\",\n \"border-block-end-style\",\n \"border-block-end-width\",\n \"border-block-start\",\n \"border-block-start-color\",\n \"border-block-start-style\",\n \"border-block-start-width\",\n \"border-block-style\",\n \"border-block-width\",\n \"border-bottom\",\n \"border-bottom-color\",\n \"border-bottom-left-radius\",\n \"border-bottom-right-radius\",\n \"border-bottom-style\",\n \"border-bottom-width\",\n \"border-collapse\",\n \"border-color\",\n \"border-image\",\n \"border-image-outset\",\n \"border-image-repeat\",\n \"border-image-slice\",\n \"border-image-source\",\n \"border-image-width\",\n \"border-inline\",\n \"border-inline-color\",\n \"border-inline-end\",\n \"border-inline-end-color\",\n \"border-inline-end-style\",\n \"border-inline-end-width\",\n \"border-inline-start\",\n \"border-inline-start-color\",\n \"border-inline-start-style\",\n \"border-inline-start-width\",\n \"border-inline-style\",\n \"border-inline-width\",\n \"border-left\",\n \"border-left-color\",\n \"border-left-style\",\n \"border-left-width\",\n \"border-radius\",\n \"border-right\",\n \"border-right-color\",\n \"border-right-style\",\n \"border-right-width\",\n \"border-spacing\",\n \"border-style\",\n \"border-top\",\n \"border-top-color\",\n \"border-top-left-radius\",\n \"border-top-right-radius\",\n \"border-top-style\",\n \"border-top-width\",\n \"border-width\",\n \"bottom\",\n \"box-decoration-break\",\n \"box-shadow\",\n \"box-sizing\",\n \"break-after\",\n \"break-before\",\n \"break-inside\",\n \"caption-side\",\n \"caret-color\",\n \"clear\",\n \"clip\",\n \"clip-path\",\n \"clip-rule\",\n \"color\",\n \"column-count\",\n \"column-fill\",\n \"column-gap\",\n \"column-rule\",\n \"column-rule-color\",\n \"column-rule-style\",\n \"column-rule-width\",\n \"column-span\",\n \"column-width\",\n \"columns\",\n \"contain\",\n \"content\",\n \"content-visibility\",\n \"counter-increment\",\n \"counter-reset\",\n \"cue\",\n \"cue-after\",\n \"cue-before\",\n \"cursor\",\n \"direction\",\n \"display\",\n \"empty-cells\",\n \"filter\",\n \"flex\",\n \"flex-basis\",\n \"flex-direction\",\n \"flex-flow\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"float\",\n \"flow\",\n \"font\",\n \"font-display\",\n \"font-family\",\n \"font-feature-settings\",\n \"font-kerning\",\n \"font-language-override\",\n \"font-size\",\n \"font-size-adjust\",\n \"font-smoothing\",\n \"font-stretch\",\n \"font-style\",\n \"font-synthesis\",\n \"font-variant\",\n \"font-variant-caps\",\n \"font-variant-east-asian\",\n \"font-variant-ligatures\",\n \"font-variant-numeric\",\n \"font-variant-position\",\n \"font-variation-settings\",\n \"font-weight\",\n \"gap\",\n \"glyph-orientation-vertical\",\n \"grid\",\n \"grid-area\",\n \"grid-auto-columns\",\n \"grid-auto-flow\",\n \"grid-auto-rows\",\n \"grid-column\",\n \"grid-column-end\",\n \"grid-column-start\",\n \"grid-gap\",\n \"grid-row\",\n \"grid-row-end\",\n \"grid-row-start\",\n \"grid-template\",\n \"grid-template-areas\",\n \"grid-template-columns\",\n \"grid-template-rows\",\n \"hanging-punctuation\",\n \"height\",\n \"hyphens\",\n \"icon\",\n \"image-orientation\",\n \"image-rendering\",\n \"image-resolution\",\n \"ime-mode\",\n \"inline-size\",\n \"isolation\",\n \"justify-content\",\n \"left\",\n \"letter-spacing\",\n \"line-break\",\n \"line-height\",\n \"list-style\",\n \"list-style-image\",\n \"list-style-position\",\n \"list-style-type\",\n \"margin\",\n \"margin-block\",\n \"margin-block-end\",\n \"margin-block-start\",\n \"margin-bottom\",\n \"margin-inline\",\n \"margin-inline-end\",\n \"margin-inline-start\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"marks\",\n \"mask\",\n \"mask-border\",\n \"mask-border-mode\",\n \"mask-border-outset\",\n \"mask-border-repeat\",\n \"mask-border-slice\",\n \"mask-border-source\",\n \"mask-border-width\",\n \"mask-clip\",\n \"mask-composite\",\n \"mask-image\",\n \"mask-mode\",\n \"mask-origin\",\n \"mask-position\",\n \"mask-repeat\",\n \"mask-size\",\n \"mask-type\",\n \"max-block-size\",\n \"max-height\",\n \"max-inline-size\",\n \"max-width\",\n \"min-block-size\",\n \"min-height\",\n \"min-inline-size\",\n \"min-width\",\n \"mix-blend-mode\",\n \"nav-down\",\n \"nav-index\",\n \"nav-left\",\n \"nav-right\",\n \"nav-up\",\n \"none\",\n \"normal\",\n \"object-fit\",\n \"object-position\",\n \"opacity\",\n \"order\",\n \"orphans\",\n \"outline\",\n \"outline-color\",\n \"outline-offset\",\n \"outline-style\",\n \"outline-width\",\n \"overflow\",\n \"overflow-wrap\",\n \"overflow-x\",\n \"overflow-y\",\n \"padding\",\n \"padding-block\",\n \"padding-block-end\",\n \"padding-block-start\",\n \"padding-bottom\",\n \"padding-inline\",\n \"padding-inline-end\",\n \"padding-inline-start\",\n \"padding-left\",\n \"padding-right\",\n \"padding-top\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"pause\",\n \"pause-after\",\n \"pause-before\",\n \"perspective\",\n \"perspective-origin\",\n \"pointer-events\",\n \"position\",\n \"quotes\",\n \"resize\",\n \"rest\",\n \"rest-after\",\n \"rest-before\",\n \"right\",\n \"row-gap\",\n \"scroll-margin\",\n \"scroll-margin-block\",\n \"scroll-margin-block-end\",\n \"scroll-margin-block-start\",\n \"scroll-margin-bottom\",\n \"scroll-margin-inline\",\n \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\",\n \"scroll-margin-left\",\n \"scroll-margin-right\",\n \"scroll-margin-top\",\n \"scroll-padding\",\n \"scroll-padding-block\",\n \"scroll-padding-block-end\",\n \"scroll-padding-block-start\",\n \"scroll-padding-bottom\",\n \"scroll-padding-inline\",\n \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\",\n \"scroll-padding-left\",\n \"scroll-padding-right\",\n \"scroll-padding-top\",\n \"scroll-snap-align\",\n \"scroll-snap-stop\",\n \"scroll-snap-type\",\n \"scrollbar-color\",\n \"scrollbar-gutter\",\n \"scrollbar-width\",\n \"shape-image-threshold\",\n \"shape-margin\",\n \"shape-outside\",\n \"speak\",\n \"speak-as\",\n \"src\",\n \"tab-size\",\n \"table-layout\",\n \"text-align\",\n \"text-align-all\",\n \"text-align-last\",\n \"text-combine-upright\",\n \"text-decoration\",\n \"text-decoration-color\",\n \"text-decoration-line\",\n \"text-decoration-style\",\n \"text-emphasis\",\n \"text-emphasis-color\",\n \"text-emphasis-position\",\n \"text-emphasis-style\",\n \"text-indent\",\n \"text-justify\",\n \"text-orientation\",\n \"text-overflow\",\n \"text-rendering\",\n \"text-shadow\",\n \"text-transform\",\n \"text-underline-position\",\n \"top\",\n \"transform\",\n \"transform-box\",\n \"transform-origin\",\n \"transform-style\",\n \"transition\",\n \"transition-delay\",\n \"transition-duration\",\n \"transition-property\",\n \"transition-timing-function\",\n \"unicode-bidi\",\n \"vertical-align\",\n \"visibility\",\n \"voice-balance\",\n \"voice-duration\",\n \"voice-family\",\n \"voice-pitch\",\n \"voice-range\",\n \"voice-rate\",\n \"voice-stress\",\n \"voice-volume\",\n \"white-space\",\n \"widows\",\n \"width\",\n \"will-change\",\n \"word-break\",\n \"word-spacing\",\n \"word-wrap\",\n \"writing-mode\",\n \"z-index\"\n].reverse();\n/*\nLanguage: CSS\nCategory: common, css, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/CSS\n*/ /** @type LanguageFn */ function css(hljs) {\n const regex = hljs.regex;\n const modes = MODES(hljs);\n const VENDOR_PREFIX = {\n begin: /-(webkit|moz|ms|o)-(?=[a-z])/\n };\n const AT_MODIFIERS = \"and or not only\";\n const AT_PROPERTY_RE = /@-?\\w[\\w]*(-\\w+)*/; // @-webkit-keyframes\n const IDENT_RE = \"[a-zA-Z-][a-zA-Z0-9_-]*\";\n const STRINGS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ];\n return {\n name: \"CSS\",\n case_insensitive: true,\n illegal: /[=|'\\$]/,\n keywords: {\n keyframePosition: \"from to\"\n },\n classNameAliases: {\n // for visual continuity with `tag {}` and because we\n // don't have a great class for this?\n keyframePosition: \"selector-tag\"\n },\n contains: [\n modes.BLOCK_COMMENT,\n VENDOR_PREFIX,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: \"selector-id\",\n begin: /#[A-Za-z0-9_-]+/,\n relevance: 0\n },\n {\n className: \"selector-class\",\n begin: \"\\\\.\" + IDENT_RE,\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: \"selector-pseudo\",\n variants: [\n {\n begin: \":(\" + PSEUDO_CLASSES.join(\"|\") + \")\"\n },\n {\n begin: \":(:)?(\" + PSEUDO_ELEMENTS.join(\"|\") + \")\"\n }\n ]\n },\n // we may actually need this (12/2020)\n // { // pseudo-selector params\n // begin: /\\(/,\n // end: /\\)/,\n // contains: [ hljs.CSS_NUMBER_MODE ]\n // },\n modes.CSS_VARIABLE,\n {\n className: \"attribute\",\n begin: \"\\\\b(\" + ATTRIBUTES.join(\"|\") + \")\\\\b\"\n },\n // attribute values\n {\n begin: /:/,\n end: /[;}{]/,\n contains: [\n modes.BLOCK_COMMENT,\n modes.HEXCOLOR,\n modes.IMPORTANT,\n modes.CSS_NUMBER_MODE,\n ...STRINGS,\n // needed to highlight these as strings and to avoid issues with\n // illegal characters that might be inside urls that would tigger the\n // languages illegal stack\n {\n begin: /(url|data-uri)\\(/,\n end: /\\)/,\n relevance: 0,\n keywords: {\n built_in: \"url data-uri\"\n },\n contains: [\n ...STRINGS,\n {\n className: \"string\",\n // any character other than `)` as in `url()` will be the start\n // of a string, which ends with `)` (from the parent mode)\n begin: /[^)]/,\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n },\n {\n begin: regex.lookahead(/@/),\n end: \"[{;]\",\n relevance: 0,\n illegal: /:/,\n contains: [\n {\n className: \"keyword\",\n begin: AT_PROPERTY_RE\n },\n {\n begin: /\\s/,\n endsWithParent: true,\n excludeEnd: true,\n relevance: 0,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n ...STRINGS,\n modes.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: \"selector-tag\",\n begin: \"\\\\b(\" + TAGS.join(\"|\") + \")\\\\b\"\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9jc3MuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE1BQU1BLFFBQVEsQ0FBQ0M7SUFDYixPQUFPO1FBQ0xDLFdBQVc7WUFDVEMsT0FBTztZQUNQQyxPQUFPO1FBQ1Q7UUFDQUMsZUFBZUosS0FBS0ssb0JBQW9CO1FBQ3hDQyxVQUFVO1lBQ1JKLE9BQU87WUFDUEMsT0FBTztRQUNUO1FBQ0FJLG1CQUFtQjtZQUNqQkMsV0FBVztZQUNYTCxPQUFPO1FBQ1Q7UUFDQU0seUJBQXlCO1lBQ3ZCUCxPQUFPO1lBQ1BDLE9BQU87WUFDUE8sS0FBSztZQUNMQyxTQUFTO1lBQ1RDLFVBQVU7Z0JBQ1JaLEtBQUthLGdCQUFnQjtnQkFDckJiLEtBQUtjLGlCQUFpQjthQUN2QjtRQUNIO1FBQ0FDLGlCQUFpQjtZQUNmYixPQUFPO1lBQ1BDLE9BQU9ILEtBQUtnQixTQUFTLEdBQUcsTUFDdEIsbUJBQ0EscUJBQ0EsdUJBQ0EsdUJBQ0EsVUFDQSxZQUNBLG1CQUNBO1lBQ0ZDLFdBQVc7UUFDYjtRQUNBQyxjQUFjO1lBQ1pWLFdBQVc7WUFDWEwsT0FBTztRQUNUO0lBQ0Y7QUFDRjtBQUVBLE1BQU1nQixPQUFPO0lBQ1g7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFRCxNQUFNQyxpQkFBaUI7SUFDckI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLGdDQUFnQztJQUNoQztJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsa0VBQWtFO0FBQ2xFLE1BQU1DLGlCQUFpQjtJQUNyQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFFBQVEsVUFBVTtDQUNuQjtBQUVELG1FQUFtRTtBQUNuRSxNQUFNQyxrQkFBa0I7SUFDdEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsTUFBTUMsYUFBYTtJQUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFD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QkFDckUsMEJBQTBCO29CQUMxQjt3QkFDRTdCLE9BQU87d0JBQ1BPLEtBQUs7d0JBQ0xPLFdBQVc7d0JBQ1hrQixVQUFVOzRCQUFFSyxVQUFVO3dCQUFlO3dCQUNyQzVCLFVBQVU7K0JBQ0xvQjs0QkFDSDtnQ0FDRXhCLFdBQVc7Z0NBQ1gsK0RBQStEO2dDQUMvRCwwREFBMEQ7Z0NBQzFETCxPQUFPO2dDQUNQc0MsZ0JBQWdCO2dDQUNoQkMsWUFBWTs0QkFDZDt5QkFDRDtvQkFDSDtvQkFDQWYsTUFBTXBCLGlCQUFpQjtpQkFDeEI7WUFDSDtZQUNBO2dCQUNFSixPQUFPdUIsTUFBTWlCLFNBQVMsQ0FBQztnQkFDdkJqQyxLQUFLO2dCQUNMTyxXQUFXO2dCQUNYTixTQUFTO2dCQUNUQyxVQUFVO29CQUNSO3dCQUNFSixXQUFXO3dCQUNYTCxPQUFPMkI7b0JBQ1Q7b0JBQ0E7d0JBQ0UzQixPQUFPO3dCQUNQc0MsZ0JBQWdCO3dCQUNoQkMsWUFBWTt3QkFDWnpCLFdBQVc7d0JBQ1hrQixVQUFVOzRCQUNSUyxVQUFVOzRCQUNWQyxTQUFTaEI7NEJBQ1RpQixXQUFXMUIsZUFBZW1CLElBQUksQ0FBQzt3QkFDakM7d0JBQ0EzQixVQUFVOzRCQUNSO2dDQUNFVCxPQUFPO2dDQUNQSyxXQUFXOzRCQUNiOytCQUNHd0I7NEJBQ0hMLE1BQU1aLGVBQWU7eUJBQ3RCO29CQUNIO2lCQUNEO1lBQ0g7WUFDQTtnQkFDRVAsV0FBVztnQkFDWEwsT0FBTyxTQUFTZ0IsS0FBS29CLElBQUksQ0FBQyxPQUFPO1lBQ25DO1NBQ0Q7SUFDSDtBQUNGO0FBRTBCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9jc3MuanM/MDVlZiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBNT0RFUyA9IChobGpzKSA9PiB7XG4gIHJldHVybiB7XG4gICAgSU1QT1JUQU5UOiB7XG4gICAgICBzY29wZTogJ21ldGEnLFxuICAgICAgYmVnaW46ICchaW1wb3J0YW50J1xuICAgIH0sXG4gICAgQkxPQ0tfQ09NTUVOVDogaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBIRVhDT0xPUjoge1xuICAgICAgc2NvcGU6ICdudW1iZXInLFxuICAgICAgYmVnaW46IC8jKChbMC05YS1mQS1GXXszLDR9KXwoKFswLTlhLWZBLUZdezJ9KXszLDR9KSlcXGIvXG4gICAgfSxcbiAgICBGVU5DVElPTl9ESVNQQVRDSDoge1xuICAgICAgY2xhc3NOYW1lOiBcImJ1aWx0X2luXCIsXG4gICAgICBiZWdpbjogL1tcXHctXSsoPz1cXCgpL1xuICAgIH0sXG4gICAgQVRUUklCVVRFX1NFTEVDVE9SX01PREU6IHtcbiAgICAgIHNjb3BlOiAnc2VsZWN0b3ItYXR0cicsXG4gICAgICBiZWdpbjogL1xcWy8sXG4gICAgICBlbmQ6IC9cXF0vLFxuICAgICAgaWxsZWdhbDogJyQnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICBdXG4gICAgfSxcbiAgICBDU1NfTlVNQkVSX01PREU6IHtcbiAgICAgIHNjb3BlOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSArICcoJyArXG4gICAgICAgICclfGVtfGV4fGNofHJlbScgK1xuICAgICAgICAnfHZ3fHZofHZtaW58dm1heCcgK1xuICAgICAgICAnfGNtfG1tfGlufHB0fHBjfHB4JyArXG4gICAgICAgICd8ZGVnfGdyYWR8cmFkfHR1cm4nICtcbiAgICAgICAgJ3xzfG1zJyArXG4gICAgICAgICd8SHp8a0h6JyArXG4gICAgICAgICd8ZHBpfGRwY218ZHBweCcgK1xuICAgICAgICAnKT8nLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICBDU1NfVkFSSUFCTEU6IHtcbiAgICAgIGNsYXNzTmFtZTogXCJhdHRyXCIsXG4gICAgICBiZWdpbjogLy0tW0EtWmEtel1bQS1aYS16MC05Xy1dKi9cbiAgICB9XG4gIH07XG59O1xuXG5jb25zdCBUQUdTID0gW1xuICAnYScsXG4gICdhYmJyJyxcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdhdWRpbycsXG4gICdiJyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdidXR0b24nLFxuICAnY2FudmFzJyxcbiAgJ2NhcHRpb24nLFxuICAnY2l0ZScsXG4gICdjb2RlJyxcbiAgJ2RkJyxcbiAgJ2RlbCcsXG4gICdkZXRhaWxzJyxcbiAgJ2RmbicsXG4gICdkaXYnLFxuICAnZGwnLFxuICAnZHQnLFxuICAnZW0nLFxuICAnZmllbGRzZXQnLFxuICAnZmlnY2FwdGlvbicsXG4gICdmaWd1cmUnLFxuICAnZm9vdGVyJyxcbiAgJ2Zvcm0nLFxuICAnaDEnLFxuICAnaDInLFxuICAnaDMnLFxuICAnaDQnLFxuICAnaDUnLFxuICAnaDYnLFxuICAnaGVhZGVyJyxcbiAgJ2hncm91cCcsXG4gICdodG1sJyxcbiAgJ2knLFxuICAnaWZyYW1lJyxcbiAgJ2ltZycsXG4gICdpbnB1dCcsXG4gICdpbnMnLFxuICAna2JkJyxcbiAgJ2xhYmVsJyxcbiAgJ2xlZ2VuZCcsXG4gICdsaScsXG4gICdtYWluJyxcbiAgJ21hcmsnLFxuICAnbWVudScsXG4gICduYXYnLFxuICAnb2JqZWN0JyxcbiAgJ29sJyxcbiAgJ3AnLFxuICAncScsXG4gICdxdW90ZScsXG4gICdzYW1wJyxcbiAgJ3NlY3Rpb24nLFxuICAnc3BhbicsXG4gICdzdHJvbmcnLFxuICAnc3VtbWFyeScsXG4gICdzdXAnLFxuICAndGFibGUnLFxuICAndGJvZHknLFxuICAndGQnLFxuICAndGV4dGFyZWEnLFxuICAndGZvb3QnLFxuICAndGgnLFxuICAndGhlYWQnLFxuICAndGltZScsXG4gICd0cicsXG4gICd1bCcsXG4gICd2YXInLFxuICAndmlkZW8nXG5dO1xuXG5jb25zdCBNRURJQV9GRUFUVVJFUyA9IFtcbiAgJ2FueS1ob3ZlcicsXG4gICdhbnktcG9pbnRlcicsXG4gICdhc3BlY3QtcmF0aW8nLFxuICAnY29sb3InLFxuICAnY29sb3ItZ2FtdXQnLFxuICAnY29sb3ItaW5kZXgnLFxuICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICdkZXZpY2UtaGVpZ2h0JyxcbiAgJ2RldmljZS13aWR0aCcsXG4gICdkaXNwbGF5LW1vZGUnLFxuICAnZm9yY2VkLWNvbG9ycycsXG4gICdncmlkJyxcbiAgJ2hlaWdodCcsXG4gICdob3ZlcicsXG4gICdpbnZlcnRlZC1jb2xvcnMnLFxuICAnbW9ub2Nocm9tZScsXG4gICdvcmllbnRhdGlvbicsXG4gICdvdmVyZmxvdy1ibG9jaycsXG4gICdvdmVyZmxvdy1pbmxpbmUnLFxuICAncG9pbnRlcicsXG4gICdwcmVmZXJzLWNvbG9yLXNjaGVtZScsXG4gICdwcmVmZXJzLWNvbnRyYXN0JyxcbiAgJ3ByZWZlcnMtcmVkdWNlZC1tb3Rpb24nLFxuICAncHJlZmVycy1yZWR1Y2VkLXRyYW5zcGFyZW5jeScsXG4gICdyZXNvbHV0aW9uJyxcbiAgJ3NjYW4nLFxuICAnc2NyaXB0aW5nJyxcbiAgJ3VwZGF0ZScsXG4gICd3aWR0aCcsXG4gIC8vIFRPRE86IGZpbmQgYSBiZXR0ZXIgc29sdXRpb24/XG4gICdtaW4td2lkdGgnLFxuICAnbWF4LXdpZHRoJyxcbiAgJ21pbi1oZWlnaHQnLFxuICAnbWF4LWhlaWdodCdcbl07XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Qc2V1ZG8tY2xhc3Nlc1xuY29uc3QgUFNFVURPX0NMQVNTRVMgPSBbXG4gICdhY3RpdmUnLFxuICAnYW55LWxpbmsnLFxuICAnYmxhbmsnLFxuICAnY2hlY2tlZCcsXG4gICdjdXJyZW50JyxcbiAgJ2RlZmF1bHQnLFxuICAnZGVmaW5lZCcsXG4gICdkaXInLCAvLyBkaXIoKVxuICAnZGlzYWJsZWQnLFxuICAnZHJvcCcsXG4gICdlbXB0eScsXG4gICdlbmFibGVkJyxcbiAgJ2ZpcnN0JyxcbiAgJ2ZpcnN0LWNoaWxkJyxcbiAgJ2ZpcnN0LW9mLXR5cGUnLFxuICAnZnVsbHNjcmVlbicsXG4gICdmdXR1cmUnLFxuICAnZm9jdXMnLFxuICAnZm9jdXMtdmlzaWJsZScsXG4gICdmb2N1cy13aXRoaW4nLFxuICAnaGFzJywgLy8gaGFzKClcbiAgJ2hvc3QnLCAvLyBob3N0IG9yIGhvc3QoKVxuICAnaG9zdC1jb250ZXh0JywgLy8gaG9zdC1jb250ZXh0KClcbiAgJ2hvdmVyJyxcbiAgJ2luZGV0ZXJtaW5hdGUnLFxuICAnaW4tcmFuZ2UnLFxuICAnaW52YWxpZCcsXG4gICdpcycsIC8vIGlzKClcbiAgJ2xhbmcnLCAvLyBsYW5nKClcbiAgJ2xhc3QtY2hpbGQnLFxuICAnbGFzdC1vZi10eXBlJyxcbiAgJ2xlZnQnLFxuICAnbGluaycsXG4gICdsb2NhbC1saW5rJyxcbiAgJ25vdCcsIC8vIG5vdCgpXG4gICdudGgtY2hpbGQnLCAvLyBudGgtY2hpbGQoKVxuICAnbnRoLWNvbCcsIC8vIG50aC1jb2woKVxuICAnbnRoLWxhc3QtY2hpbGQnLCAvLyBudGgtbGFzdC1jaGlsZCgpXG4gICdudGgtbGFzdC1jb2wnLCAvLyBudGgtbGFzdC1jb2woKVxuICAnbnRoLWxhc3Qtb2YtdHlwZScsIC8vbnRoLWxhc3Qtb2YtdHlwZSgpXG4gICdudGgtb2YtdHlwZScsIC8vbnRoLW9mLXR5cGUoKVxuICAnb25seS1jaGlsZCcsXG4gICdvbmx5LW9mLXR5cGUnLFxuICAnb3B0aW9uYWwnLFxuICAnb3V0LW9mLXJhbmdlJyxcbiAgJ3Bhc3QnLFxuICAncGxhY2Vob2xkZXItc2hvd24nLFxuICAncmVhZC1vbmx5JyxcbiAgJ3JlYWQtd3JpdGUnLFxuICAncmVxdWlyZWQnLFxuICAncmlnaHQnLFxuICAncm9vdCcsXG4gICdzY29wZScsXG4gICd0YXJnZXQnLFxuICAndGFyZ2V0LXdpdGhpbicsXG4gICd1c2VyLWludmFsaWQnLFxuICAndmFsaWQnLFxuICAndmlzaXRlZCcsXG4gICd3aGVyZScgLy8gd2hlcmUoKVxuXTtcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1BzZXVkby1lbGVtZW50c1xuY29uc3QgUFNFVURPX0VMRU1FTlRTID0gW1xuICAnYWZ0ZXInLFxuICAnYmFja2Ryb3AnLFxuICAnYmVmb3JlJyxcbiAgJ2N1ZScsXG4gICdjdWUtcmVnaW9uJyxcbiAgJ2ZpcnN0LWxldHRlcicsXG4gICdmaXJzdC1saW5lJyxcbiAgJ2dyYW1tYXItZXJyb3InLFxuICAnbWFya2VyJyxcbiAgJ3BhcnQnLFxuICAncGxhY2Vob2xkZXInLFxuICAnc2VsZWN0aW9uJyxcbiAgJ3Nsb3R0ZWQnLFxuICAnc3BlbGxpbmctZXJyb3InXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVTID0gW1xuICAnYWxpZ24tY29udGVudCcsXG4gICdhbGlnbi1pdGVtcycsXG4gICdhbGlnbi1zZWxmJyxcbiAgJ2FsbCcsXG4gICdhbmltYXRpb24nLFxuICAnYW5pbWF0aW9uLWRlbGF5JyxcbiAgJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLFxuICAnYW5pbWF0aW9uLWR1cmF0aW9uJyxcbiAgJ2FuaW1hdGlvbi1maWxsLW1vZGUnLFxuICAnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsXG4gICdhbmltYXRpb24tbmFtZScsXG4gICdhbmltYXRpb24tcGxheS1zdGF0ZScsXG4gICdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgJ2JhY2tmYWNlLXZpc2liaWxpdHknLFxuICAnYmFja2dyb3VuZCcsXG4gICdiYWNrZ3JvdW5kLWF0dGFjaG1lbnQnLFxuICAnYmFja2dyb3VuZC1ibGVuZC1tb2RlJyxcbiAgJ2JhY2tncm91bmQtY2xpcCcsXG4gICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgJ2JhY2tncm91bmQtaW1hZ2UnLFxuICAnYmFja2dyb3VuZC1vcmlnaW4nLFxuICAnYmFja2dyb3VuZC1wb3NpdGlvbicsXG4gICdiYWNrZ3JvdW5kLXJlcGVhdCcsXG4gICdiYWNrZ3JvdW5kLXNpemUnLFxuICAnYmxvY2stc2l6ZScsXG4gICdib3JkZXInLFxuICAnYm9yZGVyLWJsb2NrJyxcbiAgJ2JvcmRlci1ibG9jay1jb2xvcicsXG4gICdib3JkZXItYmxvY2stZW5kJyxcbiAgJ2JvcmRlci1ibG9jay1lbmQtY29sb3InLFxuICAnYm9yZGVyLWJsb2NrLWVuZC1zdHlsZScsXG4gICdib3JkZXItYmxvY2stZW5kLXdpZHRoJyxcbiAgJ2JvcmRlci1ibG9jay1zdGFydCcsXG4gICdib3JkZXItYmxvY2stc3RhcnQtY29sb3InLFxuICAnYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxlJyxcbiAgJ2JvcmRlci1ibG9jay1zdGFydC13aWR0aCcsXG4gICdib3JkZXItYmxvY2stc3R5bGUnLFxuICAnYm9yZGVyLWJsb2NrLXdpZHRoJyxcbiAgJ2JvcmRlci1ib3R0b20nLFxuICAnYm9yZGVyLWJvdHRvbS1jb2xvcicsXG4gICdib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzJyxcbiAgJ2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzJyxcbiAgJ2JvcmRlci1ib3R0b20tc3R5bGUnLFxuICAnYm9yZGVyLWJvdHRvbS13aWR0aCcsXG4gICdib3JkZXItY29sbGFwc2UnLFxuICAnYm9yZGVyLWNvbG9yJyxcbiAgJ2JvcmRlci1pbWFnZScsXG4gICdib3JkZXItaW1hZ2Utb3V0c2V0JyxcbiAgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLFxuICAnYm9yZGVyLWltYWdlLXNsaWNlJyxcbiAgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLFxuICAnYm9yZGVyLWltYWdlLXdpZHRoJyxcbiAgJ2JvcmRlci1pbmxpbmUnLFxuICAnYm9yZGVyLWlubGluZS1jb2xvcicsXG4gICdib3JkZXItaW5saW5lLWVuZCcsXG4gICdib3JkZXItaW5saW5lLWVuZC1jb2xvcicsXG4gICdib3JkZXItaW5saW5lLWVuZC1zdHlsZScsXG4gICdib3JkZXItaW5saW5lLWVuZC13aWR0aCcsXG4gICdib3JkZXItaW5saW5lLXN0YXJ0JyxcbiAgJ2JvcmRlci1pbmxpbmUtc3RhcnQtY29sb3InLFxuICAnYm9yZGVyLWlubGluZS1zdGFydC1zdHlsZScsXG4gICdib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoJyxcbiAgJ2JvcmRlci1pbmxpbmUtc3R5bGUnLFxuICAnYm9yZGVyLWlubGluZS13aWR0aCcsXG4gICdib3JkZXItbGVmdCcsXG4gICdib3JkZXItbGVmdC1jb2xvcicsXG4gICdib3JkZXItbGVmdC1zdHlsZScsXG4gICdib3JkZXItbGVmdC13aWR0aCcsXG4gICdib3JkZXItcmFkaXVzJyxcbiAgJ2JvcmRlci1yaWdodCcsXG4gICdib3JkZXItcmlnaHQtY29sb3InLFxuICAnYm9yZGVyLXJpZ2h0LXN0eWxlJyxcbiAgJ2JvcmRlci1yaWdodC13aWR0aCcsXG4gICdib3JkZXItc3BhY2luZycsXG4gICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLXRvcCcsXG4gICdib3JkZXItdG9wLWNvbG9yJyxcbiAgJ2JvcmRlci10b3AtbGVmdC1yYWRpdXMnLFxuICAnYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMnLFxuICAnYm9yZGVyLXRvcC1zdHlsZScsXG4gICdib3JkZXItdG9wLXdpZHRoJyxcbiAgJ2JvcmRlci13aWR0aCcsXG4gICdib3R0b20nLFxuICAnYm94LWRlY29yYXRpb24tYnJlYWsnLFxuICAnYm94LXNoYWRvdycsXG4gICdib3gtc2l6aW5nJyxcbiAgJ2JyZWFrLWFmdGVyJyxcbiAgJ2JyZWFrLWJlZm9yZScsXG4gICdicmVhay1pbnNpZGUnLFxuICAnY2FwdGlvbi1zaWRlJyxcbiAgJ2NhcmV0LWNvbG9yJyxcbiAgJ2NsZWFyJyxcbiAgJ2NsaXAnLFxuICAnY2xpcC1wYXRoJyxcbiAgJ2NsaXAtcnVsZScsXG4gICdjb2xvcicsXG4gICdjb2x1bW4tY291bnQnLFxuICAnY29sdW1uLWZpbGwnLFxuICAnY29sdW1uLWdhcCcsXG4gICdjb2x1bW4tcnVsZScsXG4gICdjb2x1bW4tcnVsZS1jb2xvcicsXG4gICdjb2x1bW4tcnVsZS1zdHlsZScsXG4gICdjb2x1bW4tcnVsZS13aWR0aCcsXG4gICdjb2x1bW4tc3BhbicsXG4gICdjb2x1bW4td2lkdGgnLFxuICAnY29sdW1ucycsXG4gICdjb250YWluJyxcbiAgJ2NvbnRlbnQnLFxuICAnY29udGVudC12aXNpYmlsaXR5JyxcbiAgJ2NvdW50ZXItaW5jcmVtZW50JyxcbiAgJ2NvdW50ZXItcmVzZXQnLFxuICAnY3VlJyxcbiAgJ2N1ZS1hZnRlcicsXG4gICdjdWUtYmVmb3JlJyxcbiAgJ2N1cnNvcicsXG4gICdkaXJlY3Rpb24nLFxuICAnZGlzcGxheScsXG4gICdlbXB0eS1jZWxscycsXG4gICdmaWx0ZXInLFxuICAnZmxleCcsXG4gICdmbGV4LWJhc2lzJyxcbiAgJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtZmxvdycsXG4gICdmbGV4LWdyb3cnLFxuICAnZmxleC1zaHJpbmsnLFxuICAnZmxleC13cmFwJyxcbiAgJ2Zsb2F0JyxcbiAgJ2Zsb3cnLFxuICAnZm9udCcsXG4gICdmb250LWRpc3BsYXknLFxuICAnZm9udC1mYW1pbHknLFxuICAnZm9udC1mZWF0dXJlLXNldHRpbmdzJyxcbiAgJ2ZvbnQta2VybmluZycsXG4gICdmb250LWxhbmd1YWdlLW92ZXJyaWRlJyxcbiAgJ2ZvbnQtc2l6ZScsXG4gICdmb250LXNpemUtYWRqdXN0JyxcbiAgJ2ZvbnQtc21vb3RoaW5nJyxcbiAgJ2ZvbnQtc3RyZXRjaCcsXG4gICdmb250LXN0eWxlJyxcbiAgJ2ZvbnQtc3ludGhlc2lzJyxcbiAgJ2ZvbnQtdmFyaWFudCcsXG4gICdmb250LXZhcmlhbnQtY2FwcycsXG4gICdmb250LXZhcmlhbnQtZWFzdC1hc2lhbicsXG4gICdmb250LXZhcmlhbnQtbGlnYXR1cmVzJyxcbiAgJ2ZvbnQtdmFyaWFudC1udW1lcmljJyxcbiAgJ2ZvbnQtdmFyaWFudC1wb3NpdGlvbicsXG4gICdmb250LXZhcmlhdGlvbi1zZXR0aW5ncycsXG4gICdmb250LXdlaWdodCcsXG4gICdnYXAnLFxuICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnLFxuICAnZ3JpZCcsXG4gICdncmlkLWFyZWEnLFxuICAnZ3JpZC1hdXRvLWNvbHVtbnMnLFxuICAnZ3JpZC1hdXRvLWZsb3cnLFxuICAnZ3JpZC1hdXRvLXJvd3MnLFxuICAnZ3JpZC1jb2x1bW4nLFxuICAnZ3JpZC1jb2x1bW4tZW5kJyxcbiAgJ2dyaWQtY29sdW1uLXN0YXJ0JyxcbiAgJ2dyaWQtZ2FwJyxcbiAgJ2dyaWQtcm93JyxcbiAgJ2dyaWQtcm93LWVuZCcsXG4gICdncmlkLXJvdy1zdGFydCcsXG4gICdncmlkLXRlbXBsYXRlJyxcbiAgJ2dyaWQtdGVtcGxhdGUtYXJlYXMnLFxuICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJyxcbiAgJ2dyaWQtdGVtcGxhdGUtcm93cycsXG4gICdoYW5naW5nLXB1bmN0dWF0aW9uJyxcbiAgJ2hlaWdodCcsXG4gICdoeXBoZW5zJyxcbiAgJ2ljb24nLFxuICAnaW1hZ2Utb3JpZW50YXRpb24nLFxuICAnaW1hZ2UtcmVuZGVyaW5nJyxcbiAgJ2ltYWdlLXJlc29sdXRpb24nLFxuICAnaW1lLW1vZGUnLFxuICAnaW5saW5lLXNpemUnLFxuICAnaXNvbGF0aW9uJyxcbiAgJ2p1c3RpZnktY29udGVudCcsXG4gICdsZWZ0JyxcbiAgJ2xldHRlci1zcGFjaW5nJyxcbiAgJ2xpbmUtYnJlYWsnLFxuICAnbGluZS1oZWlnaHQnLFxuICAnbGlzdC1zdHlsZScsXG4gICdsaXN0LXN0eWxlLWltYWdlJyxcbiAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nLFxuICAnbGlzdC1zdHlsZS10eXBlJyxcbiAgJ21hcmdpbicsXG4gICdtYXJnaW4tYmxvY2snLFxuICAnbWFyZ2luLWJsb2NrLWVuZCcsXG4gICdtYXJnaW4tYmxvY2stc3RhcnQnLFxuICAnbWFyZ2luLWJvdHRvbScsXG4gICdtYXJnaW4taW5saW5lJyxcbiAgJ21hcmdpbi1pbmxpbmUtZW5kJyxcbiAgJ21hcmdpbi1pbmxpbmUtc3RhcnQnLFxuICAnbWFyZ2luLWxlZnQnLFxuICAnbWFyZ2luLXJpZ2h0JyxcbiAgJ21hcmdpbi10b3AnLFxuICAnbWFya3MnLFxuICAnbWFzaycsXG4gICdtYXNrLWJvcmRlcicsXG4gICdtYXNrLWJvcmRlci1tb2RlJyxcbiAgJ21hc2stYm9yZGVyLW91dHNldCcsXG4gICdtYXNrLWJvcmRlci1yZXBlYXQnLFxuICAnbWFzay1ib3JkZXItc2xpY2UnLFxuICAnbWFzay1ib3JkZXItc291cmNlJyxcbiAgJ21hc2stYm9yZGVyLXdpZHRoJyxcbiAgJ21hc2stY2xpcCcsXG4gICdtYXNrLWNvbXBvc2l0ZScsXG4gICdtYXNrLWltYWdlJyxcbiAgJ21hc2stbW9kZScsXG4gICdtYXNrLW9yaWdpbicsXG4gICdtYXNrLXBvc2l0aW9uJyxcbiAgJ21hc2stcmVwZWF0JyxcbiAgJ21hc2stc2l6ZScsXG4gICdtYXNrLXR5cGUnLFxuICAnbWF4LWJsb2NrLXNpemUnLFxuICAnbWF4LWhlaWdodCcsXG4gICdtYXgtaW5saW5lLXNpemUnLFxuICAnbWF4LXdpZHRoJyxcbiAgJ21pbi1ibG9jay1zaXplJyxcbiAgJ21pbi1oZWlnaHQnLFxuICAnbWluLWlubGluZS1zaXplJyxcbiAgJ21pbi13aWR0aCcsXG4gICdtaXgtYmxlbmQtbW9kZScsXG4gICduYXYtZG93bicsXG4gICduYXYtaW5kZXgnLFxuICAnbmF2LWxlZnQnLFxuICAnbmF2LXJpZ2h0JyxcbiAgJ25hdi11cCcsXG4gICdub25lJyxcbiAgJ25vcm1hbCcsXG4gICdvYmplY3QtZml0JyxcbiAgJ29iamVjdC1wb3NpdGlvbicsXG4gICdvcGFjaXR5JyxcbiAgJ29yZGVyJyxcbiAgJ29ycGhhbnMnLFxuICAnb3V0bGluZScsXG4gICdvdXRsaW5lLWNvbG9yJyxcbiAgJ291dGxpbmUtb2Zmc2V0JyxcbiAgJ291dGxpbmUtc3R5bGUnLFxuICAnb3V0bGluZS13aWR0aCcsXG4gICdvdmVyZmxvdycsXG4gICdvdmVyZmxvdy13cmFwJyxcbiAgJ292ZXJmbG93LXgnLFxuICAnb3ZlcmZsb3cteScsXG4gICdwYWRkaW5nJyxcbiAgJ3BhZGRpbmctYmxvY2snLFxuICAncGFkZGluZy1ibG9jay1lbmQnLFxuICAncGFkZGluZy1ibG9jay1zdGFydCcsXG4gICdwYWRkaW5nLWJvdHRvbScsXG4gICdwYWRkaW5nLWlubGluZScsXG4gICdwYWRkaW5nLWlubGluZS1lbmQnLFxuICAncGFkZGluZy1pbmxpbmUtc3RhcnQnLFxuICAncGFkZGluZy1sZWZ0JyxcbiAgJ3BhZGRpbmctcmlnaHQnLFxuICAncGFkZGluZy10b3AnLFxuICAncGFnZS1icmVhay1hZnRlcicsXG4gICdwYWdlLWJyZWFrLWJlZm9yZScsXG4gICdwYWdlLWJyZWFrLWluc2lkZScsXG4gICdwYXVzZScsXG4gICdwYXVzZS1hZnRlcicsXG4gICdwYXVzZS1iZWZvcmUnLFxuICAncGVyc3BlY3RpdmUnLFxuICAncGVyc3BlY3RpdmUtb3JpZ2luJyxcbiAgJ3BvaW50ZXItZXZlbnRzJyxcbiAgJ3Bvc2l0aW9uJyxcbiAgJ3F1b3RlcycsXG4gICdyZXNpemUnLFxuICAncmVzdCcsXG4gICdyZXN0LWFmdGVyJyxcbiAgJ3Jlc3QtYmVmb3JlJyxcbiAgJ3JpZ2h0JyxcbiAgJ3Jvdy1nYXAnLFxuICAnc2Nyb2xsLW1hcmdpbicsXG4gICdzY3JvbGwtbWFyZ2luLWJsb2NrJyxcbiAgJ3Njcm9sbC1tYXJnaW4tYmxvY2stZW5kJyxcbiAgJ3Njcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQnLFxuICAnc2Nyb2xsLW1hcmdpbi1ib3R0b20nLFxuICAnc2Nyb2xsLW1hcmdpbi1pbmxpbmUnLFxuICAnc2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kJyxcbiAgJ3Njcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0JyxcbiAgJ3Njcm9sbC1tYXJnaW4tbGVmdCcsXG4gICdzY3JvbGwtbWFyZ2luLXJpZ2h0JyxcbiAgJ3Njcm9sbC1tYXJnaW4tdG9wJyxcbiAgJ3Njcm9sbC1wYWRkaW5nJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWJsb2NrJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWJsb2NrLWVuZCcsXG4gICdzY3JvbGwtcGFkZGluZy1ibG9jay1zdGFydCcsXG4gICdzY3JvbGwtcGFkZGluZy1ib3R0b20nLFxuICAnc2Nyb2xsLXBhZGRpbmctaW5saW5lJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWlubGluZS1lbmQnLFxuICAnc2Nyb2xsLXBhZGRpbmctaW5saW5lLXN0YXJ0JyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWxlZnQnLFxuICAnc2Nyb2xsLXBhZGRpbmctcmlnaHQnLFxuICAnc2Nyb2xsLXBhZGRpbmctdG9wJyxcbiAgJ3Njcm9sbC1zbmFwLWFsaWduJyxcbiAgJ3Njcm9sbC1zbmFwLXN0b3AnLFxuICAnc2Nyb2xsLXNuYXAtdHlwZScsXG4gICdzY3JvbGxiYXItY29sb3InLFxuICAnc2Nyb2xsYmFyLWd1dHRlcicsXG4gICdzY3JvbGxiYXItd2lkdGgnLFxuICAnc2hhcGUtaW1hZ2UtdGhyZXNob2xkJyxcbiAgJ3NoYXBlLW1hcmdpbicsXG4gICdzaGFwZS1vdXRzaWRlJyxcbiAgJ3NwZWFrJyxcbiAgJ3NwZWFrLWFzJyxcbiAgJ3NyYycsIC8vIEBmb250LWZhY2VcbiAgJ3RhYi1zaXplJyxcbiAgJ3RhYmxlLWxheW91dCcsXG4gICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtYWxpZ24tYWxsJyxcbiAgJ3RleHQtYWxpZ24tbGFzdCcsXG4gICd0ZXh0LWNvbWJpbmUtdXByaWdodCcsXG4gICd0ZXh0LWRlY29yYXRpb24nLFxuICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJyxcbiAgJ3RleHQtZGVjb3JhdGlvbi1saW5lJyxcbiAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZScsXG4gICd0ZXh0LWVtcGhhc2lzJyxcbiAgJ3RleHQtZW1waGFzaXMtY29sb3InLFxuICAndGV4dC1lbXBoYXNpcy1wb3NpdGlvbicsXG4gICd0ZXh0LWVtcGhhc2lzLXN0eWxlJyxcbiAgJ3RleHQtaW5kZW50JyxcbiAgJ3RleHQtanVzdGlmeScsXG4gICd0ZXh0LW9yaWVudGF0aW9uJyxcbiAgJ3RleHQtb3ZlcmZsb3cnLFxuICAndGV4dC1yZW5kZXJpbmcnLFxuICAndGV4dC1zaGFkb3cnLFxuICAndGV4dC10cmFuc2Zvcm0nLFxuICAndGV4dC11bmRlcmxpbmUtcG9zaXRpb24nLFxuICAndG9wJyxcbiAgJ3RyYW5zZm9ybScsXG4gICd0cmFuc2Zvcm0tYm94JyxcbiAgJ3RyYW5zZm9ybS1vcmlnaW4nLFxuICAndHJhbnNmb3JtLXN0eWxlJyxcbiAgJ3RyYW5zaXRpb24nLFxuICAndHJhbnNpdGlvbi1kZWxheScsXG4gICd0cmFuc2l0aW9uLWR1cmF0aW9uJyxcbiAgJ3RyYW5zaXRpb24tcHJvcGVydHknLFxuICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLFxuICAndW5pY29kZS1iaWRpJyxcbiAgJ3ZlcnRpY2FsLWFsaWduJyxcbiAgJ3Zpc2liaWxpdHknLFxuICAndm9pY2UtYmFsYW5jZScsXG4gICd2b2ljZS1kdXJhdGlvbicsXG4gICd2b2ljZS1mYW1pbHknLFxuICAndm9pY2UtcGl0Y2gnLFxuICAndm9pY2UtcmFuZ2UnLFxuICAndm9pY2UtcmF0ZScsXG4gICd2b2ljZS1zdHJlc3MnLFxuICAndm9pY2Utdm9sdW1lJyxcbiAgJ3doaXRlLXNwYWNlJyxcbiAgJ3dpZG93cycsXG4gICd3aWR0aCcsXG4gICd3aWxsLWNoYW5nZScsXG4gICd3b3JkLWJyZWFrJyxcbiAgJ3dvcmQtc3BhY2luZycsXG4gICd3b3JkLXdyYXAnLFxuICAnd3JpdGluZy1tb2RlJyxcbiAgJ3otaW5kZXgnXG4gIC8vIHJldmVyc2UgbWFrZXMgc3VyZSBsb25nZXIgYXR0cmlidXRlcyBgZm9udC13ZWlnaHRgIGFyZSBtYXRjaGVkIGZ1bGx5XG4gIC8vIGluc3RlYWQgb2YgZ2V0dGluZyBmYWxzZSBwb3NpdGl2ZXMgb24gc2F5IGBmb250YFxuXS5yZXZlcnNlKCk7XG5cbi8qXG5MYW5ndWFnZTogQ1NTXG5DYXRlZ29yeTogY29tbW9uLCBjc3MsIHdlYlxuV2Vic2l0ZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gY3NzKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICBjb25zdCBtb2RlcyA9IE1PREVTKGhsanMpO1xuICBjb25zdCBWRU5ET1JfUFJFRklYID0geyBiZWdpbjogLy0od2Via2l0fG1venxtc3xvKS0oPz1bYS16XSkvIH07XG4gIGNvbnN0IEFUX01PRElGSUVSUyA9IFwiYW5kIG9yIG5vdCBvbmx5XCI7XG4gIGNvbnN0IEFUX1BST1BFUlRZX1JFID0gL0AtP1xcd1tcXHddKigtXFx3KykqLzsgLy8gQC13ZWJraXQta2V5ZnJhbWVzXG4gIGNvbnN0IElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgY29uc3QgU1RSSU5HUyA9IFtcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICBdO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0NTUycsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAvWz18J1xcJF0vLFxuICAgIGtleXdvcmRzOiB7IGtleWZyYW1lUG9zaXRpb246IFwiZnJvbSB0b1wiIH0sXG4gICAgY2xhc3NOYW1lQWxpYXNlczoge1xuICAgICAgLy8gZm9yIHZpc3VhbCBjb250aW51aXR5IHdpdGggYHRhZyB7fWAgYW5kIGJlY2F1c2Ugd2VcbiAgICAgIC8vIGRvbid0IGhhdmUgYSBncmVhdCBjbGFzcyBmb3IgdGhpcz9cbiAgICAgIGtleWZyYW1lUG9zaXRpb246IFwic2VsZWN0b3ItdGFnXCIgfSxcbiAgICBjb250YWluczogW1xuICAgICAgbW9kZXMuQkxPQ0tfQ09NTUVOVCxcbiAgICAgIFZFTkRPUl9QUkVGSVgsXG4gICAgICAvLyB0byByZWNvZ25pemUga2V5ZnJhbWUgNDAlIGV0YyB3aGljaCBhcmUgb3V0c2lkZSB0aGUgc2NvcGUgb2Ygb3VyXG4gICAgICAvLyBhdHRyaWJ1dGUgdmFsdWUgbW9kZVxuICAgICAgbW9kZXMuQ1NTX05VTUJFUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1pZCcsXG4gICAgICAgIGJlZ2luOiAvI1tBLVphLXowLTlfLV0rLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1jbGFzcycsXG4gICAgICAgIGJlZ2luOiAnXFxcXC4nICsgSURFTlRfUkUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIG1vZGVzLkFUVFJJQlVURV9TRUxFQ1RPUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1wc2V1ZG8nLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICc6KCcgKyBQU0VVRE9fQ0xBU1NFUy5qb2luKCd8JykgKyAnKScgfSxcbiAgICAgICAgICB7IGJlZ2luOiAnOig6KT8oJyArIFBTRVVET19FTEVNRU5UUy5qb2luKCd8JykgKyAnKScgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gd2UgbWF5IGFjdHVhbGx5IG5lZWQgdGhpcyAoMTIvMjAyMClcbiAgICAgIC8vIHsgLy8gcHNldWRvLXNlbGVjdG9yIHBhcmFtc1xuICAgICAgLy8gICBiZWdpbjogL1xcKC8sXG4gICAgICAvLyAgIGVuZDogL1xcKS8sXG4gICAgICAvLyAgIGNvbnRhaW5zOiBbIGhsanMuQ1NTX05VTUJFUl9NT0RFIF1cbiAgICAgIC8vIH0sXG4gICAgICBtb2Rlcy5DU1NfVkFSSUFCTEUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2F0dHJpYnV0ZScsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIEFUVFJJQlVURVMuam9pbignfCcpICsgJylcXFxcYidcbiAgICAgIH0sXG4gICAgICAvLyBhdHRyaWJ1dGUgdmFsdWVzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvOi8sXG4gICAgICAgIGVuZDogL1s7fXtdLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBtb2Rlcy5CTE9DS19DT01NRU5ULFxuICAgICAgICAgIG1vZGVzLkhFWENPTE9SLFxuICAgICAgICAgIG1vZGVzLklNUE9SVEFOVCxcbiAgICAgICAgICBtb2Rlcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgLi4uU1RSSU5HUyxcbiAgICAgICAgICAvLyBuZWVkZWQgdG8gaGlnaGxpZ2h0IHRoZXNlIGFzIHN0cmluZ3MgYW5kIHRvIGF2b2lkIGlzc3VlcyB3aXRoXG4gICAgICAgICAgLy8gaWxsZWdhbCBjaGFyYWN0ZXJzIHRoYXQgbWlnaHQgYmUgaW5zaWRlIHVybHMgdGhhdCB3b3VsZCB0aWdnZXIgdGhlXG4gICAgICAgICAgLy8gbGFuZ3VhZ2VzIGlsbGVnYWwgc3RhY2tcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogLyh1cmx8ZGF0YS11cmkpXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsIC8vIGZyb20ga2V5d29yZHNcbiAgICAgICAgICAgIGtleXdvcmRzOiB7IGJ1aWx0X2luOiBcInVybCBkYXRhLXVyaVwiIH0sXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAuLi5TVFJJTkdTLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIC8vIGFueSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBgKWAgYXMgaW4gYHVybCgpYCB3aWxsIGJlIHRoZSBzdGFydFxuICAgICAgICAgICAgICAgIC8vIG9mIGEgc3RyaW5nLCB3aGljaCBlbmRzIHdpdGggYClgIChmcm9tIHRoZSBwYXJlbnQgbW9kZSlcbiAgICAgICAgICAgICAgICBiZWdpbjogL1teKV0vLFxuICAgICAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbW9kZXMuRlVOQ1RJT05fRElTUEFUQ0hcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IHJlZ2V4Lmxvb2thaGVhZCgvQC8pLFxuICAgICAgICBlbmQ6ICdbeztdJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBpbGxlZ2FsOiAvOi8sIC8vIGJyZWFrIG9uIExlc3MgdmFyaWFibGVzIEB2YXI6IC4uLlxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICAgICAgYmVnaW46IEFUX1BST1BFUlRZX1JFXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogL1xccy8sXG4gICAgICAgICAgICBlbmRzV2l0aFBhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICAgICAkcGF0dGVybjogL1thLXotXSsvLFxuICAgICAgICAgICAgICBrZXl3b3JkOiBBVF9NT0RJRklFUlMsXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZTogTUVESUFfRkVBVFVSRVMuam9pbihcIiBcIilcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC9bYS16LV0rKD89OikvLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogXCJhdHRyaWJ1dGVcIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAuLi5TVFJJTkdTLFxuICAgICAgICAgICAgICBtb2Rlcy5DU1NfTlVNQkVSX01PREVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3NlbGVjdG9yLXRhZycsXG4gICAgICAgIGJlZ2luOiAnXFxcXGIoJyArIFRBR1Muam9pbignfCcpICsgJylcXFxcYidcbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IGNzcyBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsiTU9ERVMiLCJobGpzIiwiSU1QT1JUQU5UIiwic2NvcGUiLCJiZWdpbiIsIkJMT0NLX0NPTU1FTlQiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkhFWENPTE9SIiwiRlVOQ1RJT05fRElTUEFUQ0giLCJjbGFzc05hbWUiLCJBVFRSSUJVVEVfU0VMRUNUT1JfTU9ERSIsImVuZCIsImlsbGVnYWwiLCJjb250YWlucyIsIkFQT1NfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIkNTU19OVU1CRVJfTU9ERSIsIk5VTUJFUl9SRSIsInJlbGV2YW5jZSIsIkNTU19WQVJJQUJMRSIsIlRBR1MiLCJNRURJQV9GRUFUVVJFUyIsIlBTRVVET19DTEFTU0VTIiwiUFNFVURPX0VMRU1FTlRTIiwiQVRUUklCVVRFUyIsInJldmVyc2UiLCJjc3MiLCJyZWdleCIsIm1vZGVzIiwiVkVORE9SX1BSRUZJWCIsIkFUX01PRElGSUVSUyIsIkFUX1BST1BFUlRZX1JFIiwiSURFTlRfUkUiLCJTVFJJTkdTIiwibmFtZSIsImNhc2VfaW5zZW5zaXRpdmUiLCJrZXl3b3JkcyIsImtleWZyYW1lUG9zaXRpb24iLCJjbGFzc05hbWVBbGlhc2VzIiwidmFyaWFudHMiLCJqb2luIiwiYnVpbHRfaW4iLCJlbmRzV2l0aFBhcmVudCIsImV4Y2x1ZGVFbmQiLCJsb29rYWhlYWQiLCIkcGF0dGVybiIsImtleXdvcmQiLCJhdHRyaWJ1dGUiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/css.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/diff.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/diff.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ diff)\n/* harmony export */ });\n/*\nLanguage: Diff\nDescription: Unified and context diff\nAuthor: Vasily Polovnyov <vast@whiteants.net>\nWebsite: https://www.gnu.org/software/diffutils/\nCategory: common\n*/ /** @type LanguageFn */ function diff(hljs) {\n const regex = hljs.regex;\n return {\n name: \"Diff\",\n aliases: [\n \"patch\"\n ],\n contains: [\n {\n className: \"meta\",\n relevance: 10,\n match: regex.either(/^@@ +-\\d+,\\d+ +\\+\\d+,\\d+ +@@/, /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/, /^--- +\\d+,\\d+ +----$/)\n },\n {\n className: \"comment\",\n variants: [\n {\n begin: regex.either(/Index: /, /^index/, /={3,}/, /^-{3}/, /^\\*{3} /, /^\\+{3}/, /^diff --git/),\n end: /$/\n },\n {\n match: /^\\*{15}$/\n }\n ]\n },\n {\n className: \"addition\",\n begin: /^\\+/,\n end: /$/\n },\n {\n className: \"deletion\",\n begin: /^-/,\n end: /$/\n },\n {\n className: \"addition\",\n begin: /^!/,\n end: /$/\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9kaWZmLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7O0FBTUEsR0FFQSxxQkFBcUIsR0FDckIsU0FBU0EsS0FBS0MsSUFBSTtJQUNoQixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLE9BQU87UUFDTEMsTUFBTTtRQUNOQyxTQUFTO1lBQUU7U0FBUztRQUNwQkMsVUFBVTtZQUNSO2dCQUNFQyxXQUFXO2dCQUNYQyxXQUFXO2dCQUNYQyxPQUFPTixNQUFNTyxNQUFNLENBQ2pCLGdDQUNBLCtCQUNBO1lBRUo7WUFDQTtnQkFDRUgsV0FBVztnQkFDWEksVUFBVTtvQkFDUjt3QkFDRUMsT0FBT1QsTUFBTU8sTUFBTSxDQUNqQixXQUNBLFVBQ0EsU0FDQSxTQUNBLFdBQ0EsVUFDQTt3QkFFRkcsS0FBSztvQkFDUDtvQkFDQTt3QkFBRUosT0FBTztvQkFBVztpQkFDckI7WUFDSDtZQUNBO2dCQUNFRixXQUFXO2dCQUNYSyxPQUFPO2dCQUNQQyxLQUFLO1lBQ1A7WUFDQTtnQkFDRU4sV0FBVztnQkFDWEssT0FBTztnQkFDUEMsS0FBSztZQUNQO1lBQ0E7Z0JBQ0VOLFdBQVc7Z0JBQ1hLLE9BQU87Z0JBQ1BDLEtBQUs7WUFDUDtTQUNEO0lBQ0g7QUFDRjtBQUUyQiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvZGlmZi5qcz8wNWJkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogRGlmZlxuRGVzY3JpcHRpb246IFVuaWZpZWQgYW5kIGNvbnRleHQgZGlmZlxuQXV0aG9yOiBWYXNpbHkgUG9sb3ZueW92IDx2YXN0QHdoaXRlYW50cy5uZXQ+XG5XZWJzaXRlOiBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2RpZmZ1dGlscy9cbkNhdGVnb3J5OiBjb21tb25cbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBkaWZmKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdEaWZmJyxcbiAgICBhbGlhc2VzOiBbICdwYXRjaCcgXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMCxcbiAgICAgICAgbWF0Y2g6IHJlZ2V4LmVpdGhlcihcbiAgICAgICAgICAvXkBAICstXFxkKyxcXGQrICtcXCtcXGQrLFxcZCsgK0BALyxcbiAgICAgICAgICAvXlxcKlxcKlxcKiArXFxkKyxcXGQrICtcXCpcXCpcXCpcXCokLyxcbiAgICAgICAgICAvXi0tLSArXFxkKyxcXGQrICstLS0tJC9cbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnY29tbWVudCcsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IHJlZ2V4LmVpdGhlcihcbiAgICAgICAgICAgICAgL0luZGV4OiAvLFxuICAgICAgICAgICAgICAvXmluZGV4LyxcbiAgICAgICAgICAgICAgLz17Myx9LyxcbiAgICAgICAgICAgICAgL14tezN9LyxcbiAgICAgICAgICAgICAgL15cXCp7M30gLyxcbiAgICAgICAgICAgICAgL15cXCt7M30vLFxuICAgICAgICAgICAgICAvXmRpZmYgLS1naXQvXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZW5kOiAvJC9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgbWF0Y2g6IC9eXFwqezE1fSQvIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYWRkaXRpb24nLFxuICAgICAgICBiZWdpbjogL15cXCsvLFxuICAgICAgICBlbmQ6IC8kL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZGVsZXRpb24nLFxuICAgICAgICBiZWdpbjogL14tLyxcbiAgICAgICAgZW5kOiAvJC9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2FkZGl0aW9uJyxcbiAgICAgICAgYmVnaW46IC9eIS8sXG4gICAgICAgIGVuZDogLyQvXG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuXG5leHBvcnQgeyBkaWZmIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJkaWZmIiwiaGxqcyIsInJlZ2V4IiwibmFtZSIsImFsaWFzZXMiLCJjb250YWlucyIsImNsYXNzTmFtZSIsInJlbGV2YW5jZSIsIm1hdGNoIiwiZWl0aGVyIiwidmFyaWFudHMiLCJiZWdpbiIsImVuZCIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/diff.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/go.js":
/*!******************************************************!*\
!*** ./node_modules/highlight.js/es/languages/go.js ***!
\******************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ go)\n/* harmony export */ });\n/*\nLanguage: Go\nAuthor: Stephan Kountso aka StepLg <steplg@gmail.com>\nContributors: Evgeny Stepanischev <imbolk@gmail.com>\nDescription: Google go language (golang). For info about language\nWebsite: http://golang.org/\nCategory: common, system\n*/ function go(hljs) {\n const LITERALS = [\n \"true\",\n \"false\",\n \"iota\",\n \"nil\"\n ];\n const BUILT_INS = [\n \"append\",\n \"cap\",\n \"close\",\n \"complex\",\n \"copy\",\n \"imag\",\n \"len\",\n \"make\",\n \"new\",\n \"panic\",\n \"print\",\n \"println\",\n \"real\",\n \"recover\",\n \"delete\"\n ];\n const TYPES = [\n \"bool\",\n \"byte\",\n \"complex64\",\n \"complex128\",\n \"error\",\n \"float32\",\n \"float64\",\n \"int8\",\n \"int16\",\n \"int32\",\n \"int64\",\n \"string\",\n \"uint8\",\n \"uint16\",\n \"uint32\",\n \"uint64\",\n \"int\",\n \"uint\",\n \"uintptr\",\n \"rune\"\n ];\n const KWS = [\n \"break\",\n \"case\",\n \"chan\",\n \"const\",\n \"continue\",\n \"default\",\n \"defer\",\n \"else\",\n \"fallthrough\",\n \"for\",\n \"func\",\n \"go\",\n \"goto\",\n \"if\",\n \"import\",\n \"interface\",\n \"map\",\n \"package\",\n \"range\",\n \"return\",\n \"select\",\n \"struct\",\n \"switch\",\n \"type\",\n \"var\"\n ];\n const KEYWORDS = {\n keyword: KWS,\n type: TYPES,\n literal: LITERALS,\n built_in: BUILT_INS\n };\n return {\n name: \"Go\",\n aliases: [\n \"golang\"\n ],\n keywords: KEYWORDS,\n illegal: \"</\",\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: \"string\",\n variants: [\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n begin: \"`\",\n end: \"`\"\n }\n ]\n },\n {\n className: \"number\",\n variants: [\n {\n begin: hljs.C_NUMBER_RE + \"[i]\",\n relevance: 1\n },\n hljs.C_NUMBER_MODE\n ]\n },\n {\n begin: /:=/ // relevance booster\n },\n {\n className: \"function\",\n beginKeywords: \"func\",\n end: \"\\\\s*(\\\\{|$)\",\n excludeEnd: true,\n contains: [\n hljs.TITLE_MODE,\n {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n illegal: /[\"']/\n }\n ]\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9nby5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7QUFPQSxHQUVBLFNBQVNBLEdBQUdDLElBQUk7SUFDZCxNQUFNQyxXQUFXO1FBQ2Y7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUNELE1BQU1DLFlBQVk7UUFDaEI7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFDRCxNQUFNQyxRQUFRO1FBQ1o7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBQ0QsTUFBTUMsTUFBTTtRQUNWO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFDRCxNQUFNQyxXQUFXO1FBQ2ZDLFNBQVNGO1FBQ1RHLE1BQU1KO1FBQ05LLFNBQVNQO1FBQ1RRLFVBQVVQO0lBQ1o7SUFDQSxPQUFPO1FBQ0xRLE1BQU07UUFDTkMsU0FBUztZQUFFO1NBQVU7UUFDckJDLFVBQVVQO1FBQ1ZRLFNBQVM7UUFDVEMsVUFBVTtZQUNSZCxLQUFLZSxtQkFBbUI7WUFDeEJmLEtBQUtnQixvQkFBb0I7WUFDekI7Z0JBQ0VDLFdBQVc7Z0JBQ1hDLFVBQVU7b0JBQ1JsQixLQUFLbUIsaUJBQWlCO29CQUN0Qm5CLEtBQUtvQixnQkFBZ0I7b0JBQ3JCO3dCQUNFQyxPQUFPO3dCQUNQQyxLQUFLO29CQUNQO2lCQUNEO1lBQ0g7WUFDQTtnQkFDRUwsV0FBVztnQkFDWEMsVUFBVTtvQkFDUjt3QkFDRUcsT0FBT3JCLEtBQUt1QixXQUFXLEdBQUc7d0JBQzFCQyxXQUFXO29CQUNiO29CQUNBeEIsS0FBS3lCLGFBQWE7aUJBQ25CO1lBQ0g7WUFDQTtnQkFBRUosT0FBTyxLQUFLLG9CQUFvQjtZQUNsQztZQUNBO2dCQUNFSixXQUFXO2dCQUNYUyxlQUFlO2dCQUNmSixLQUFLO2dCQUNMSyxZQUFZO2dCQUNaYixVQUFVO29CQUNSZCxLQUFLNEIsVUFBVTtvQkFDZjt3QkFDRVgsV0FBVzt3QkFDWEksT0FBTzt3QkFDUEMsS0FBSzt3QkFDTE8sWUFBWTt3QkFDWmpCLFVBQVVQO3dCQUNWUSxTQUFTO29CQUNYO2lCQUNEO1lBQ0g7U0FDRDtJQUNIO0FBQ0Y7QUFFeUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL2dvLmpzP2ZjNTMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBHb1xuQXV0aG9yOiBTdGVwaGFuIEtvdW50c28gYWthIFN0ZXBMZyA8c3RlcGxnQGdtYWlsLmNvbT5cbkNvbnRyaWJ1dG9yczogRXZnZW55IFN0ZXBhbmlzY2hldiA8aW1ib2xrQGdtYWlsLmNvbT5cbkRlc2NyaXB0aW9uOiBHb29nbGUgZ28gbGFuZ3VhZ2UgKGdvbGFuZykuIEZvciBpbmZvIGFib3V0IGxhbmd1YWdlXG5XZWJzaXRlOiBodHRwOi8vZ29sYW5nLm9yZy9cbkNhdGVnb3J5OiBjb21tb24sIHN5c3RlbVxuKi9cblxuZnVuY3Rpb24gZ28oaGxqcykge1xuICBjb25zdCBMSVRFUkFMUyA9IFtcbiAgICBcInRydWVcIixcbiAgICBcImZhbHNlXCIsXG4gICAgXCJpb3RhXCIsXG4gICAgXCJuaWxcIlxuICBdO1xuICBjb25zdCBCVUlMVF9JTlMgPSBbXG4gICAgXCJhcHBlbmRcIixcbiAgICBcImNhcFwiLFxuICAgIFwiY2xvc2VcIixcbiAgICBcImNvbXBsZXhcIixcbiAgICBcImNvcHlcIixcbiAgICBcImltYWdcIixcbiAgICBcImxlblwiLFxuICAgIFwibWFrZVwiLFxuICAgIFwibmV3XCIsXG4gICAgXCJwYW5pY1wiLFxuICAgIFwicHJpbnRcIixcbiAgICBcInByaW50bG5cIixcbiAgICBcInJlYWxcIixcbiAgICBcInJlY292ZXJcIixcbiAgICBcImRlbGV0ZVwiXG4gIF07XG4gIGNvbnN0IFRZUEVTID0gW1xuICAgIFwiYm9vbFwiLFxuICAgIFwiYnl0ZVwiLFxuICAgIFwiY29tcGxleDY0XCIsXG4gICAgXCJjb21wbGV4MTI4XCIsXG4gICAgXCJlcnJvclwiLFxuICAgIFwiZmxvYXQzMlwiLFxuICAgIFwiZmxvYXQ2NFwiLFxuICAgIFwiaW50OFwiLFxuICAgIFwiaW50MTZcIixcbiAgICBcImludDMyXCIsXG4gICAgXCJpbnQ2NFwiLFxuICAgIFwic3RyaW5nXCIsXG4gICAgXCJ1aW50OFwiLFxuICAgIFwidWludDE2XCIsXG4gICAgXCJ1aW50MzJcIixcbiAgICBcInVpbnQ2NFwiLFxuICAgIFwiaW50XCIsXG4gICAgXCJ1aW50XCIsXG4gICAgXCJ1aW50cHRyXCIsXG4gICAgXCJydW5lXCJcbiAgXTtcbiAgY29uc3QgS1dTID0gW1xuICAgIFwiYnJlYWtcIixcbiAgICBcImNhc2VcIixcbiAgICBcImNoYW5cIixcbiAgICBcImNvbnN0XCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwiZGVmYXVsdFwiLFxuICAgIFwiZGVmZXJcIixcbiAgICBcImVsc2VcIixcbiAgICBcImZhbGx0aHJvdWdoXCIsXG4gICAgXCJmb3JcIixcbiAgICBcImZ1bmNcIixcbiAgICBcImdvXCIsXG4gICAgXCJnb3RvXCIsXG4gICAgXCJpZlwiLFxuICAgIFwiaW1wb3J0XCIsXG4gICAgXCJpbnRlcmZhY2VcIixcbiAgICBcIm1hcFwiLFxuICAgIFwicGFja2FnZVwiLFxuICAgIFwicmFuZ2VcIixcbiAgICBcInJldHVyblwiLFxuICAgIFwic2VsZWN0XCIsXG4gICAgXCJzdHJ1Y3RcIixcbiAgICBcInN3aXRjaFwiLFxuICAgIFwidHlwZVwiLFxuICAgIFwidmFyXCIsXG4gIF07XG4gIGNvbnN0IEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6IEtXUyxcbiAgICB0eXBlOiBUWVBFUyxcbiAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICBidWlsdF9pbjogQlVJTFRfSU5TXG4gIH07XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0dvJyxcbiAgICBhbGlhc2VzOiBbICdnb2xhbmcnIF0sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdgJyxcbiAgICAgICAgICAgIGVuZDogJ2AnXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFICsgJ1tpXScsXG4gICAgICAgICAgICByZWxldmFuY2U6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19OVU1CRVJfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgeyBiZWdpbjogLzo9LyAvLyByZWxldmFuY2UgYm9vc3RlclxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuYycsXG4gICAgICAgIGVuZDogJ1xcXFxzKihcXFxce3wkKScsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5USVRMRV9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bXCInXS9cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IGdvIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJnbyIsImhsanMiLCJMSVRFUkFMUyIsIkJVSUxUX0lOUyIsIlRZUEVTIiwiS1dTIiwiS0VZV09SRFMiLCJrZXl3b3JkIiwidHlwZSIsImxpdGVyYWwiLCJidWlsdF9pbiIsIm5hbWUiLCJhbGlhc2VzIiwia2V5d29yZHMiLCJpbGxlZ2FsIiwiY29udGFpbnMiLCJDX0xJTkVfQ09NTUVOVF9NT0RFIiwiQ19CTE9DS19DT01NRU5UX01PREUiLCJjbGFzc05hbWUiLCJ2YXJpYW50cyIsIlFVT1RFX1NUUklOR19NT0RFIiwiQVBPU19TVFJJTkdfTU9ERSIsImJlZ2luIiwiZW5kIiwiQ19OVU1CRVJfUkUiLCJyZWxldmFuY2UiLCJDX05VTUJFUl9NT0RFIiwiYmVnaW5LZXl3b3JkcyIsImV4Y2x1ZGVFbmQiLCJUSVRMRV9NT0RFIiwiZW5kc1BhcmVudCIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/go.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/graphql.js":
/*!***********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/graphql.js ***!
\***********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ graphql)\n/* harmony export */ });\n/*\n Language: GraphQL\n Author: John Foster (GH jf990), and others\n Description: GraphQL is a query language for APIs\n Category: web, common\n*/ /** @type LanguageFn */ function graphql(hljs) {\n const regex = hljs.regex;\n const GQL_NAME = /[_A-Za-z][_0-9A-Za-z]*/;\n return {\n name: \"GraphQL\",\n aliases: [\n \"gql\"\n ],\n case_insensitive: true,\n disableAutodetect: false,\n keywords: {\n keyword: [\n \"query\",\n \"mutation\",\n \"subscription\",\n \"type\",\n \"input\",\n \"schema\",\n \"directive\",\n \"interface\",\n \"union\",\n \"scalar\",\n \"fragment\",\n \"enum\",\n \"on\"\n ],\n literal: [\n \"true\",\n \"false\",\n \"null\"\n ]\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n {\n scope: \"punctuation\",\n match: /[.]{3}/,\n relevance: 0\n },\n {\n scope: \"punctuation\",\n begin: /[\\!\\(\\)\\:\\=\\[\\]\\{\\|\\}]{1}/,\n relevance: 0\n },\n {\n scope: \"variable\",\n begin: /\\$/,\n end: /\\W/,\n excludeEnd: true,\n relevance: 0\n },\n {\n scope: \"meta\",\n match: /@\\w+/,\n excludeEnd: true\n },\n {\n scope: \"symbol\",\n begin: regex.concat(GQL_NAME, regex.lookahead(/\\s*:/)),\n relevance: 0\n }\n ],\n illegal: [\n /[;<']/,\n /BEGIN/\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9ncmFwaHFsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7QUFLQSxHQUVBLHFCQUFxQixHQUNyQixTQUFTQSxRQUFRQyxJQUFJO0lBQ25CLE1BQU1DLFFBQVFELEtBQUtDLEtBQUs7SUFDeEIsTUFBTUMsV0FBVztJQUNqQixPQUFPO1FBQ0xDLE1BQU07UUFDTkMsU0FBUztZQUFFO1NBQU87UUFDbEJDLGtCQUFrQjtRQUNsQkMsbUJBQW1CO1FBQ25CQyxVQUFVO1lBQ1JDLFNBQVM7Z0JBQ1A7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7YUFDRDtZQUNEQyxTQUFTO2dCQUNQO2dCQUNBO2dCQUNBO2FBQ0Q7UUFDSDtRQUNBQyxVQUFVO1lBQ1JWLEtBQUtXLGlCQUFpQjtZQUN0QlgsS0FBS1ksaUJBQWlCO1lBQ3RCWixLQUFLYSxXQUFXO1lBQ2hCO2dCQUNFQyxPQUFPO2dCQUNQQyxPQUFPO2dCQUNQQyxXQUFXO1lBQ2I7WUFDQTtnQkFDRUYsT0FBTztnQkFDUEcsT0FBTztnQkFDUEQsV0FBVztZQUNiO1lBQ0E7Z0JBQ0VGLE9BQU87Z0JBQ1BHLE9BQU87Z0JBQ1BDLEtBQUs7Z0JBQ0xDLFlBQVk7Z0JBQ1pILFdBQVc7WUFDYjtZQUNBO2dCQUNFRixPQUFPO2dCQUNQQyxPQUFPO2dCQUNQSSxZQUFZO1lBQ2Q7WUFDQTtnQkFDRUwsT0FBTztnQkFDUEcsT0FBT2hCLE1BQU1tQixNQUFNLENBQUNsQixVQUFVRCxNQUFNb0IsU0FBUyxDQUFDO2dCQUM5Q0wsV0FBVztZQUNiO1NBQ0Q7UUFDRE0sU0FBUztZQUNQO1lBQ0E7U0FDRDtJQUNIO0FBQ0Y7QUFFOEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL2dyYXBocWwuanM/YmYwYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuIExhbmd1YWdlOiBHcmFwaFFMXG4gQXV0aG9yOiBKb2huIEZvc3RlciAoR0ggamY5OTApLCBhbmQgb3RoZXJzXG4gRGVzY3JpcHRpb246IEdyYXBoUUwgaXMgYSBxdWVyeSBsYW5ndWFnZSBmb3IgQVBJc1xuIENhdGVnb3J5OiB3ZWIsIGNvbW1vblxuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIGdyYXBocWwoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IEdRTF9OQU1FID0gL1tfQS1aYS16XVtfMC05QS1aYS16XSovO1xuICByZXR1cm4ge1xuICAgIG5hbWU6IFwiR3JhcGhRTFwiLFxuICAgIGFsaWFzZXM6IFsgXCJncWxcIiBdLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgZGlzYWJsZUF1dG9kZXRlY3Q6IGZhbHNlLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBrZXl3b3JkOiBbXG4gICAgICAgIFwicXVlcnlcIixcbiAgICAgICAgXCJtdXRhdGlvblwiLFxuICAgICAgICBcInN1YnNjcmlwdGlvblwiLFxuICAgICAgICBcInR5cGVcIixcbiAgICAgICAgXCJpbnB1dFwiLFxuICAgICAgICBcInNjaGVtYVwiLFxuICAgICAgICBcImRpcmVjdGl2ZVwiLFxuICAgICAgICBcImludGVyZmFjZVwiLFxuICAgICAgICBcInVuaW9uXCIsXG4gICAgICAgIFwic2NhbGFyXCIsXG4gICAgICAgIFwiZnJhZ21lbnRcIixcbiAgICAgICAgXCJlbnVtXCIsXG4gICAgICAgIFwib25cIlxuICAgICAgXSxcbiAgICAgIGxpdGVyYWw6IFtcbiAgICAgICAgXCJ0cnVlXCIsXG4gICAgICAgIFwiZmFsc2VcIixcbiAgICAgICAgXCJudWxsXCJcbiAgICAgIF1cbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuTlVNQkVSX01PREUsXG4gICAgICB7XG4gICAgICAgIHNjb3BlOiBcInB1bmN0dWF0aW9uXCIsXG4gICAgICAgIG1hdGNoOiAvWy5dezN9LyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzY29wZTogXCJwdW5jdHVhdGlvblwiLFxuICAgICAgICBiZWdpbjogL1tcXCFcXChcXClcXDpcXD1cXFtcXF1cXHtcXHxcXH1dezF9LyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzY29wZTogXCJ2YXJpYWJsZVwiLFxuICAgICAgICBiZWdpbjogL1xcJC8sXG4gICAgICAgIGVuZDogL1xcVy8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2NvcGU6IFwibWV0YVwiLFxuICAgICAgICBtYXRjaDogL0BcXHcrLyxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2NvcGU6IFwic3ltYm9sXCIsXG4gICAgICAgIGJlZ2luOiByZWdleC5jb25jYXQoR1FMX05BTUUsIHJlZ2V4Lmxvb2thaGVhZCgvXFxzKjovKSksXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgaWxsZWdhbDogW1xuICAgICAgL1s7PCddLyxcbiAgICAgIC9CRUdJTi9cbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IGdyYXBocWwgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbImdyYXBocWwiLCJobGpzIiwicmVnZXgiLCJHUUxfTkFNRSIsIm5hbWUiLCJhbGlhc2VzIiwiY2FzZV9pbnNlbnNpdGl2ZSIsImRpc2FibGVBdXRvZGV0ZWN0Iiwia2V5d29yZHMiLCJrZXl3b3JkIiwibGl0ZXJhbCIsImNvbnRhaW5zIiwiSEFTSF9DT01NRU5UX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIk5VTUJFUl9NT0RFIiwic2NvcGUiLCJtYXRjaCIsInJlbGV2YW5jZSIsImJlZ2luIiwiZW5kIiwiZXhjbHVkZUVuZCIsImNvbmNhdCIsImxvb2thaGVhZCIsImlsbGVnYWwiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/graphql.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/ini.js":
/*!*******************************************************!*\
!*** ./node_modules/highlight.js/es/languages/ini.js ***!
\*******************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ini)\n/* harmony export */ });\n/*\nLanguage: TOML, also INI\nDescription: TOML aims to be a minimal configuration file format that's easy to read due to obvious semantics.\nContributors: Guillaume Gomez <guillaume1.gomez@gmail.com>\nCategory: common, config\nWebsite: https://github.com/toml-lang/toml\n*/ function ini(hljs) {\n const regex = hljs.regex;\n const NUMBERS = {\n className: \"number\",\n relevance: 0,\n variants: [\n {\n begin: /([+-]+)?[\\d]+_[\\d_]+/\n },\n {\n begin: hljs.NUMBER_RE\n }\n ]\n };\n const COMMENTS = hljs.COMMENT();\n COMMENTS.variants = [\n {\n begin: /;/,\n end: /$/\n },\n {\n begin: /#/,\n end: /$/\n }\n ];\n const VARIABLES = {\n className: \"variable\",\n variants: [\n {\n begin: /\\$[\\w\\d\"][\\w\\d_]*/\n },\n {\n begin: /\\$\\{(.*?)\\}/\n }\n ]\n };\n const LITERALS = {\n className: \"literal\",\n begin: /\\bon|off|true|false|yes|no\\b/\n };\n const STRINGS = {\n className: \"string\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ],\n variants: [\n {\n begin: \"'''\",\n end: \"'''\",\n relevance: 10\n },\n {\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: \"'\",\n end: \"'\"\n }\n ]\n };\n const ARRAY = {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n COMMENTS,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n \"self\"\n ],\n relevance: 0\n };\n const BARE_KEY = /[A-Za-z0-9_-]+/;\n const QUOTED_KEY_DOUBLE_QUOTE = /\"(\\\\\"|[^\"])*\"/;\n const QUOTED_KEY_SINGLE_QUOTE = /'[^']*'/;\n const ANY_KEY = regex.either(BARE_KEY, QUOTED_KEY_DOUBLE_QUOTE, QUOTED_KEY_SINGLE_QUOTE);\n const DOTTED_KEY = regex.concat(ANY_KEY, \"(\\\\s*\\\\.\\\\s*\", ANY_KEY, \")*\", regex.lookahead(/\\s*=\\s*[^#\\s]/));\n return {\n name: \"TOML, also INI\",\n aliases: [\n \"toml\"\n ],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n COMMENTS,\n {\n className: \"section\",\n begin: /\\[+/,\n end: /\\]+/\n },\n {\n begin: DOTTED_KEY,\n className: \"attr\",\n starts: {\n end: /$/,\n contains: [\n COMMENTS,\n ARRAY,\n LITERALS,\n VARIABLES,\n STRINGS,\n NUMBERS\n ]\n }\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9pbmkuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7QUFNQSxHQUVBLFNBQVNBLElBQUlDLElBQUk7SUFDZixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLE1BQU1DLFVBQVU7UUFDZEMsV0FBVztRQUNYQyxXQUFXO1FBQ1hDLFVBQVU7WUFDUjtnQkFBRUMsT0FBTztZQUF1QjtZQUNoQztnQkFBRUEsT0FBT04sS0FBS08sU0FBUztZQUFDO1NBQ3pCO0lBQ0g7SUFDQSxNQUFNQyxXQUFXUixLQUFLUyxPQUFPO0lBQzdCRCxTQUFTSCxRQUFRLEdBQUc7UUFDbEI7WUFDRUMsT0FBTztZQUNQSSxLQUFLO1FBQ1A7UUFDQTtZQUNFSixPQUFPO1lBQ1BJLEtBQUs7UUFDUDtLQUNEO0lBQ0QsTUFBTUMsWUFBWTtRQUNoQlIsV0FBVztRQUNYRSxVQUFVO1lBQ1I7Z0JBQUVDLE9BQU87WUFBb0I7WUFDN0I7Z0JBQUVBLE9BQU87WUFBYztTQUN4QjtJQUNIO0lBQ0EsTUFBTU0sV0FBVztRQUNmVCxXQUFXO1FBQ1hHLE9BQU87SUFDVDtJQUNBLE1BQU1PLFVBQVU7UUFDZFYsV0FBVztRQUNYVyxVQUFVO1lBQUVkLEtBQUtlLGdCQUFnQjtTQUFFO1FBQ25DVixVQUFVO1lBQ1I7Z0JBQ0VDLE9BQU87Z0JBQ1BJLEtBQUs7Z0JBQ0xOLFdBQVc7WUFDYjtZQUNBO2dCQUNFRSxPQUFPO2dCQUNQSSxLQUFLO2dCQUNMTixXQUFXO1lBQ2I7WUFDQTtnQkFDRUUsT0FBTztnQkFDUEksS0FBSztZQUNQO1lBQ0E7Z0JBQ0VKLE9BQU87Z0JBQ1BJLEtBQUs7WUFDUDtTQUNEO0lBQ0g7SUFDQSxNQUFNTSxRQUFRO1FBQ1pWLE9BQU87UUFDUEksS0FBSztRQUNMSSxVQUFVO1lBQ1JOO1lBQ0FJO1lBQ0FEO1lBQ0FFO1lBQ0FYO1lBQ0E7U0FDRDtRQUNERSxXQUFXO0lBQ2I7SUFFQSxNQUFNYSxXQUFXO0lBQ2pCLE1BQU1DLDBCQUEwQjtJQUNoQyxNQUFNQywwQkFBMEI7SUFDaEMsTUFBTUMsVUFBVW5CLE1BQU1vQixNQUFNLENBQzFCSixVQUFVQyx5QkFBeUJDO0lBRXJDLE1BQU1HLGFBQWFyQixNQUFNc0IsTUFBTSxDQUM3QkgsU0FBUyxnQkFBZ0JBLFNBQVMsTUFDbENuQixNQUFNdUIsU0FBUyxDQUFDO0lBR2xCLE9BQU87UUFDTEMsTUFBTTtRQUNOQyxTQUFTO1lBQUU7U0FBUTtRQUNuQkMsa0JBQWtCO1FBQ2xCQyxTQUFTO1FBQ1RkLFVBQVU7WUFDUk47WUFDQTtnQkFDRUwsV0FBVztnQkFDWEcsT0FBTztnQkFDUEksS0FBSztZQUNQO1lBQ0E7Z0JBQ0VKLE9BQU9nQjtnQkFDUG5CLFdBQVc7Z0JBQ1gwQixRQUFRO29CQUNObkIsS0FBSztvQkFDTEksVUFBVTt3QkFDUk47d0JBQ0FRO3dCQUNBSjt3QkFDQUQ7d0JBQ0FFO3dCQUNBWDtxQkFDRDtnQkFDSDtZQUNGO1NBQ0Q7SUFDSDtBQUNGO0FBRTBCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9pbmkuanM/MTdhZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IFRPTUwsIGFsc28gSU5JXG5EZXNjcmlwdGlvbjogVE9NTCBhaW1zIHRvIGJlIGEgbWluaW1hbCBjb25maWd1cmF0aW9uIGZpbGUgZm9ybWF0IHRoYXQncyBlYXN5IHRvIHJlYWQgZHVlIHRvIG9idmlvdXMgc2VtYW50aWNzLlxuQ29udHJpYnV0b3JzOiBHdWlsbGF1bWUgR29tZXogPGd1aWxsYXVtZTEuZ29tZXpAZ21haWwuY29tPlxuQ2F0ZWdvcnk6IGNvbW1vbiwgY29uZmlnXG5XZWJzaXRlOiBodHRwczovL2dpdGh1Yi5jb20vdG9tbC1sYW5nL3RvbWxcbiovXG5cbmZ1bmN0aW9uIGluaShobGpzKSB7XG4gIGNvbnN0IHJlZ2V4ID0gaGxqcy5yZWdleDtcbiAgY29uc3QgTlVNQkVSUyA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogLyhbKy1dKyk/W1xcZF0rX1tcXGRfXSsvIH0sXG4gICAgICB7IGJlZ2luOiBobGpzLk5VTUJFUl9SRSB9XG4gICAgXVxuICB9O1xuICBjb25zdCBDT01NRU5UUyA9IGhsanMuQ09NTUVOVCgpO1xuICBDT01NRU5UUy52YXJpYW50cyA9IFtcbiAgICB7XG4gICAgICBiZWdpbjogLzsvLFxuICAgICAgZW5kOiAvJC9cbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAvIy8sXG4gICAgICBlbmQ6IC8kL1xuICAgIH1cbiAgXTtcbiAgY29uc3QgVkFSSUFCTEVTID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogL1xcJFtcXHdcXGRcIl1bXFx3XFxkX10qLyB9LFxuICAgICAgeyBiZWdpbjogL1xcJFxceyguKj8pXFx9LyB9XG4gICAgXVxuICB9O1xuICBjb25zdCBMSVRFUkFMUyA9IHtcbiAgICBjbGFzc05hbWU6ICdsaXRlcmFsJyxcbiAgICBiZWdpbjogL1xcYm9ufG9mZnx0cnVlfGZhbHNlfHllc3xub1xcYi9cbiAgfTtcbiAgY29uc3QgU1RSSU5HUyA9IHtcbiAgICBjbGFzc05hbWU6IFwic3RyaW5nXCIsXG4gICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFwiJycnXCIsXG4gICAgICAgIGVuZDogXCInJydcIixcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcIlwiXCInLFxuICAgICAgICBlbmQ6ICdcIlwiXCInLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJ1wiJyxcbiAgICAgICAgZW5kOiAnXCInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogXCInXCIsXG4gICAgICAgIGVuZDogXCInXCJcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGNvbnN0IEFSUkFZID0ge1xuICAgIGJlZ2luOiAvXFxbLyxcbiAgICBlbmQ6IC9cXF0vLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBDT01NRU5UUyxcbiAgICAgIExJVEVSQUxTLFxuICAgICAgVkFSSUFCTEVTLFxuICAgICAgU1RSSU5HUyxcbiAgICAgIE5VTUJFUlMsXG4gICAgICAnc2VsZidcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IEJBUkVfS0VZID0gL1tBLVphLXowLTlfLV0rLztcbiAgY29uc3QgUVVPVEVEX0tFWV9ET1VCTEVfUVVPVEUgPSAvXCIoXFxcXFwifFteXCJdKSpcIi87XG4gIGNvbnN0IFFVT1RFRF9LRVlfU0lOR0xFX1FVT1RFID0gLydbXiddKicvO1xuICBjb25zdCBBTllfS0VZID0gcmVnZXguZWl0aGVyKFxuICAgIEJBUkVfS0VZLCBRVU9URURfS0VZX0RPVUJMRV9RVU9URSwgUVVPVEVEX0tFWV9TSU5HTEVfUVVPVEVcbiAgKTtcbiAgY29uc3QgRE9UVEVEX0tFWSA9IHJlZ2V4LmNvbmNhdChcbiAgICBBTllfS0VZLCAnKFxcXFxzKlxcXFwuXFxcXHMqJywgQU5ZX0tFWSwgJykqJyxcbiAgICByZWdleC5sb29rYWhlYWQoL1xccyo9XFxzKlteI1xcc10vKVxuICApO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1RPTUwsIGFsc28gSU5JJyxcbiAgICBhbGlhc2VzOiBbICd0b21sJyBdLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgaWxsZWdhbDogL1xcUy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIENPTU1FTlRTLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICAgICAgYmVnaW46IC9cXFsrLyxcbiAgICAgICAgZW5kOiAvXFxdKy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBET1RURURfS0VZLFxuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAvJC8sXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIENPTU1FTlRTLFxuICAgICAgICAgICAgQVJSQVksXG4gICAgICAgICAgICBMSVRFUkFMUyxcbiAgICAgICAgICAgIFZBUklBQkxFUyxcbiAgICAgICAgICAgIFNUUklOR1MsXG4gICAgICAgICAgICBOVU1CRVJTXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuXG5leHBvcnQgeyBpbmkgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbImluaSIsImhsanMiLCJyZWdleCIsIk5VTUJFUlMiLCJjbGFzc05hbWUiLCJyZWxldmFuY2UiLCJ2YXJpYW50cyIsImJlZ2luIiwiTlVNQkVSX1JFIiwiQ09NTUVOVFMiLCJDT01NRU5UIiwiZW5kIiwiVkFSSUFCTEVTIiwiTElURVJBTFMiLCJTVFJJTkdTIiwiY29udGFpbnMiLCJCQUNLU0xBU0hfRVNDQVBFIiwiQVJSQVkiLCJCQVJFX0tFWSIsIlFVT1RFRF9LRVlfRE9VQkxFX1FVT1RFIiwiUVVPVEVEX0tFWV9TSU5HTEVfUVVPVEUiLCJBTllfS0VZIiwiZWl0aGVyIiwiRE9UVEVEX0tFWSIsImNvbmNhdCIsImxvb2thaGVhZCIsIm5hbWUiLCJhbGlhc2VzIiwiY2FzZV9pbnNlbnNpdGl2ZSIsImlsbGVnYWwiLCJzdGFydHMiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/ini.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/java.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/java.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ java)\n/* harmony export */ });\n// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = \"[0-9](_*[0-9])*\";\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = \"[0-9a-fA-F](_*[0-9a-fA-F])*\";\nvar NUMERIC = {\n className: \"number\",\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n {\n begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` + `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b`\n },\n // excluding ExponentPart\n {\n begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)`\n },\n {\n begin: `(${frac})[fFdD]?\\\\b`\n },\n {\n begin: `\\\\b(${decimalDigits})[fFdD]\\\\b`\n },\n // HexadecimalFloatingPointLiteral\n {\n begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` + `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b`\n },\n // DecimalIntegerLiteral\n {\n begin: \"\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b\"\n },\n // HexIntegerLiteral\n {\n begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b`\n },\n // OctalIntegerLiteral\n {\n begin: \"\\\\b0(_*[0-7])*[lL]?\\\\b\"\n },\n // BinaryIntegerLiteral\n {\n begin: \"\\\\b0[bB][01](_*[01])*[lL]?\\\\b\"\n }\n ],\n relevance: 0\n};\n/*\nLanguage: Java\nAuthor: Vsevolod Solovyov <vsevolod.solovyov@gmail.com>\nCategory: common, enterprise\nWebsite: https://www.java.com/\n*/ /**\n * Allows recursive regex expressions to a given depth\n *\n * ie: recurRegex(\"(abc~~~)\", /~~~/g, 2) becomes:\n * (abc(abc(abc)))\n *\n * @param {string} re\n * @param {RegExp} substitution (should be a g mode regex)\n * @param {number} depth\n * @returns {string}``\n */ function recurRegex(re, substitution, depth) {\n if (depth === -1) return \"\";\n return re.replace(substitution, (_)=>{\n return recurRegex(re, substitution, depth - 1);\n });\n}\n/** @type LanguageFn */ function java(hljs) {\n const regex = hljs.regex;\n const JAVA_IDENT_RE = \"[\\xc0-ʸa-zA-Z_$][\\xc0-ʸa-zA-Z_$0-9]*\";\n const GENERIC_IDENT_RE = JAVA_IDENT_RE + recurRegex(\"(?:<\" + JAVA_IDENT_RE + \"~~~(?:\\\\s*,\\\\s*\" + JAVA_IDENT_RE + \"~~~)*>)?\", /~~~/g, 2);\n const MAIN_KEYWORDS = [\n \"synchronized\",\n \"abstract\",\n \"private\",\n \"var\",\n \"static\",\n \"if\",\n \"const \",\n \"for\",\n \"while\",\n \"strictfp\",\n \"finally\",\n \"protected\",\n \"import\",\n \"native\",\n \"final\",\n \"void\",\n \"enum\",\n \"else\",\n \"break\",\n \"transient\",\n \"catch\",\n \"instanceof\",\n \"volatile\",\n \"case\",\n \"assert\",\n \"package\",\n \"default\",\n \"public\",\n \"try\",\n \"switch\",\n \"continue\",\n \"throws\",\n \"protected\",\n \"public\",\n \"private\",\n \"module\",\n \"requires\",\n \"exports\",\n \"do\",\n \"sealed\",\n \"yield\",\n \"permits\"\n ];\n const BUILT_INS = [\n \"super\",\n \"this\"\n ];\n const LITERALS = [\n \"false\",\n \"true\",\n \"null\"\n ];\n const TYPES = [\n \"char\",\n \"boolean\",\n \"long\",\n \"float\",\n \"int\",\n \"byte\",\n \"short\",\n \"double\"\n ];\n const KEYWORDS = {\n keyword: MAIN_KEYWORDS,\n literal: LITERALS,\n type: TYPES,\n built_in: BUILT_INS\n };\n const ANNOTATION = {\n className: \"meta\",\n begin: \"@\" + JAVA_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n \"self\"\n ] // allow nested () inside our annotation\n }\n ]\n };\n const PARAMS = {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE\n ],\n endsParent: true\n };\n return {\n name: \"Java\",\n aliases: [\n \"jsp\"\n ],\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\"/\\\\*\\\\*\", \"\\\\*/\", {\n relevance: 0,\n contains: [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/,\n relevance: 0\n },\n {\n className: \"doctag\",\n begin: \"@[A-Za-z]+\"\n }\n ]\n }),\n // relevance boost\n {\n begin: /import java\\.[a-z]+\\./,\n keywords: \"import\",\n relevance: 2\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n begin: /\"\"\"/,\n end: /\"\"\"/,\n className: \"string\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n match: [\n /\\b(?:class|interface|enum|extends|implements|new)/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n // Exceptions for hyphenated keywords\n match: /non-sealed/,\n scope: \"keyword\"\n },\n {\n begin: [\n regex.concat(/(?!else)/, JAVA_IDENT_RE),\n /\\s+/,\n JAVA_IDENT_RE,\n /\\s+/,\n /=(?!=)/\n ],\n className: {\n 1: \"type\",\n 3: \"variable\",\n 5: \"operator\"\n }\n },\n {\n begin: [\n /record/,\n /\\s+/,\n JAVA_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n },\n contains: [\n PARAMS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: \"new throw return else\",\n relevance: 0\n },\n {\n begin: [\n \"(?:\" + GENERIC_IDENT_RE + \"\\\\s+)\",\n hljs.UNDERSCORE_IDENT_RE,\n /\\s*(?=\\()/\n ],\n className: {\n 2: \"title.function\"\n },\n keywords: KEYWORDS,\n contains: [\n {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n ANNOTATION,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMERIC,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n NUMERIC,\n ANNOTATION\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9qYXZhLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSx5RUFBeUU7QUFDekUsSUFBSUEsZ0JBQWdCO0FBQ3BCLElBQUlDLE9BQU8sQ0FBQyxJQUFJLEVBQUVELGNBQWMsQ0FBQyxDQUFDO0FBQ2xDLElBQUlFLFlBQVk7QUFDaEIsSUFBSUMsVUFBVTtJQUNaQyxXQUFXO0lBQ1hDLFVBQVU7UUFDUiw4QkFBOEI7UUFDOUIseUJBQXlCO1FBQ3pCO1lBQUVDLE9BQU8sQ0FBQyxLQUFLLEVBQUVOLGNBQWMsR0FBRyxFQUFFQyxLQUFLLFNBQVMsRUFBRUEsS0FBSyxFQUFFLENBQUMsR0FDMUQsQ0FBQyxVQUFVLEVBQUVELGNBQWMsV0FBVyxDQUFDO1FBQUM7UUFDMUMseUJBQXlCO1FBQ3pCO1lBQUVNLE9BQU8sQ0FBQyxJQUFJLEVBQUVOLGNBQWMsR0FBRyxFQUFFQyxLQUFLLDRCQUE0QixDQUFDO1FBQUM7UUFDdEU7WUFBRUssT0FBTyxDQUFDLENBQUMsRUFBRUwsS0FBSyxXQUFXLENBQUM7UUFBQztRQUMvQjtZQUFFSyxPQUFPLENBQUMsSUFBSSxFQUFFTixjQUFjLFVBQVUsQ0FBQztRQUFDO1FBRTFDLGtDQUFrQztRQUNsQztZQUFFTSxPQUFPLENBQUMsVUFBVSxFQUFFSixVQUFVLE9BQU8sRUFBRUEsVUFBVSxNQUFNLEVBQUVBLFVBQVUsRUFBRSxDQUFDLEdBQ3RFLENBQUMsVUFBVSxFQUFFRixjQUFjLFdBQVcsQ0FBQztRQUFDO1FBRTFDLHdCQUF3QjtRQUN4QjtZQUFFTSxPQUFPO1FBQWlDO1FBRTFDLG9CQUFvQjtRQUNwQjtZQUFFQSxPQUFPLENBQUMsU0FBUyxFQUFFSixVQUFVLFNBQVMsQ0FBQztRQUFDO1FBRTFDLHNCQUFzQjtRQUN0QjtZQUFFSSxPQUFPO1FBQXlCO1FBRWxDLHVCQUF1QjtRQUN2QjtZQUFFQSxPQUFPO1FBQWdDO0tBQzFDO0lBQ0RDLFdBQVc7QUFDYjtBQUVB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QkFDRUUsT0FBTztvQkFDTDtvQkFDQTtvQkFDQVc7aUJBQ0Q7Z0JBQ0RiLFdBQVc7b0JBQ1QsR0FBRztvQkFDSCxHQUFHO2dCQUNMO2dCQUNBeUIsVUFBVTtvQkFDUkU7b0JBQ0FoQixLQUFLd0IsbUJBQW1CO29CQUN4QnhCLEtBQUtrQixvQkFBb0I7aUJBQzFCO1lBQ0g7WUFDQTtnQkFDRSw2REFBNkQ7Z0JBQzdELHNDQUFzQztnQkFDdENhLGVBQWU7Z0JBQ2Z2QyxXQUFXO1lBQ2I7WUFDQTtnQkFDRUQsT0FBTztvQkFDTCxRQUFRWSxtQkFBbUI7b0JBQzNCSCxLQUFLZ0MsbUJBQW1CO29CQUN4QjtpQkFDRDtnQkFDRDNDLFdBQVc7b0JBQUUsR0FBRztnQkFBaUI7Z0JBQ2pDNEIsVUFBVVQ7Z0JBQ1ZNLFVBQVU7b0JBQ1I7d0JBQ0V6QixXQUFXO3dCQUNYRSxPQUFPO3dCQUNQd0IsS0FBSzt3QkFDTEUsVUFBVVQ7d0JBQ1ZoQixXQUFXO3dCQUNYc0IsVUFBVTs0QkFDUkQ7NEJBQ0FiLEtBQUswQixnQkFBZ0I7NEJBQ3JCMUIsS0FBSzJCLGlCQUFpQjs0QkFDdEJ2Qzs0QkFDQVksS0FBS2tCLG9CQUFvQjt5QkFDMUI7b0JBQ0g7b0JBQ0FsQixLQUFLd0IsbUJBQW1CO29CQUN4QnhCLEtBQUtrQixvQkFBb0I7aUJBQzFCO1lBQ0g7WUFDQTlCO1lBQ0F5QjtTQUNEO0lBQ0g7QUFDRjtBQUUyQiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvamF2YS5qcz8zYjZkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS9zcGVjcy9qbHMvc2UxNS9odG1sL2pscy0zLmh0bWwjamxzLTMuMTBcbnZhciBkZWNpbWFsRGlnaXRzID0gJ1swLTldKF8qWzAtOV0pKic7XG52YXIgZnJhYyA9IGBcXFxcLigke2RlY2ltYWxEaWdpdHN9KWA7XG52YXIgaGV4RGlnaXRzID0gJ1swLTlhLWZBLUZdKF8qWzAtOWEtZkEtRl0pKic7XG52YXIgTlVNRVJJQyA9IHtcbiAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgdmFyaWFudHM6IFtcbiAgICAvLyBEZWNpbWFsRmxvYXRpbmdQb2ludExpdGVyYWxcbiAgICAvLyBpbmNsdWRpbmcgRXhwb25lbnRQYXJ0XG4gICAgeyBiZWdpbjogYChcXFxcYigke2RlY2ltYWxEaWdpdHN9KSgoJHtmcmFjfSl8XFxcXC4pP3woJHtmcmFjfSkpYCArXG4gICAgICBgW2VFXVsrLV0/KCR7ZGVjaW1hbERpZ2l0c30pW2ZGZERdP1xcXFxiYCB9LFxuICAgIC8vIGV4Y2x1ZGluZyBFeHBvbmVudFBhcnRcbiAgICB7IGJlZ2luOiBgXFxcXGIoJHtkZWNpbWFsRGlnaXRzfSkoKCR7ZnJhY30pW2ZGZERdP1xcXFxifFxcXFwuKFtmRmREXVxcXFxiKT8pYCB9LFxuICAgIHsgYmVnaW46IGAoJHtmcmFjfSlbZkZkRF0/XFxcXGJgIH0sXG4gICAgeyBiZWdpbjogYFxcXFxiKCR7ZGVjaW1hbERpZ2l0c30pW2ZGZERdXFxcXGJgIH0sXG5cbiAgICAvLyBIZXhhZGVjaW1hbEZsb2F0aW5nUG9pbnRMaXRlcmFsXG4gICAgeyBiZWdpbjogYFxcXFxiMFt4WF0oKCR7aGV4RGlnaXRzfSlcXFxcLj98KCR7aGV4RGlnaXRzfSk/XFxcXC4oJHtoZXhEaWdpdHN9KSlgICtcbiAgICAgIGBbcFBdWystXT8oJHtkZWNpbWFsRGlnaXRzfSlbZkZkRF0/XFxcXGJgIH0sXG5cbiAgICAvLyBEZWNpbWFsSW50ZWdlckxpdGVyYWxcbiAgICB7IGJlZ2luOiAnXFxcXGIoMHxbMS05XShfKlswLTldKSopW2xMXT9cXFxcYicgfSxcblxuICAgIC8vIEhleEludGVnZXJMaXRlcmFsXG4gICAgeyBiZWdpbjogYFxcXFxiMFt4WF0oJHtoZXhEaWdpdHN9KVtsTF0/XFxcXGJgIH0sXG5cbiAgICAvLyBPY3RhbEludGVnZXJMaXRlcmFsXG4gICAgeyBiZWdpbjogJ1xcXFxiMChfKlswLTddKSpbbExdP1xcXFxiJyB9LFxuXG4gICAgLy8gQmluYXJ5SW50ZWdlckxpdGVyYWxcbiAgICB7IGJlZ2luOiAnXFxcXGIwW2JCXVswMV0oXypbMDFdKSpbbExdP1xcXFxiJyB9LFxuICBdLFxuICByZWxldmFuY2U6IDBcbn07XG5cbi8qXG5MYW5ndWFnZTogSmF2YVxuQXV0aG9yOiBWc2V2b2xvZCBTb2xvdnlvdiA8dnNldm9sb2Quc29sb3Z5b3ZAZ21haWwuY29tPlxuQ2F0ZWdvcnk6IGNvbW1vbiwgZW50ZXJwcmlzZVxuV2Vic2l0ZTogaHR0cHM6Ly93d3cuamF2YS5jb20vXG4qL1xuXG4vKipcbiAqIEFsbG93cyByZWN1cnNpdmUgcmVnZXggZXhwcmVzc2lvbnMgdG8gYSBnaXZlbiBkZXB0aFxuICpcbiAqIGllOiByZWN1clJlZ2V4KFwiKGFiY35+filcIiwgL35+fi9nLCAyKSBiZWNvbWVzOlxuICogKGFiYyhhYmMoYWJjKSkpXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlXG4gKiBAcGFyYW0ge1JlZ0V4cH0gc3Vic3RpdHV0aW9uIChzaG91bGQgYmUgYSBnIG1vZGUgcmVnZXgpXG4gKiBAcGFyYW0ge251bWJlcn0gZGVwdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9YGBcbiAqL1xuZnVuY3Rpb24gcmVjdXJSZWdleChyZSwgc3Vic3RpdHV0aW9uLCBkZXB0aCkge1xuICBpZiAoZGVwdGggPT09IC0xKSByZXR1cm4gXCJcIjtcblxuICByZXR1cm4gcmUucmVwbGFjZShzdWJzdGl0dXRpb24sIF8gPT4ge1xuICAgIHJldHVybiByZWN1clJlZ2V4KHJlLCBzdWJzdGl0dXRpb24sIGRlcHRoIC0gMSk7XG4gIH0pO1xufVxuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gamF2YShobGpzKSB7XG4gIGNvbnN0IHJlZ2V4ID0gaGxqcy5yZWdleDtcbiAgY29uc3QgSkFWQV9JREVOVF9SRSA9ICdbXFx1MDBDMC1cXHUwMkI4YS16QS1aXyRdW1xcdTAwQzAtXFx1MDJCOGEtekEtWl8kMC05XSonO1xuICBjb25zdCBHRU5FUklDX0lERU5UX1JFID0gSkFWQV9JREVOVF9SRVxuICAgICsgcmVjdXJSZWdleCgnKD86PCcgKyBKQVZBX0lERU5UX1JFICsgJ35+fig/OlxcXFxzKixcXFxccyonICsgSkFWQV9JREVOVF9SRSArICd+fn4pKj4pPycsIC9+fn4vZywgMik7XG4gIGNvbnN0IE1BSU5fS0VZV09SRFMgPSBbXG4gICAgJ3N5bmNocm9uaXplZCcsXG4gICAgJ2Fic3RyYWN0JyxcbiAgICAncHJpdmF0ZScsXG4gICAgJ3ZhcicsXG4gICAgJ3N0YXRpYycsXG4gICAgJ2lmJyxcbiAgICAnY29uc3QgJyxcbiAgICAnZm9yJyxcbiAgICAnd2hpbGUnLFxuICAgICdzdHJpY3RmcCcsXG4gICAgJ2ZpbmFsbHknLFxuICAgICdwcm90ZWN0ZWQnLFxuICAgICdpbXBvcnQnLFxuICAgICduYXRpdmUnLFxuICAgICdmaW5hbCcsXG4gICAgJ3ZvaWQnLFxuICAgICdlbnVtJyxcbiAgICAnZWxzZScsXG4gICAgJ2JyZWFrJyxcbiAgICAndHJhbnNpZW50JyxcbiAgICAnY2F0Y2gnLFxuICAgICdpbnN0YW5jZW9mJyxcbiAgICAndm9sYXRpbGUnLFxuICAgICdjYXNlJyxcbiAgICAnYXNzZXJ0JyxcbiAgICAncGFja2FnZScsXG4gICAgJ2RlZmF1bHQnLFxuICAgICdwdWJsaWMnLFxuICAgICd0cnknLFxuICAgICdzd2l0Y2gnLFxuICAgICdjb250aW51ZScsXG4gICAgJ3Rocm93cycsXG4gICAgJ3Byb3RlY3RlZCcsXG4gICAgJ3B1YmxpYycsXG4gICAgJ3ByaXZhdGUnLFxuICAgICdtb2R1bGUnLFxuICAgICdyZXF1aXJlcycsXG4gICAgJ2V4cG9ydHMnLFxuICAgICdkbycsXG4gICAgJ3NlYWxlZCcsXG4gICAgJ3lpZWxkJyxcbiAgICAncGVybWl0cydcbiAgXTtcblxuICBjb25zdCBCVUlMVF9JTlMgPSBbXG4gICAgJ3N1cGVyJyxcbiAgICAndGhpcydcbiAgXTtcblxuICBjb25zdCBMSVRFUkFMUyA9IFtcbiAgICAnZmFsc2UnLFxuICAgICd0cnVlJyxcbiAgICAnbnVsbCdcbiAgXTtcblxuICBjb25zdCBUWVBFUyA9IFtcbiAgICAnY2hhcicsXG4gICAgJ2Jvb2xlYW4nLFxuICAgICdsb25nJyxcbiAgICAnZmxvYXQnLFxuICAgICdpbnQnLFxuICAgICdieXRlJyxcbiAgICAnc2hvcnQnLFxuICAgICdkb3VibGUnXG4gIF07XG5cbiAgY29uc3QgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDogTUFJTl9LRVlXT1JEUyxcbiAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICB0eXBlOiBUWVBFUyxcbiAgICBidWlsdF9pbjogQlVJTFRfSU5TXG4gIH07XG5cbiAgY29uc3QgQU5OT1RBVElPTiA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ0AnICsgSkFWQV9JREVOVF9SRSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbIFwic2VsZlwiIF0gLy8gYWxsb3cgbmVzdGVkICgpIGluc2lkZSBvdXIgYW5ub3RhdGlvblxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgY29uc3QgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogWyBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFIF0sXG4gICAgZW5kc1BhcmVudDogdHJ1ZVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0phdmEnLFxuICAgIGFsaWFzZXM6IFsgJ2pzcCcgXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgaWxsZWdhbDogLzxcXC98Iy8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ09NTUVOVChcbiAgICAgICAgJy9cXFxcKlxcXFwqJyxcbiAgICAgICAgJ1xcXFwqLycsXG4gICAgICAgIHtcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLy8gZWF0IHVwIEAncyBpbiBlbWFpbHMgdG8gcHJldmVudCB0aGVtIHRvIGJlIHJlY29nbml6ZWQgYXMgZG9jdGFnc1xuICAgICAgICAgICAgICBiZWdpbjogL1xcdytALyxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgICBiZWdpbjogJ0BbQS1aYS16XSsnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgLy8gcmVsZXZhbmNlIGJvb3N0XG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvaW1wb3J0IGphdmFcXC5bYS16XStcXC4vLFxuICAgICAgICBrZXl3b3JkczogXCJpbXBvcnRcIixcbiAgICAgICAgcmVsZXZhbmNlOiAyXG4gICAgICB9LFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cIlwiXCIvLFxuICAgICAgICBlbmQ6IC9cIlwiXCIvLFxuICAgICAgICBjbGFzc05hbWU6IFwic3RyaW5nXCIsXG4gICAgICAgIGNvbnRhaW5zOiBbIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSBdXG4gICAgICB9LFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAvXFxiKD86Y2xhc3N8aW50ZXJmYWNlfGVudW18ZXh0ZW5kc3xpbXBsZW1lbnRzfG5ldykvLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICBKQVZBX0lERU5UX1JFXG4gICAgICAgIF0sXG4gICAgICAgIGNsYXNzTmFtZToge1xuICAgICAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgICAgIDM6IFwidGl0bGUuY2xhc3NcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICAvLyBFeGNlcHRpb25zIGZvciBoeXBoZW5hdGVkIGtleXdvcmRzXG4gICAgICAgIG1hdGNoOiAvbm9uLXNlYWxlZC8sXG4gICAgICAgIHNjb3BlOiBcImtleXdvcmRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFtcbiAgICAgICAgICByZWdleC5jb25jYXQoLyg/IWVsc2UpLywgSkFWQV9JREVOVF9SRSksXG4gICAgICAgICAgL1xccysvLFxuICAgICAgICAgIEpBVkFfSURFTlRfUkUsXG4gICAgICAgICAgL1xccysvLFxuICAgICAgICAgIC89KD8hPSkvXG4gICAgICAgIF0sXG4gICAgICAgIGNsYXNzTmFtZToge1xuICAgICAgICAgIDE6IFwidHlwZVwiLFxuICAgICAgICAgIDM6IFwidmFyaWFibGVcIixcbiAgICAgICAgICA1OiBcIm9wZXJhdG9yXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFtcbiAgICAgICAgICAvcmVjb3JkLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgSkFWQV9JREVOVF9SRVxuICAgICAgICBdLFxuICAgICAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgICAgICAzOiBcInRpdGxlLmNsYXNzXCJcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBQQVJBTVMsXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gRXhwcmVzc2lvbiBrZXl3b3JkcyBwcmV2ZW50ICdrZXl3b3JkIE5hbWUoLi4uKScgZnJvbSBiZWluZ1xuICAgICAgICAvLyByZWNvZ25pemVkIGFzIGEgZnVuY3Rpb24gZGVmaW5pdGlvblxuICAgICAgICBiZWdpbktleXdvcmRzOiAnbmV3IHRocm93IHJldHVybiBlbHNlJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogW1xuICAgICAgICAgICcoPzonICsgR0VORVJJQ19JREVOVF9SRSArICdcXFxccyspJyxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICAgICAgL1xccyooPz1cXCgpL1xuICAgICAgICBdLFxuICAgICAgICBjbGFzc05hbWU6IHsgMjogXCJ0aXRsZS5mdW5jdGlvblwiIH0sXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICAgICAgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIEFOTk9UQVRJT04sXG4gICAgICAgICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICAgICAgTlVNRVJJQyxcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIE5VTUVSSUMsXG4gICAgICBBTk5PVEFUSU9OXG4gICAgXVxuICB9O1xufVxuXG5leHBvcnQgeyBqYXZhIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJkZWNpbWFsRGlnaXRzIiwiZnJhYyIsImhleERpZ2l0cyIsIk5VTUVSSUMiLCJjbGFzc05hbWUiLCJ2YXJpYW50cyIsImJlZ2luIiwicmVsZXZhbmNlIiwicmVjdXJSZWdleCIsInJlIiwic3Vic3RpdHV0aW9uIiwiZGVwdGgiLCJyZXBsYWNlIiwiXyIsImphdmEiLCJobGpzIiwicmVnZXgiLCJKQVZBX0lERU5UX1JFIiwiR0VORVJJQ19JREVOVF9SRSIsIk1BSU5fS0VZV09SRFMiLCJCVUlMVF9JTlMiLCJMSVRFUkFMUyIsIlRZUEVTIiwiS0VZV09SRFMiLCJrZXl3b3JkIiwibGl0ZXJhbCIsInR5cGUiLCJidWlsdF9pbiIsIkFOTk9UQVRJT04iLCJjb250YWlucyIsImVuZCIsIlBBUkFNUyIsImtleXdvcmRzIiwiQ19CTE9DS19DT01NRU5UX01PREUiLCJlbmRzUGFyZW50IiwibmFtZSIsImFsaWFzZXMiLCJpbGxlZ2FsIiwiQ09NTUVOVCIsIkNfTElORV9DT01NRU5UX01PREUiLCJCQUNLU0xBU0hfRVNDQVBFIiwiQVBPU19TVFJJTkdfTU9ERSIsIlFVT1RFX1NUUklOR19NT0RFIiwibWF0Y2giLCJzY29wZSIsImNvbmNhdCIsImJlZ2luS2V5d29yZHMiLCJVTkRFUlNDT1JFX0lERU5UX1JFIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/java.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/javascript.js":
/*!**************************************************************!*\
!*** ./node_modules/highlight.js/es/languages/javascript.js ***!
\**************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ javascript)\n/* harmony export */ });\nconst IDENT_RE = \"[A-Za-z$_][0-9A-Za-z$_]*\";\nconst KEYWORDS = [\n \"as\",\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n \"require\",\n \"exports\",\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"module\",\n \"global\" // Node.js\n];\nconst BUILT_INS = [].concat(BUILT_IN_GLOBALS, TYPES, ERROR_TYPES);\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/ /** @type LanguageFn */ function javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */ const hasClosingTag = (match, { after })=>{\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: \"<>\",\n end: \"</>\"\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */ isTrulyOpeningTag: (match, response)=>{\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (// HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" || // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\") {\n response.ignoreMatch();\n return;\n }\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, {\n after: afterMatchIndex\n })) {\n response.ignoreMatch();\n }\n }\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if (m = afterMatch.match(/^\\s*=/)) {\n response.ignoreMatch();\n return;\n }\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if (m = afterMatch.match(/^\\s+extends\\s+/)) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = \"[0-9](_?[0-9])*\";\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: \"number\",\n variants: [\n // DecimalLiteral\n {\n begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` + `[eE][+-]?(${decimalDigits})\\\\b`\n },\n {\n begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b`\n },\n // DecimalBigIntegerLiteral\n {\n begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b`\n },\n // NonDecimalIntegerLiteral\n {\n begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\"\n },\n {\n begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\"\n },\n {\n begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\"\n },\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n {\n begin: \"\\\\b0[0-7]+n?\\\\b\"\n }\n ],\n relevance: 0\n };\n const SUBST = {\n className: \"subst\",\n begin: \"\\\\$\\\\{\",\n end: \"\\\\}\",\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: \"html`\",\n end: \"\",\n starts: {\n end: \"`\",\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: \"xml\"\n }\n };\n const CSS_TEMPLATE = {\n begin: \"css`\",\n end: \"\",\n starts: {\n end: \"`\",\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: \"css\"\n }\n };\n const TEMPLATE_STRING = {\n className: \"string\",\n begin: \"`\",\n end: \"`\",\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(/\\/\\*\\*(?!\\/)/, \"\\\\*/\", {\n relevance: 0,\n contains: [\n {\n begin: \"(?=@[A-Za-z]+)\",\n relevance: 0,\n contains: [\n {\n className: \"doctag\",\n begin: \"@[A-Za-z]+\"\n },\n {\n className: \"type\",\n begin: \"\\\\{\",\n end: \"\\\\}\",\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: \"variable\",\n begin: IDENT_RE$1 + \"(?=\\\\s*(-)|$)\",\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n });\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n {\n match: /\\$\\d+/\n },\n NUMBER\n ];\n SUBST.contains = SUBST_INTERNALS.concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n }\n ]\n };\n const CLASS_REFERENCE = {\n relevance: 0,\n match: regex.either(// Hard coded exceptions\n /\\bJSON/, // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/, // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/, // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n const USE_STRICT = {\n label: \"use_strict\",\n className: \"meta\",\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [\n PARAMS\n ],\n illegal: /%/\n };\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n const FUNCTION_CALL = {\n match: regex.concat(/\\b/, noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ]), IDENT_RE$1, regex.lookahead(/\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/))),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n {\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n const FUNC_LEAD_IN_RE = \"(\\\\(\" + \"[^()]*(\\\\(\" + \"[^()]*(\\\\(\" + \"[^()]*\" + \"\\\\)[^()]*)*\" + \"\\\\)[^()]*)*\" + \"\\\\)|\" + hljs.UNDERSCORE_IDENT_RE + \")\\\\s*=>\";\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/,\n /\\s+/,\n IDENT_RE$1,\n /\\s*/,\n /=\\s*/,\n /(async\\s*)?/,\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n return {\n name: \"Javascript\",\n aliases: [\n \"js\",\n \"jsx\",\n \"mjs\",\n \"cjs\"\n ],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: {\n PARAMS_CONTAINS,\n CLASS_REFERENCE\n },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n {\n match: /\\$\\d+/\n },\n NUMBER,\n CLASS_REFERENCE,\n {\n className: \"attr\",\n begin: IDENT_RE$1 + regex.lookahead(\":\"),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n {\n begin: \"(\" + hljs.RE_STARTERS_RE + \"|\\\\b(case|return|throw)\\\\b)\\\\s*\",\n keywords: \"return throw case\",\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: \"function\",\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: \"\\\\s*=>\",\n contains: [\n {\n className: \"params\",\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n {\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n {\n variants: [\n {\n begin: FRAGMENT.begin,\n end: FRAGMENT.end\n },\n {\n match: XML_SELF_CLOSING\n },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n \"on:begin\": XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: \"xml\",\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: [\n \"self\"\n ]\n }\n ]\n }\n ]\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: \"\\\\b(?!function)\" + hljs.UNDERSCORE_IDENT_RE + \"\\\\(\" + // first parens\n \"[^()]*(\\\\(\" + \"[^()]*(\\\\(\" + \"[^()]*\" + \"\\\\)[^()]*)*\" + \"\\\\)[^()]*)*\" + \"\\\\)\\\\s*\\\\{\",\n returnBegin: true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, {\n begin: IDENT_RE$1,\n className: \"title.function\"\n })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: \"\\\\$\" + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [\n /\\bconstructor(?=\\s*\\()/\n ],\n className: {\n 1: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9qYXZhc2NyaXB0LmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNQSxXQUFXO0FBQ2pCLE1BQU1DLFdBQVc7SUFDZjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSx1Q0FBdUM7SUFDdkMsU0FBUztJQUNULFNBQVM7SUFDVDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFDRCxNQUFNQyxXQUFXO0lBQ2Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFRCxtRkFBbUY7QUFDbkYsTUFBTUMsUUFBUTtJQUNaLHNCQUFzQjtJQUN0QjtJQUNBO0lBQ0E7SUFDQTtJQUNBLG9CQUFvQjtJQUNwQjtJQUNBO0lBQ0E7SUFDQTtJQUNBLE9BQU87SUFDUDtJQUNBO0lBQ0Esc0JBQXNCO0lBQ3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLG9CQUFvQjtJQUNwQjtJQUNBO0lBQ0E7SUFDQTtJQUNBLGtCQUFrQjtJQUNsQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsOEJBQThCO0lBQzlCO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsYUFBYTtJQUNiO0lBQ0E7SUFDQSx1QkFBdUI7SUFDdkI7SUFDQSxjQUFjO0lBQ2Q7Q0FDRDtBQUVELE1BQU1DLGNBQWM7SUFDbEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsTUFBTUMsbUJBQW1CO0lBQ3ZCO0lBQ0E7SUFDQTtJQUNBO0lBRUE7SUFDQTtJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFD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O2dCQUNqQ0ssVUFBVTtvQkFBRW9CO2lCQUFRO1lBQ3RCO1lBQ0FjO1lBQ0FKO1lBQ0FUO1lBQ0FnQjtZQUNBO2dCQUNFMUUsT0FBTyxTQUFTLHNGQUFzRjtZQUN4RztTQUNEO0lBQ0g7QUFDRjtBQUVpQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvamF2YXNjcmlwdC5qcz9jYzE5Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IElERU5UX1JFID0gJ1tBLVphLXokX11bMC05QS1aYS16JF9dKic7XG5jb25zdCBLRVlXT1JEUyA9IFtcbiAgXCJhc1wiLCAvLyBmb3IgZXhwb3J0c1xuICBcImluXCIsXG4gIFwib2ZcIixcbiAgXCJpZlwiLFxuICBcImZvclwiLFxuICBcIndoaWxlXCIsXG4gIFwiZmluYWxseVwiLFxuICBcInZhclwiLFxuICBcIm5ld1wiLFxuICBcImZ1bmN0aW9uXCIsXG4gIFwiZG9cIixcbiAgXCJyZXR1cm5cIixcbiAgXCJ2b2lkXCIsXG4gIFwiZWxzZVwiLFxuICBcImJyZWFrXCIsXG4gIFwiY2F0Y2hcIixcbiAgXCJpbnN0YW5jZW9mXCIsXG4gIFwid2l0aFwiLFxuICBcInRocm93XCIsXG4gIFwiY2FzZVwiLFxuICBcImRlZmF1bHRcIixcbiAgXCJ0cnlcIixcbiAgXCJzd2l0Y2hcIixcbiAgXCJjb250aW51ZVwiLFxuICBcInR5cGVvZlwiLFxuICBcImRlbGV0ZVwiLFxuICBcImxldFwiLFxuICBcInlpZWxkXCIsXG4gIFwiY29uc3RcIixcbiAgXCJjbGFzc1wiLFxuICAvLyBKUyBoYW5kbGVzIHRoZXNlIHdpdGggYSBzcGVjaWFsIHJ1bGVcbiAgLy8gXCJnZXRcIixcbiAgLy8gXCJzZXRcIixcbiAgXCJkZWJ1Z2dlclwiLFxuICBcImFzeW5jXCIsXG4gIFwiYXdhaXRcIixcbiAgXCJzdGF0aWNcIixcbiAgXCJpbXBvcnRcIixcbiAgXCJmcm9tXCIsXG4gIFwiZXhwb3J0XCIsXG4gIFwiZXh0ZW5kc1wiXG5dO1xuY29uc3QgTElURVJBTFMgPSBbXG4gIFwidHJ1ZVwiLFxuICBcImZhbHNlXCIsXG4gIFwibnVsbFwiLFxuICBcInVuZGVmaW5lZFwiLFxuICBcIk5hTlwiLFxuICBcIkluZmluaXR5XCJcbl07XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzXG5jb25zdCBUWVBFUyA9IFtcbiAgLy8gRnVuZGFtZW50YWwgb2JqZWN0c1xuICBcIk9iamVjdFwiLFxuICBcIkZ1bmN0aW9uXCIsXG4gIFwiQm9vbGVhblwiLFxuICBcIlN5bWJvbFwiLFxuICAvLyBudW1iZXJzIGFuZCBkYXRlc1xuICBcIk1hdGhcIixcbiAgXCJEYXRlXCIsXG4gIFwiTnVtYmVyXCIsXG4gIFwiQmlnSW50XCIsXG4gIC8vIHRleHRcbiAgXCJTdHJpbmdcIixcbiAgXCJSZWdFeHBcIixcbiAgLy8gSW5kZXhlZCBjb2xsZWN0aW9uc1xuICBcIkFycmF5XCIsXG4gIFwiRmxvYXQzMkFycmF5XCIsXG4gIFwiRmxvYXQ2NEFycmF5XCIsXG4gIFwiSW50OEFycmF5XCIsXG4gIFwiVWludDhBcnJheVwiLFxuICBcIlVpbnQ4Q2xhbXBlZEFycmF5XCIsXG4gIFwiSW50MTZBcnJheVwiLFxuICBcIkludDMyQXJyYXlcIixcbiAgXCJVaW50MTZBcnJheVwiLFxuICBcIlVpbnQzMkFycmF5XCIsXG4gIFwiQmlnSW50NjRBcnJheVwiLFxuICBcIkJpZ1VpbnQ2NEFycmF5XCIsXG4gIC8vIEtleWVkIGNvbGxlY3Rpb25zXG4gIFwiU2V0XCIsXG4gIFwiTWFwXCIsXG4gIFwiV2Vha1NldFwiLFxuICBcIldlYWtNYXBcIixcbiAgLy8gU3RydWN0dXJlZCBkYXRhXG4gIFwiQXJyYXlCdWZmZXJcIixcbiAgXCJTaGFyZWRBcnJheUJ1ZmZlclwiLFxuICBcIkF0b21pY3NcIixcbiAgXCJEYXRhVmlld1wiLFxuICBcIkpTT05cIixcbiAgLy8gQ29udHJvbCBhYnN0cmFjdGlvbiBvYmplY3RzXG4gIFwiUHJvbWlzZVwiLFxuICBcIkdlbmVyYXRvclwiLFxuICBcIkdlbmVyYXRvckZ1bmN0aW9uXCIsXG4gIFwiQXN5bmNGdW5jdGlvblwiLFxuICAvLyBSZWZsZWN0aW9uXG4gIFwiUmVmbGVjdFwiLFxuICBcIlByb3h5XCIsXG4gIC8vIEludGVybmF0aW9uYWxpemF0aW9uXG4gIFwiSW50bFwiLFxuICAvLyBXZWJBc3NlbWJseVxuICBcIldlYkFzc2VtYmx5XCJcbl07XG5cbmNvbnN0IEVSUk9SX1RZUEVTID0gW1xuICBcIkVycm9yXCIsXG4gIFwiRXZhbEVycm9yXCIsXG4gIFwiSW50ZXJuYWxFcnJvclwiLFxuICBcIlJhbmdlRXJyb3JcIixcbiAgXCJSZWZlcmVuY2VFcnJvclwiLFxuICBcIlN5bnRheEVycm9yXCIsXG4gIFwiVHlwZUVycm9yXCIsXG4gIFwiVVJJRXJyb3JcIlxuXTtcblxuY29uc3QgQlVJTFRfSU5fR0xPQkFMUyA9IFtcbiAgXCJzZXRJbnRlcnZhbFwiLFxuICBcInNldFRpbWVvdXRcIixcbiAgXCJjbGVhckludGVydmFsXCIsXG4gIFwiY2xlYXJUaW1lb3V0XCIsXG5cbiAgXCJyZXF1aXJlXCIsXG4gIFwiZXhwb3J0c1wiLFxuXG4gIFwiZXZhbFwiLFxuICBcImlzRmluaXRlXCIsXG4gIFwiaXNOYU5cIixcbiAgXCJwYXJzZUZsb2F0XCIsXG4gIFwicGFyc2VJbnRcIixcbiAgXCJkZWNvZGVVUklcIixcbiAgXCJkZWNvZGVVUklDb21wb25lbnRcIixcbiAgXCJlbmNvZGVVUklcIixcbiAgXCJlbmNvZGVVUklDb21wb25lbnRcIixcbiAgXCJlc2NhcGVcIixcbiAgXCJ1bmVzY2FwZVwiXG5dO1xuXG5jb25zdCBCVUlMVF9JTl9WQVJJQUJMRVMgPSBbXG4gIFwiYXJndW1lbnRzXCIsXG4gIFwidGhpc1wiLFxuICBcInN1cGVyXCIsXG4gIFwiY29uc29sZVwiLFxuICBcIndpbmRvd1wiLFxuICBcImRvY3VtZW50XCIsXG4gIFwibG9jYWxTdG9yYWdlXCIsXG4gIFwibW9kdWxlXCIsXG4gIFwiZ2xvYmFsXCIgLy8gTm9kZS5qc1xuXTtcblxuY29uc3QgQlVJTFRfSU5TID0gW10uY29uY2F0KFxuICBCVUlMVF9JTl9HTE9CQUxTLFxuICBUWVBFUyxcbiAgRVJST1JfVFlQRVNcbik7XG5cbi8qXG5MYW5ndWFnZTogSmF2YVNjcmlwdFxuRGVzY3JpcHRpb246IEphdmFTY3JpcHQgKEpTKSBpcyBhIGxpZ2h0d2VpZ2h0LCBpbnRlcnByZXRlZCwgb3IganVzdC1pbi10aW1lIGNvbXBpbGVkIHByb2dyYW1taW5nIGxhbmd1YWdlIHdpdGggZmlyc3QtY2xhc3MgZnVuY3Rpb25zLlxuQ2F0ZWdvcnk6IGNvbW1vbiwgc2NyaXB0aW5nLCB3ZWJcbldlYnNpdGU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHRcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiBqYXZhc2NyaXB0KGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICAvKipcbiAgICogVGFrZXMgYSBzdHJpbmcgbGlrZSBcIjxCb29nZXJcIiBhbmQgY2hlY2tzIHRvIHNlZVxuICAgKiBpZiB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIFwiPC9Cb29nZXJcIiBsYXRlciBpbiB0aGVcbiAgICogY29udGVudC5cbiAgICogQHBhcmFtIHtSZWdFeHBNYXRjaEFycmF5fSBtYXRjaFxuICAgKiBAcGFyYW0ge3thZnRlcjpudW1iZXJ9fSBwYXJhbTFcbiAgICovXG4gIGNvbnN0IGhhc0Nsb3NpbmdUYWcgPSAobWF0Y2gsIHsgYWZ0ZXIgfSkgPT4ge1xuICAgIGNvbnN0IHRhZyA9IFwiPC9cIiArIG1hdGNoWzBdLnNsaWNlKDEpO1xuICAgIGNvbnN0IHBvcyA9IG1hdGNoLmlucHV0LmluZGV4T2YodGFnLCBhZnRlcik7XG4gICAgcmV0dXJuIHBvcyAhPT0gLTE7XG4gIH07XG5cbiAgY29uc3QgSURFTlRfUkUkMSA9IElERU5UX1JFO1xuICBjb25zdCBGUkFHTUVOVCA9IHtcbiAgICBiZWdpbjogJzw+JyxcbiAgICBlbmQ6ICc8Lz4nXG4gIH07XG4gIC8vIHRvIGF2b2lkIHNvbWUgc3BlY2lhbCBjYXNlcyBpbnNpZGUgaXNUcnVseU9wZW5pbmdUYWdcbiAgY29uc3QgWE1MX1NFTEZfQ0xPU0lORyA9IC88W0EtWmEtejAtOVxcXFwuXzotXStcXHMqXFwvPi87XG4gIGNvbnN0IFhNTF9UQUcgPSB7XG4gICAgYmVnaW46IC88W0EtWmEtejAtOVxcXFwuXzotXSsvLFxuICAgIGVuZDogL1xcL1tBLVphLXowLTlcXFxcLl86LV0rPnxcXC8+LyxcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cE1hdGNoQXJyYXl9IG1hdGNoXG4gICAgICogQHBhcmFtIHtDYWxsYmFja1Jlc3BvbnNlfSByZXNwb25zZVxuICAgICAqL1xuICAgIGlzVHJ1bHlPcGVuaW5nVGFnOiAobWF0Y2gsIHJlc3BvbnNlKSA9PiB7XG4gICAgICBjb25zdCBhZnRlck1hdGNoSW5kZXggPSBtYXRjaFswXS5sZW5ndGggKyBtYXRjaC5pbmRleDtcbiAgICAgIGNvbnN0IG5leHRDaGFyID0gbWF0Y2guaW5wdXRbYWZ0ZXJNYXRjaEluZGV4XTtcbiAgICAgIGlmIChcbiAgICAgICAgLy8gSFRNTCBzaG91bGQgbm90IGluY2x1ZGUgYW5vdGhlciByYXcgYDxgIGluc2lkZSBhIHRhZ1xuICAgICAgICAvLyBuZXN0ZWQgdHlwZT9cbiAgICAgICAgLy8gYDxBcnJheTxBcnJheTxudW1iZXI+PmAsIGV0Yy5cbiAgICAgICAgbmV4dENoYXIgPT09IFwiPFwiIHx8XG4gICAgICAgIC8vIHRoZSAsIGdpdmVzIGF3YXkgdGhhdCB0aGlzIGlzIG5vdCBIVE1MXG4gICAgICAgIC8vIGA8VCwgQSBleHRlbmRzIGtleW9mIFQsIFY+YFxuICAgICAgICBuZXh0Q2hhciA9PT0gXCIsXCJcbiAgICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlLmlnbm9yZU1hdGNoKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gYDxzb21ldGhpbmc+YFxuICAgICAgLy8gUXVpdGUgcG9zc2libHkgYSB0YWcsIGxldHMgbG9vayBmb3IgYSBtYXRjaGluZyBjbG9zaW5nIHRhZy4uLlxuICAgICAgaWYgKG5leHRDaGFyID09PSBcIj5cIikge1xuICAgICAgICAvLyBpZiB3ZSBjYW5ub3QgZmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgdGFnLCB0aGVuIHdlXG4gICAgICAgIC8vIHdpbGwgaWdub3JlIGl0XG4gICAgICAgIGlmICghaGFzQ2xvc2luZ1RhZyhtYXRjaCwgeyBhZnRlcjogYWZ0ZXJNYXRjaEluZGV4IH0pKSB7XG4gICAgICAgICAgcmVzcG9uc2UuaWdub3JlTWF0Y2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBgPGJsYWggLz5gIChzZWxmLWNsb3NpbmcpXG4gICAgICAvLyBoYW5kbGVkIGJ5IHNpbXBsZVNlbGZDbG9zaW5nIHJ1bGVcblxuICAgICAgbGV0IG07XG4gICAgICBjb25zdCBhZnRlck1hdGNoID0gbWF0Y2guaW5wdXQuc3Vic3RyaW5nKGFmdGVyTWF0Y2hJbmRleCk7XG5cbiAgICAgIC8vIHNvbWUgbW9yZSB0ZW1wbGF0ZSB0eXBpbmcgc3R1ZmZcbiAgICAgIC8vICA8VCA9IGFueT4oa2V5Pzogc3RyaW5nKSA9PiBNb2RpZnk8XG4gICAgICBpZiAoKG0gPSBhZnRlck1hdGNoLm1hdGNoKC9eXFxzKj0vKSkpIHtcbiAgICAgICAgcmVzcG9uc2UuaWdub3JlTWF0Y2goKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBgPEZyb20gZXh0ZW5kcyBzdHJpbmc+YFxuICAgICAgLy8gdGVjaG5pY2FsbHkgdGhpcyBjb3VsZCBiZSBIVE1MLCBidXQgaXQgc21lbGxzIGxpa2UgYSB0eXBlXG4gICAgICAvLyBOT1RFOiBUaGlzIGlzIHVnaCwgYnV0IGFkZGVkIHNwZWNpZmljYWxseSBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMzI3NlxuICAgICAgaWYgKChtID0gYWZ0ZXJNYXRjaC5tYXRjaCgvXlxccytleHRlbmRzXFxzKy8pKSkge1xuICAgICAgICBpZiAobS5pbmRleCA9PT0gMCkge1xuICAgICAgICAgIHJlc3BvbnNlLmlnbm9yZU1hdGNoKCk7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtcmV0dXJuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBjb25zdCBLRVlXT1JEUyQxID0ge1xuICAgICRwYXR0ZXJuOiBJREVOVF9SRSxcbiAgICBrZXl3b3JkOiBLRVlXT1JEUyxcbiAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICBidWlsdF9pbjogQlVJTFRfSU5TLFxuICAgIFwidmFyaWFibGUubGFuZ3VhZ2VcIjogQlVJTFRfSU5fVkFSSUFCTEVTXG4gIH07XG5cbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1saXRlcmFscy1udW1lcmljLWxpdGVyYWxzXG4gIGNvbnN0IGRlY2ltYWxEaWdpdHMgPSAnWzAtOV0oXz9bMC05XSkqJztcbiAgY29uc3QgZnJhYyA9IGBcXFxcLigke2RlY2ltYWxEaWdpdHN9KWA7XG4gIC8vIERlY2ltYWxJbnRlZ2VyTGl0ZXJhbCwgaW5jbHVkaW5nIEFubmV4IEIgTm9uT2N0YWxEZWNpbWFsSW50ZWdlckxpdGVyYWxcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hZGRpdGlvbmFsLXN5bnRheC1udW1lcmljLWxpdGVyYWxzXG4gIGNvbnN0IGRlY2ltYWxJbnRlZ2VyID0gYDB8WzEtOV0oXz9bMC05XSkqfDBbMC03XSpbODldWzAtOV0qYDtcbiAgY29uc3QgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIC8vIERlY2ltYWxMaXRlcmFsXG4gICAgICB7IGJlZ2luOiBgKFxcXFxiKCR7ZGVjaW1hbEludGVnZXJ9KSgoJHtmcmFjfSl8XFxcXC4pP3woJHtmcmFjfSkpYCArXG4gICAgICAgIGBbZUVdWystXT8oJHtkZWNpbWFsRGlnaXRzfSlcXFxcYmAgfSxcbiAgICAgIHsgYmVnaW46IGBcXFxcYigke2RlY2ltYWxJbnRlZ2VyfSlcXFxcYigoJHtmcmFjfSlcXFxcYnxcXFxcLik/fCgke2ZyYWN9KVxcXFxiYCB9LFxuXG4gICAgICAvLyBEZWNpbWFsQmlnSW50ZWdlckxpdGVyYWxcbiAgICAgIHsgYmVnaW46IGBcXFxcYigwfFsxLTldKF8/WzAtOV0pKiluXFxcXGJgIH0sXG5cbiAgICAgIC8vIE5vbkRlY2ltYWxJbnRlZ2VyTGl0ZXJhbFxuICAgICAgeyBiZWdpbjogXCJcXFxcYjBbeFhdWzAtOWEtZkEtRl0oXz9bMC05YS1mQS1GXSkqbj9cXFxcYlwiIH0sXG4gICAgICB7IGJlZ2luOiBcIlxcXFxiMFtiQl1bMC0xXShfP1swLTFdKSpuP1xcXFxiXCIgfSxcbiAgICAgIHsgYmVnaW46IFwiXFxcXGIwW29PXVswLTddKF8/WzAtN10pKm4/XFxcXGJcIiB9LFxuXG4gICAgICAvLyBMZWdhY3lPY3RhbEludGVnZXJMaXRlcmFsIChkb2VzIG5vdCBpbmNsdWRlIHVuZGVyc2NvcmUgc2VwYXJhdG9ycylcbiAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYWRkaXRpb25hbC1zeW50YXgtbnVtZXJpYy1saXRlcmFsc1xuICAgICAgeyBiZWdpbjogXCJcXFxcYjBbMC03XStuP1xcXFxiXCIgfSxcbiAgICBdLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IFNVQlNUID0ge1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBiZWdpbjogJ1xcXFwkXFxcXHsnLFxuICAgIGVuZDogJ1xcXFx9JyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMkMSxcbiAgICBjb250YWluczogW10gLy8gZGVmaW5lZCBsYXRlclxuICB9O1xuICBjb25zdCBIVE1MX1RFTVBMQVRFID0ge1xuICAgIGJlZ2luOiAnaHRtbGAnLFxuICAgIGVuZDogJycsXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdgJyxcbiAgICAgIHJldHVybkVuZDogZmFsc2UsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgIFNVQlNUXG4gICAgICBdLFxuICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnXG4gICAgfVxuICB9O1xuICBjb25zdCBDU1NfVEVNUExBVEUgPSB7XG4gICAgYmVnaW46ICdjc3NgJyxcbiAgICBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsXG4gICAgICByZXR1cm5FbmQ6IGZhbHNlLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICBTVUJTVFxuICAgICAgXSxcbiAgICAgIHN1Ykxhbmd1YWdlOiAnY3NzJ1xuICAgIH1cbiAgfTtcbiAgY29uc3QgVEVNUExBVEVfU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgYmVnaW46ICdgJyxcbiAgICBlbmQ6ICdgJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgU1VCU1RcbiAgICBdXG4gIH07XG4gIGNvbnN0IEpTRE9DX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoXG4gICAgL1xcL1xcKlxcKig/IVxcLykvLFxuICAgICdcXFxcKi8nLFxuICAgIHtcbiAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJyg/PUBbQS1aYS16XSspJyxcbiAgICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnZG9jdGFnJyxcbiAgICAgICAgICAgICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICAgIGJlZ2luOiAnXFxcXHsnLFxuICAgICAgICAgICAgICBlbmQ6ICdcXFxcfScsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICAgIGJlZ2luOiBJREVOVF9SRSQxICsgJyg/PVxcXFxzKigtKXwkKScsXG4gICAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGVhdCBzcGFjZXMgKG5vdCBuZXdsaW5lcykgc28gd2UgY2FuIGZpbmRcbiAgICAgICAgICAgIC8vIHR5cGVzIG9yIHZhcmlhYmxlc1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogLyg/PVteXFxuXSlcXHMvLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gICk7XG4gIGNvbnN0IENPTU1FTlQgPSB7XG4gICAgY2xhc3NOYW1lOiBcImNvbW1lbnRcIixcbiAgICB2YXJpYW50czogW1xuICAgICAgSlNET0NfQ09NTUVOVCxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREVcbiAgICBdXG4gIH07XG4gIGNvbnN0IFNVQlNUX0lOVEVSTkFMUyA9IFtcbiAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICBIVE1MX1RFTVBMQVRFLFxuICAgIENTU19URU1QTEFURSxcbiAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgLy8gU2tpcCBudW1iZXJzIHdoZW4gdGhleSBhcmUgcGFydCBvZiBhIHZhcmlhYmxlIG5hbWVcbiAgICB7IG1hdGNoOiAvXFwkXFxkKy8gfSxcbiAgICBOVU1CRVIsXG4gICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbDpcbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2hpZ2hsaWdodGpzL2hpZ2hsaWdodC5qcy9pc3N1ZXMvMzI4OFxuICAgIC8vIGhsanMuUkVHRVhQX01PREVcbiAgXTtcbiAgU1VCU1QuY29udGFpbnMgPSBTVUJTVF9JTlRFUk5BTFNcbiAgICAuY29uY2F0KHtcbiAgICAgIC8vIHdlIG5lZWQgdG8gcGFpciB1cCB7fSBpbnNpZGUgb3VyIHN1YnN0IHRvIHByZXZlbnRcbiAgICAgIC8vIGl0IGZyb20gZW5kaW5nIHRvbyBlYXJseSBieSBtYXRjaGluZyBhbm90aGVyIH1cbiAgICAgIGJlZ2luOiAvXFx7LyxcbiAgICAgIGVuZDogL1xcfS8sXG4gICAgICBrZXl3b3JkczogS0VZV09SRFMkMSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIFwic2VsZlwiXG4gICAgICBdLmNvbmNhdChTVUJTVF9JTlRFUk5BTFMpXG4gICAgfSk7XG4gIGNvbnN0IFNVQlNUX0FORF9DT01NRU5UUyA9IFtdLmNvbmNhdChDT01NRU5ULCBTVUJTVC5jb250YWlucyk7XG4gIGNvbnN0IFBBUkFNU19DT05UQUlOUyA9IFNVQlNUX0FORF9DT01NRU5UUy5jb25jYXQoW1xuICAgIC8vIGVhdCByZWN1cnNpdmUgcGFyZW5zIGluIHN1YiBleHByZXNzaW9uc1xuICAgIHtcbiAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgIGVuZDogL1xcKS8sXG4gICAgICBrZXl3b3JkczogS0VZV09SRFMkMSxcbiAgICAgIGNvbnRhaW5zOiBbXCJzZWxmXCJdLmNvbmNhdChTVUJTVF9BTkRfQ09NTUVOVFMpXG4gICAgfVxuICBdKTtcbiAgY29uc3QgUEFSQU1TID0ge1xuICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTJDEsXG4gICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICB9O1xuXG4gIC8vIEVTNiBjbGFzc2VzXG4gIGNvbnN0IENMQVNTX09SX0VYVEVORFMgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIC8vIGNsYXNzIENhciBleHRlbmRzIHZlaGljbGVcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAvY2xhc3MvLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICBJREVOVF9SRSQxLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICAvZXh0ZW5kcy8sXG4gICAgICAgICAgL1xccysvLFxuICAgICAgICAgIHJlZ2V4LmNvbmNhdChJREVOVF9SRSQxLCBcIihcIiwgcmVnZXguY29uY2F0KC9cXC4vLCBJREVOVF9SRSQxKSwgXCIpKlwiKVxuICAgICAgICBdLFxuICAgICAgICBzY29wZToge1xuICAgICAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgICAgIDM6IFwidGl0bGUuY2xhc3NcIixcbiAgICAgICAgICA1OiBcImtleXdvcmRcIixcbiAgICAgICAgICA3OiBcInRpdGxlLmNsYXNzLmluaGVyaXRlZFwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBjbGFzcyBDYXJcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAvY2xhc3MvLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICBJREVOVF9SRSQxXG4gICAgICAgIF0sXG4gICAgICAgIHNjb3BlOiB7XG4gICAgICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAgICAgMzogXCJ0aXRsZS5jbGFzc1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICBdXG4gIH07XG5cbiAgY29uc3QgQ0xBU1NfUkVGRVJFTkNFID0ge1xuICAgIHJlbGV2YW5jZTogMCxcbiAgICBtYXRjaDpcbiAgICByZWdleC5laXRoZXIoXG4gICAgICAvLyBIYXJkIGNvZGVkIGV4Y2VwdGlvbnNcbiAgICAgIC9cXGJKU09OLyxcbiAgICAgIC8vIEZsb2F0MzJBcnJheSwgT3V0VFxuICAgICAgL1xcYltBLVpdW2Etel0rKFtBLVpdW2Etel0qfFxcZCkqLyxcbiAgICAgIC8vIENTU0ZhY3RvcnksIENTU0ZhY3RvcnlUXG4gICAgICAvXFxiW0EtWl17Mix9KFtBLVpdW2Etel0rfFxcZCkrKFtBLVpdW2Etel0qKSovLFxuICAgICAgLy8gRlBzLCBGUHNUXG4gICAgICAvXFxiW0EtWl17Mix9W2Etel0rKFtBLVpdW2Etel0rfFxcZCkqKFtBLVpdW2Etel0qKSovLFxuICAgICAgLy8gUFxuICAgICAgLy8gc2luZ2xlIGxldHRlcnMgYXJlIG5vdCBoaWdobGlnaHRlZFxuICAgICAgLy8gQkxBSFxuICAgICAgLy8gdGhpcyB3aWxsIGJlIGZsYWdnZWQgYXMgYSBVUFBFUl9DQVNFX0NPTlNUQU5UIGluc3RlYWRcbiAgICApLFxuICAgIGNsYXNzTmFtZTogXCJ0aXRsZS5jbGFzc1wiLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBfOiBbXG4gICAgICAgIC8vIHNlIHdlIHN0aWxsIGdldCByZWxldmFuY2UgY3JlZGl0IGZvciBKUyBsaWJyYXJ5IGNsYXNzZXNcbiAgICAgICAgLi4uVFlQRVMsXG4gICAgICAgIC4uLkVSUk9SX1RZUEVTXG4gICAgICBdXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFVTRV9TVFJJQ1QgPSB7XG4gICAgbGFiZWw6IFwidXNlX3N0cmljdFwiLFxuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIHJlbGV2YW5jZTogMTAsXG4gICAgYmVnaW46IC9eXFxzKlsnXCJddXNlIChzdHJpY3R8YXNtKVsnXCJdL1xuICB9O1xuXG4gIGNvbnN0IEZVTkNUSU9OX0RFRklOSVRJT04gPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAvZnVuY3Rpb24vLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICBJREVOVF9SRSQxLFxuICAgICAgICAgIC8oPz1cXHMqXFwoKS9cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGFub255bW91cyBmdW5jdGlvblxuICAgICAge1xuICAgICAgICBtYXRjaDogW1xuICAgICAgICAgIC9mdW5jdGlvbi8sXG4gICAgICAgICAgL1xccyooPz1cXCgpL1xuICAgICAgICBdXG4gICAgICB9XG4gICAgXSxcbiAgICBjbGFzc05hbWU6IHtcbiAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgMzogXCJ0aXRsZS5mdW5jdGlvblwiXG4gICAgfSxcbiAgICBsYWJlbDogXCJmdW5jLmRlZlwiLFxuICAgIGNvbnRhaW5zOiBbIFBBUkFNUyBdLFxuICAgIGlsbGVnYWw6IC8lL1xuICB9O1xuXG4gIGNvbnN0IFVQUEVSX0NBU0VfQ09OU1RBTlQgPSB7XG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIG1hdGNoOiAvXFxiW0EtWl1bQS1aXzAtOV0rXFxiLyxcbiAgICBjbGFzc05hbWU6IFwidmFyaWFibGUuY29uc3RhbnRcIlxuICB9O1xuXG4gIGZ1bmN0aW9uIG5vbmVPZihsaXN0KSB7XG4gICAgcmV0dXJuIHJlZ2V4LmNvbmNhdChcIig/IVwiLCBsaXN0LmpvaW4oXCJ8XCIpLCBcIilcIik7XG4gIH1cblxuICBjb25zdCBGVU5DVElPTl9DQUxMID0ge1xuICAgIG1hdGNoOiByZWdleC5jb25jYXQoXG4gICAgICAvXFxiLyxcbiAgICAgIG5vbmVPZihbXG4gICAgICAgIC4uLkJVSUxUX0lOX0dMT0JBTFMsXG4gICAgICAgIFwic3VwZXJcIixcbiAgICAgICAgXCJpbXBvcnRcIlxuICAgICAgXSksXG4gICAgICBJREVOVF9SRSQxLCByZWdleC5sb29rYWhlYWQoL1xcKC8pKSxcbiAgICBjbGFzc05hbWU6IFwidGl0bGUuZnVuY3Rpb25cIixcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBQUk9QRVJUWV9BQ0NFU1MgPSB7XG4gICAgYmVnaW46IHJlZ2V4LmNvbmNhdCgvXFwuLywgcmVnZXgubG9va2FoZWFkKFxuICAgICAgcmVnZXguY29uY2F0KElERU5UX1JFJDEsIC8oPyFbMC05QS1aYS16JF8oXSkvKVxuICAgICkpLFxuICAgIGVuZDogSURFTlRfUkUkMSxcbiAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAga2V5d29yZHM6IFwicHJvdG90eXBlXCIsXG4gICAgY2xhc3NOYW1lOiBcInByb3BlcnR5XCIsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgR0VUVEVSX09SX1NFVFRFUiA9IHtcbiAgICBtYXRjaDogW1xuICAgICAgL2dldHxzZXQvLFxuICAgICAgL1xccysvLFxuICAgICAgSURFTlRfUkUkMSxcbiAgICAgIC8oPz1cXCgpL1xuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDM6IFwidGl0bGUuZnVuY3Rpb25cIlxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgLy8gZWF0IHRvIGF2b2lkIGVtcHR5IHBhcmFtc1xuICAgICAgICBiZWdpbjogL1xcKFxcKS9cbiAgICAgIH0sXG4gICAgICBQQVJBTVNcbiAgICBdXG4gIH07XG5cbiAgY29uc3QgRlVOQ19MRUFEX0lOX1JFID0gJyhcXFxcKCcgK1xuICAgICdbXigpXSooXFxcXCgnICtcbiAgICAnW14oKV0qKFxcXFwoJyArXG4gICAgJ1teKCldKicgK1xuICAgICdcXFxcKVteKCldKikqJyArXG4gICAgJ1xcXFwpW14oKV0qKSonICtcbiAgICAnXFxcXCl8JyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICcpXFxcXHMqPT4nO1xuXG4gIGNvbnN0IEZVTkNUSU9OX1ZBUklBQkxFID0ge1xuICAgIG1hdGNoOiBbXG4gICAgICAvY29uc3R8dmFyfGxldC8sIC9cXHMrLyxcbiAgICAgIElERU5UX1JFJDEsIC9cXHMqLyxcbiAgICAgIC89XFxzKi8sXG4gICAgICAvKGFzeW5jXFxzKik/LywgLy8gYXN5bmMgaXMgb3B0aW9uYWxcbiAgICAgIHJlZ2V4Lmxvb2thaGVhZChGVU5DX0xFQURfSU5fUkUpXG4gICAgXSxcbiAgICBrZXl3b3JkczogXCJhc3luY1wiLFxuICAgIGNsYXNzTmFtZToge1xuICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAzOiBcInRpdGxlLmZ1bmN0aW9uXCJcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBQQVJBTVNcbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnSmF2YXNjcmlwdCcsXG4gICAgYWxpYXNlczogWydqcycsICdqc3gnLCAnbWpzJywgJ2NqcyddLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyQxLFxuICAgIC8vIHRoaXMgd2lsbCBiZSBleHRlbmRlZCBieSBUeXBlU2NyaXB0XG4gICAgZXhwb3J0czogeyBQQVJBTVNfQ09OVEFJTlMsIENMQVNTX1JFRkVSRU5DRSB9LFxuICAgIGlsbGVnYWw6IC8jKD8hWyRfQS16XSkvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLlNIRUJBTkcoe1xuICAgICAgICBsYWJlbDogXCJzaGViYW5nXCIsXG4gICAgICAgIGJpbmFyeTogXCJub2RlXCIsXG4gICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgfSksXG4gICAgICBVU0VfU1RSSUNULFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgIEhUTUxfVEVNUExBVEUsXG4gICAgICBDU1NfVEVNUExBVEUsXG4gICAgICBURU1QTEFURV9TVFJJTkcsXG4gICAgICBDT01NRU5ULFxuICAgICAgLy8gU2tpcCBudW1iZXJzIHdoZW4gdGhleSBhcmUgcGFydCBvZiBhIHZhcmlhYmxlIG5hbWVcbiAgICAgIHsgbWF0Y2g6IC9cXCRcXGQrLyB9LFxuICAgICAgTlVNQkVSLFxuICAgICAgQ0xBU1NfUkVGRVJFTkNFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IElERU5UX1JFJDEgKyByZWdleC5sb29rYWhlYWQoJzonKSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgRlVOQ1RJT05fVkFSSUFCTEUsXG4gICAgICB7IC8vIFwidmFsdWVcIiBjb250YWluZXJcbiAgICAgICAgYmVnaW46ICcoJyArIGhsanMuUkVfU1RBUlRFUlNfUkUgKyAnfFxcXFxiKGNhc2V8cmV0dXJufHRocm93KVxcXFxiKVxcXFxzKicsXG4gICAgICAgIGtleXdvcmRzOiAncmV0dXJuIHRocm93IGNhc2UnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgQ09NTUVOVCxcbiAgICAgICAgICBobGpzLlJFR0VYUF9NT0RFLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gY291bnQgdGhlIHBhcmVucyB0byBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGF2ZSB0aGVcbiAgICAgICAgICAgIC8vIGNvcnJlY3QgYm91bmRpbmcgKCApIGJlZm9yZSB0aGUgPT4uICBUaGVyZSBjb3VsZCBiZSBhbnkgbnVtYmVyIG9mXG4gICAgICAgICAgICAvLyBzdWItZXhwcmVzc2lvbnMgaW5zaWRlIGFsc28gc3Vycm91bmRlZCBieSBwYXJlbnMuXG4gICAgICAgICAgICBiZWdpbjogRlVOQ19MRUFEX0lOX1JFLFxuICAgICAgICAgICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgICAgICAgICBlbmQ6ICdcXFxccyo9PicsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBiZWdpbjogaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXChcXHMqXFwpLyxcbiAgICAgICAgICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICAgICAgICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyQxLFxuICAgICAgICAgICAgICAgICAgICBjb250YWluczogUEFSQU1TX0NPTlRBSU5TXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IC8vIGNvdWxkIGJlIGEgY29tbWEgZGVsaW1pdGVkIGxpc3Qgb2YgcGFyYW1zIHRvIGEgZnVuY3Rpb24gY2FsbFxuICAgICAgICAgICAgYmVnaW46IC8sLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWF0Y2g6IC9cXHMrLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyAvLyBKU1hcbiAgICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICAgIHsgYmVnaW46IEZSQUdNRU5ULmJlZ2luLCBlbmQ6IEZSQUdNRU5ULmVuZCB9LFxuICAgICAgICAgICAgICB7IG1hdGNoOiBYTUxfU0VMRl9DTE9TSU5HIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogWE1MX1RBRy5iZWdpbixcbiAgICAgICAgICAgICAgICAvLyB3ZSBjYXJlZnVsbHkgY2hlY2sgdGhlIG9wZW5pbmcgdGFnIHRvIHNlZSBpZiBpdCB0cnVseVxuICAgICAgICAgICAgICAgIC8vIGlzIGEgdGFnIGFuZCBub3QgYSBmYWxzZSBwb3NpdGl2ZVxuICAgICAgICAgICAgICAgICdvbjpiZWdpbic6IFhNTF9UQUcuaXNUcnVseU9wZW5pbmdUYWcsXG4gICAgICAgICAgICAgICAgZW5kOiBYTUxfVEFHLmVuZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiBYTUxfVEFHLmJlZ2luLFxuICAgICAgICAgICAgICAgIGVuZDogWE1MX1RBRy5lbmQsXG4gICAgICAgICAgICAgICAgc2tpcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250YWluczogWydzZWxmJ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBGVU5DVElPTl9ERUZJTklUSU9OLFxuICAgICAge1xuICAgICAgICAvLyBwcmV2ZW50IHRoaXMgZnJvbSBnZXR0aW5nIHN3YWxsb3dlZCB1cCBieSBmdW5jdGlvblxuICAgICAgICAvLyBzaW5jZSB0aGV5IGFwcGVhciBcImZ1bmN0aW9uIGxpa2VcIlxuICAgICAgICBiZWdpbktleXdvcmRzOiBcIndoaWxlIGlmIHN3aXRjaCBjYXRjaCBmb3JcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgLy8gd2UgaGF2ZSB0byBjb3VudCB0aGUgcGFyZW5zIHRvIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBoYXZlIHRoZSBjb3JyZWN0XG4gICAgICAgIC8vIGJvdW5kaW5nICggKS4gIFRoZXJlIGNvdWxkIGJlIGFueSBudW1iZXIgb2Ygc3ViLWV4cHJlc3Npb25zIGluc2lkZVxuICAgICAgICAvLyBhbHNvIHN1cnJvdW5kZWQgYnkgcGFyZW5zLlxuICAgICAgICBiZWdpbjogJ1xcXFxiKD8hZnVuY3Rpb24pJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArXG4gICAgICAgICAgJ1xcXFwoJyArIC8vIGZpcnN0IHBhcmVuc1xuICAgICAgICAgICdbXigpXSooXFxcXCgnICtcbiAgICAgICAgICAgICdbXigpXSooXFxcXCgnICtcbiAgICAgICAgICAgICAgJ1teKCldKicgK1xuICAgICAgICAgICAgJ1xcXFwpW14oKV0qKSonICtcbiAgICAgICAgICAnXFxcXClbXigpXSopKicgK1xuICAgICAgICAgICdcXFxcKVxcXFxzKlxcXFx7JywgLy8gZW5kIHBhcmVuc1xuICAgICAgICByZXR1cm5CZWdpbjp0cnVlLFxuICAgICAgICBsYWJlbDogXCJmdW5jLmRlZlwiLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7IGJlZ2luOiBJREVOVF9SRSQxLCBjbGFzc05hbWU6IFwidGl0bGUuZnVuY3Rpb25cIiB9KVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gY2F0Y2ggLi4uIHNvIGl0IHdvbid0IHRyaWdnZXIgdGhlIHByb3BlcnR5IHJ1bGUgYmVsb3dcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IC9cXC5cXC5cXC4vLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBQUk9QRVJUWV9BQ0NFU1MsXG4gICAgICAvLyBoYWNrOiBwcmV2ZW50cyBkZXRlY3Rpb24gb2Yga2V5d29yZHMgaW4gc29tZSBjaXJjdW1zdGFuY2VzXG4gICAgICAvLyAua2V5d29yZCgpXG4gICAgICAvLyAka2V5d29yZCA9IHhcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6ICdcXFxcJCcgKyBJREVOVF9SRSQxLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbIC9cXGJjb25zdHJ1Y3Rvcig/PVxccypcXCgpLyBdLFxuICAgICAgICBjbGFzc05hbWU6IHsgMTogXCJ0aXRsZS5mdW5jdGlvblwiIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbIFBBUkFNUyBdXG4gICAgICB9LFxuICAgICAgRlVOQ1RJT05fQ0FMTCxcbiAgICAgIFVQUEVSX0NBU0VfQ09OU1RBTlQsXG4gICAgICBDTEFTU19PUl9FWFRFTkRTLFxuICAgICAgR0VUVEVSX09SX1NFVFRFUixcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IC9cXCRbKC5dLyAvLyByZWxldmFuY2UgYm9vc3RlciBmb3IgYSBwYXR0ZXJuIGNvbW1vbiB0byBKUyBsaWJzOiBgJChzb21ldGhpbmcpYCBhbmQgYCQuc29tZXRoaW5nYFxuICAgICAgfVxuICAgIF1cbiAgfTtcbn1cblxuZXhwb3J0IHsgamF2YXNjcmlwdCBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsiSURFTlRfUkUiLCJLRVlXT1JEUyIsIkxJVEVSQUxTIiwiVFlQRVMiLCJFUlJPUl9UWVBFUyIsIkJVSUxUX0lOX0dMT0JBTFMiLCJCVUlMVF9JTl9WQVJJQUJMRVMiLCJCVUlMVF9JTlMiLCJjb25jYXQiLCJqYXZhc2NyaXB0IiwiaGxqcyIsInJlZ2V4IiwiaGFzQ2xvc2luZ1RhZyIsIm1hdGNoIiwiYWZ0ZXIiLCJ0YWciLCJzbGljZSIsInBvcyIsImlucHV0IiwiaW5kZXhPZiIsIklERU5UX1JFJDEiLCJGUkFHTUVOVCIsImJlZ2luIiwiZW5kIiwiWE1MX1NFTEZfQ0xPU0lORyIsIlhNTF9UQUciLCJpc1RydWx5T3BlbmluZ1RhZyIsInJlc3BvbnNlIiwiYWZ0ZXJNYXRjaEluZGV4IiwibGVuZ3RoIiwiaW5kZXgiLCJuZXh0Q2hhciIsImlnbm9yZU1hdGNoIiwibSIsImFmdGVyTWF0Y2giLCJzdWJzdHJpbmciLCJLRVlXT1JEUyQxIiwiJHBhdHRlcm4iLCJrZXl3b3JkIiwibGl0ZXJhbCIsImJ1aWx0X2luIiwiZGVjaW1hbERpZ2l0cyIsImZyYWMiLCJkZWNpbWFsSW50ZWdlciIsIk5VTUJFUiIsImNsYXNzTmFtZSIsInZhcmlhbnRzIiwicmVsZXZhbmNlIiwiU1VCU1QiLCJrZXl3b3JkcyIsImNvbnRhaW5zIiwiSFRNTF9URU1QTEFURSIsInN0YXJ0cyIsInJldHVybkVuZCIsIkJBQ0tTTEFTSF9FU0NBUEUiLCJzdWJMYW5ndWFnZSIsIkNTU19URU1QTEFURSIsIlRFTVBMQVRFX1NUUklORyIsIkpTRE9DX0NPTU1FTlQiLCJDT01NRU5UIiwiZXhjbHVkZUVuZCIsImV4Y2x1ZGVCZWdpbiIsImVuZHNQYXJlbnQiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkNfTElORV9DT01NRU5UX01PREUiLCJTVUJTVF9JTlRFUk5BTFMiLCJBUE9TX1NUUklOR19NT0RFIiwiUVVPVEVfU1RSSU5HX01PREUiLCJTVUJTVF9BTkRfQ09NTUVOVFMiLCJQQVJBTVNfQ09OVEFJTlMiLCJQQVJBTVMiLCJDTEFTU19PUl9FWFRFTkRTIiwic2NvcGUiLCJDTEFTU19SRUZFUkVOQ0UiLCJlaXRoZXIiLCJfIiwiVVNFX1NUUklDVCIsImxhYmVsIiwiRlVOQ1RJT05fREVGSU5JVElPTiIsImlsbGVnYWwiLCJVUFBFUl9DQVNFX0NPTlNUQU5UIiwibm9uZU9mIiwibGlzdCIsImpvaW4iLCJGVU5DVElPTl9DQUxMIiwibG9va2FoZWFkIiwiUFJPUEVSVFlfQUNDRVNTIiwiR0VUVEVSX09SX1NFVFRFUiIsIkZVTkNfTEVBRF9JTl9SRSIsIlVOREVSU0NPUkVfSURFTlRfUkUiLCJGVU5DVElPTl9WQVJJQUJMRSIsIm5hbWUiLCJhbGlhc2VzIiwiZXhwb3J0cyIsIlNIRUJBTkciLCJiaW5hcnkiLCJSRV9TVEFSVEVSU19SRSIsIlJFR0VYUF9NT0RFIiwicmV0dXJuQmVnaW4iLCJza2lwIiwiYmVnaW5LZXl3b3JkcyIsImluaGVyaXQiLCJUSVRMRV9NT0RFIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/javascript.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/json.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/json.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ json)\n/* harmony export */ });\n/*\nLanguage: JSON\nDescription: JSON (JavaScript Object Notation) is a lightweight data-interchange format.\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nWebsite: http://www.json.org\nCategory: common, protocols, web\n*/ function json(hljs) {\n const ATTRIBUTE = {\n className: \"attr\",\n begin: /\"(\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n relevance: 1.01\n };\n const PUNCTUATION = {\n match: /[{}[\\],:]/,\n className: \"punctuation\",\n relevance: 0\n };\n const LITERALS = [\n \"true\",\n \"false\",\n \"null\"\n ];\n // NOTE: normally we would rely on `keywords` for this but using a mode here allows us\n // - to use the very tight `illegal: \\S` rule later to flag any other character\n // - as illegal indicating that despite looking like JSON we do not truly have\n // - JSON and thus improve false-positively greatly since JSON will try and claim\n // - all sorts of JSON looking stuff\n const LITERALS_MODE = {\n scope: \"literal\",\n beginKeywords: LITERALS.join(\" \")\n };\n return {\n name: \"JSON\",\n keywords: {\n literal: LITERALS\n },\n contains: [\n ATTRIBUTE,\n PUNCTUATION,\n hljs.QUOTE_STRING_MODE,\n LITERALS_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: \"\\\\S\"\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9qc29uLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7O0FBTUEsR0FFQSxTQUFTQSxLQUFLQyxJQUFJO0lBQ2hCLE1BQU1DLFlBQVk7UUFDaEJDLFdBQVc7UUFDWEMsT0FBTztRQUNQQyxXQUFXO0lBQ2I7SUFDQSxNQUFNQyxjQUFjO1FBQ2xCQyxPQUFPO1FBQ1BKLFdBQVc7UUFDWEUsV0FBVztJQUNiO0lBQ0EsTUFBTUcsV0FBVztRQUNmO1FBQ0E7UUFDQTtLQUNEO0lBQ0Qsc0ZBQXNGO0lBQ3RGLCtFQUErRTtJQUMvRSw4RUFBOEU7SUFDOUUsaUZBQWlGO0lBQ2pGLG9DQUFvQztJQUNwQyxNQUFNQyxnQkFBZ0I7UUFDcEJDLE9BQU87UUFDUEMsZUFBZUgsU0FBU0ksSUFBSSxDQUFDO0lBQy9CO0lBRUEsT0FBTztRQUNMQyxNQUFNO1FBQ05DLFVBQVM7WUFDUEMsU0FBU1A7UUFDWDtRQUNBUSxVQUFVO1lBQ1JkO1lBQ0FJO1lBQ0FMLEtBQUtnQixpQkFBaUI7WUFDdEJSO1lBQ0FSLEtBQUtpQixhQUFhO1lBQ2xCakIsS0FBS2tCLG1CQUFtQjtZQUN4QmxCLEtBQUttQixvQkFBb0I7U0FDMUI7UUFDREMsU0FBUztJQUNYO0FBQ0Y7QUFFMkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL2pzb24uanM/ZmJhOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IEpTT05cbkRlc2NyaXB0aW9uOiBKU09OIChKYXZhU2NyaXB0IE9iamVjdCBOb3RhdGlvbikgaXMgYSBsaWdodHdlaWdodCBkYXRhLWludGVyY2hhbmdlIGZvcm1hdC5cbkF1dGhvcjogSXZhbiBTYWdhbGFldiA8bWFuaWFjQHNvZnR3YXJlbWFuaWFjcy5vcmc+XG5XZWJzaXRlOiBodHRwOi8vd3d3Lmpzb24ub3JnXG5DYXRlZ29yeTogY29tbW9uLCBwcm90b2NvbHMsIHdlYlxuKi9cblxuZnVuY3Rpb24ganNvbihobGpzKSB7XG4gIGNvbnN0IEFUVFJJQlVURSA9IHtcbiAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICBiZWdpbjogL1wiKFxcXFwufFteXFxcXFwiXFxyXFxuXSkqXCIoPz1cXHMqOikvLFxuICAgIHJlbGV2YW5jZTogMS4wMVxuICB9O1xuICBjb25zdCBQVU5DVFVBVElPTiA9IHtcbiAgICBtYXRjaDogL1t7fVtcXF0sOl0vLFxuICAgIGNsYXNzTmFtZTogXCJwdW5jdHVhdGlvblwiLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBjb25zdCBMSVRFUkFMUyA9IFtcbiAgICBcInRydWVcIixcbiAgICBcImZhbHNlXCIsXG4gICAgXCJudWxsXCJcbiAgXTtcbiAgLy8gTk9URTogbm9ybWFsbHkgd2Ugd291bGQgcmVseSBvbiBga2V5d29yZHNgIGZvciB0aGlzIGJ1dCB1c2luZyBhIG1vZGUgaGVyZSBhbGxvd3MgdXNcbiAgLy8gLSB0byB1c2UgdGhlIHZlcnkgdGlnaHQgYGlsbGVnYWw6IFxcU2AgcnVsZSBsYXRlciB0byBmbGFnIGFueSBvdGhlciBjaGFyYWN0ZXJcbiAgLy8gLSBhcyBpbGxlZ2FsIGluZGljYXRpbmcgdGhhdCBkZXNwaXRlIGxvb2tpbmcgbGlrZSBKU09OIHdlIGRvIG5vdCB0cnVseSBoYXZlXG4gIC8vIC0gSlNPTiBhbmQgdGh1cyBpbXByb3ZlIGZhbHNlLXBvc2l0aXZlbHkgZ3JlYXRseSBzaW5jZSBKU09OIHdpbGwgdHJ5IGFuZCBjbGFpbVxuICAvLyAtIGFsbCBzb3J0cyBvZiBKU09OIGxvb2tpbmcgc3R1ZmZcbiAgY29uc3QgTElURVJBTFNfTU9ERSA9IHtcbiAgICBzY29wZTogXCJsaXRlcmFsXCIsXG4gICAgYmVnaW5LZXl3b3JkczogTElURVJBTFMuam9pbihcIiBcIiksXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnSlNPTicsXG4gICAga2V5d29yZHM6e1xuICAgICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgQVRUUklCVVRFLFxuICAgICAgUFVOQ1RVQVRJT04sXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgTElURVJBTFNfTU9ERSxcbiAgICAgIGhsanMuQ19OVU1CRVJfTU9ERSxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREVcbiAgICBdLFxuICAgIGlsbGVnYWw6ICdcXFxcUydcbiAgfTtcbn1cblxuZXhwb3J0IHsganNvbiBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsianNvbiIsImhsanMiLCJBVFRSSUJVVEUiLCJjbGFzc05hbWUiLCJiZWdpbiIsInJlbGV2YW5jZSIsIlBVTkNUVUFUSU9OIiwibWF0Y2giLCJMSVRFUkFMUyIsIkxJVEVSQUxTX01PREUiLCJzY29wZSIsImJlZ2luS2V5d29yZHMiLCJqb2luIiwibmFtZSIsImtleXdvcmRzIiwibGl0ZXJhbCIsImNvbnRhaW5zIiwiUVVPVEVfU1RSSU5HX01PREUiLCJDX05VTUJFUl9NT0RFIiwiQ19MSU5FX0NPTU1FTlRfTU9ERSIsIkNfQkxPQ0tfQ09NTUVOVF9NT0RFIiwiaWxsZWdhbCIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/json.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/kotlin.js":
/*!**********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/kotlin.js ***!
\**********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ kotlin)\n/* harmony export */ });\n// https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.html#jls-3.10\nvar decimalDigits = \"[0-9](_*[0-9])*\";\nvar frac = `\\\\.(${decimalDigits})`;\nvar hexDigits = \"[0-9a-fA-F](_*[0-9a-fA-F])*\";\nvar NUMERIC = {\n className: \"number\",\n variants: [\n // DecimalFloatingPointLiteral\n // including ExponentPart\n {\n begin: `(\\\\b(${decimalDigits})((${frac})|\\\\.)?|(${frac}))` + `[eE][+-]?(${decimalDigits})[fFdD]?\\\\b`\n },\n // excluding ExponentPart\n {\n begin: `\\\\b(${decimalDigits})((${frac})[fFdD]?\\\\b|\\\\.([fFdD]\\\\b)?)`\n },\n {\n begin: `(${frac})[fFdD]?\\\\b`\n },\n {\n begin: `\\\\b(${decimalDigits})[fFdD]\\\\b`\n },\n // HexadecimalFloatingPointLiteral\n {\n begin: `\\\\b0[xX]((${hexDigits})\\\\.?|(${hexDigits})?\\\\.(${hexDigits}))` + `[pP][+-]?(${decimalDigits})[fFdD]?\\\\b`\n },\n // DecimalIntegerLiteral\n {\n begin: \"\\\\b(0|[1-9](_*[0-9])*)[lL]?\\\\b\"\n },\n // HexIntegerLiteral\n {\n begin: `\\\\b0[xX](${hexDigits})[lL]?\\\\b`\n },\n // OctalIntegerLiteral\n {\n begin: \"\\\\b0(_*[0-7])*[lL]?\\\\b\"\n },\n // BinaryIntegerLiteral\n {\n begin: \"\\\\b0[bB][01](_*[01])*[lL]?\\\\b\"\n }\n ],\n relevance: 0\n};\n/*\n Language: Kotlin\n Description: Kotlin is an OSS statically typed programming language that targets the JVM, Android, JavaScript and Native.\n Author: Sergey Mashkov <cy6erGn0m@gmail.com>\n Website: https://kotlinlang.org\n Category: common\n */ function kotlin(hljs) {\n const KEYWORDS = {\n keyword: \"abstract as val var vararg get set class object open private protected public noinline \" + \"crossinline dynamic final enum if else do while for when throw try catch finally \" + \"import package is in fun override companion reified inline lateinit init \" + \"interface annotation data sealed internal infix operator out by constructor super \" + \"tailrec where const inner suspend typealias external expect actual\",\n built_in: \"Byte Short Char Int Long Boolean Float Double Void Unit Nothing\",\n literal: \"true false null\"\n };\n const KEYWORDS_WITH_LABEL = {\n className: \"keyword\",\n begin: /\\b(break|continue|return|this)\\b/,\n starts: {\n contains: [\n {\n className: \"symbol\",\n begin: /@\\w+/\n }\n ]\n }\n };\n const LABEL = {\n className: \"symbol\",\n begin: hljs.UNDERSCORE_IDENT_RE + \"@\"\n };\n // for string templates\n const SUBST = {\n className: \"subst\",\n begin: /\\$\\{/,\n end: /\\}/,\n contains: [\n hljs.C_NUMBER_MODE\n ]\n };\n const VARIABLE = {\n className: \"variable\",\n begin: \"\\\\$\" + hljs.UNDERSCORE_IDENT_RE\n };\n const STRING = {\n className: \"string\",\n variants: [\n {\n begin: '\"\"\"',\n end: '\"\"\"(?=[^\"])',\n contains: [\n VARIABLE,\n SUBST\n ]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: \"'\",\n end: \"'\",\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n {\n begin: '\"',\n end: '\"',\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE,\n SUBST\n ]\n }\n ]\n };\n SUBST.contains.push(STRING);\n const ANNOTATION_USE_SITE = {\n className: \"meta\",\n begin: \"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*\" + hljs.UNDERSCORE_IDENT_RE + \")?\"\n };\n const ANNOTATION = {\n className: \"meta\",\n begin: \"@\" + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n hljs.inherit(STRING, {\n className: \"string\"\n }),\n \"self\"\n ]\n }\n ]\n };\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\n // According to the doc above, the number mode of kotlin is the same as java 8,\n // so the code below is copied from java.js\n const KOTLIN_NUMBER_MODE = NUMERIC;\n const KOTLIN_NESTED_COMMENT = hljs.COMMENT(\"/\\\\*\", \"\\\\*/\", {\n contains: [\n hljs.C_BLOCK_COMMENT_MODE\n ]\n });\n const KOTLIN_PAREN_TYPE = {\n variants: [\n {\n className: \"type\",\n begin: hljs.UNDERSCORE_IDENT_RE\n },\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [] // defined later\n }\n ]\n };\n const KOTLIN_PAREN_TYPE2 = KOTLIN_PAREN_TYPE;\n KOTLIN_PAREN_TYPE2.variants[1].contains = [\n KOTLIN_PAREN_TYPE\n ];\n KOTLIN_PAREN_TYPE.variants[1].contains = [\n KOTLIN_PAREN_TYPE2\n ];\n return {\n name: \"Kotlin\",\n aliases: [\n \"kt\",\n \"kts\"\n ],\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(\"/\\\\*\\\\*\", \"\\\\*/\", {\n relevance: 0,\n contains: [\n {\n className: \"doctag\",\n begin: \"@[A-Za-z]+\"\n }\n ]\n }),\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: \"function\",\n beginKeywords: \"fun\",\n end: \"[(]|$\",\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + \"\\\\s*\\\\(\",\n returnBegin: true,\n relevance: 0,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: \"type\",\n begin: /</,\n end: />/,\n keywords: \"reified\",\n relevance: 0\n },\n {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/,\n end: /[=,\\/]/,\n endsWithParent: true,\n contains: [\n KOTLIN_PAREN_TYPE,\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n KOTLIN_NESTED_COMMENT,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n KOTLIN_NESTED_COMMENT\n ]\n },\n {\n begin: [\n /class|interface|trait/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n beginScope: {\n 3: \"title.class\"\n },\n keywords: \"class interface trait\",\n end: /[:\\{(]|$/,\n excludeEnd: true,\n illegal: \"extends implements\",\n contains: [\n {\n beginKeywords: \"public protected internal private constructor\"\n },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: \"type\",\n begin: /</,\n end: />/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n {\n className: \"type\",\n begin: /[,:]\\s*/,\n end: /[<\\(,){\\s]|$/,\n excludeBegin: true,\n returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: \"meta\",\n begin: \"^#!/usr/bin/env\",\n end: \"$\",\n illegal: \"\\n\"\n },\n KOTLIN_NUMBER_MODE\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9rb3RsaW4uanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHlFQUF5RTtBQUN6RSxJQUFJQSxnQkFBZ0I7QUFDcEIsSUFBSUMsT0FBTyxDQUFDLElBQUksRUFBRUQsY0FBYyxDQUFDLENBQUM7QUFDbEMsSUFBSUUsWUFBWTtBQUNoQixJQUFJQyxVQUFVO0lBQ1pDLFdBQVc7SUFDWEMsVUFBVTtRQUNSLDhCQUE4QjtRQUM5Qix5QkFBeUI7UUFDekI7WUFBRUMsT0FBTyxDQUFDLEtBQUssRUFBRU4sY0FBYyxHQUFHLEVBQUVDLEtBQUssU0FBUyxFQUFFQSxLQUFLLEVBQUUsQ0FBQyxHQUMxRCxDQUFDLFVBQVUsRUFBRUQsY0FBYyxXQUFXLENBQUM7UUFBQztRQUMxQyx5QkFBeUI7UUFDekI7WUFBRU0sT0FBTyxDQUFDLElBQUksRUFBRU4sY0FBYyxHQUFHLEVBQUVDLEtBQUssNEJBQTRCLENBQUM7UUFBQztRQUN0RTtZQUFFSyxPQUFPLENBQUMsQ0FBQyxFQUFFTCxLQUFLLFdBQVcsQ0FBQztRQUFDO1FBQy9CO1lBQUVLLE9BQU8sQ0FBQyxJQUFJLEVBQUVOLGNBQWMsVUFBVSxDQUFDO1FBQUM7UUFFMUMsa0NBQWtDO1FBQ2xDO1lBQUVNLE9BQU8sQ0FBQyxVQUFVLEVBQUVKLFVBQVUsT0FBTyxFQUFFQSxVQUFVLE1BQU0sRUFBRUEsVUFBVSxFQUFFLENBQUMsR0FDdEUsQ0FBQyxVQUFVLEVBQUVGLGNBQWMsV0FBVyxDQUFDO1FBQUM7UUFFMUMsd0JBQXdCO1FBQ3hCO1lBQUVNLE9BQU87UUFBaUM7UUFFMUMsb0JBQW9CO1FBQ3BCO1lBQUVBLE9BQU8sQ0FBQyxTQUFTLEVBQUVKLFVBQVUsU0FBUyxDQUFDO1FBQUM7UUFFMUMsc0JBQXNCO1FBQ3RCO1lBQUVJLE9BQU87UUFBeUI7UUFFbEMsdUJBQXVCO1FBQ3ZCO1lBQUVBLE9BQU87UUFBZ0M7S0FDMUM7SUFDREMsV0FBVztBQUNiO0FBRUE7Ozs7OztDQU1DLEdBRUQsU0FBU0MsT0FBT0MsSUFBSTtJQUNsQixNQUFNQyxXQUFXO1FBQ2ZDLFNBQ0UsNEZBQ0Usc0ZBQ0EsOEVBQ0EsdUZBQ0E7UUFDSkMsVUFDRTtRQUNGQyxTQUNFO0lBQ0o7SUFDQSxNQUFNQyxzQkFBc0I7UUFDMUJWLFdBQVc7UUFDWEUsT0FBTztRQUNQUyxRQUFRO1lBQUVDLFVBQVU7Z0JBQ2xCO29CQUNFWixXQUFXO29CQUNYRSxPQUFPO2dCQUNUO2FBQ0Q7UUFBQztJQUNKO0lBQ0EsTUFBTVcsUUFBUTtRQUNaYixXQUFXO1FBQ1hFLE9BQU9HLEtBQUtTLG1CQUFtQixHQUFHO0lBQ3BDO0lBRUEsdUJBQXVCO0lBQ3ZCLE1BQU1DLFFBQVE7UUFDWmYsV0FBVztRQUNYRSxPQUFPO1FBQ1BjLEtBQUs7UUFDTEosVUFBVTtZQUFFUCxLQUFLWSxhQUFhO1NBQUU7SUFDbEM7SUFDQSxNQUFNQyxXQUFXO1FBQ2ZsQixXQUFXO1FBQ1hFLE9BQU8sUUFBUUcsS0FBS1MsbUJBQW1CO0lBQ3pDO0lBQ0EsTUFBTUssU0FBUztRQUNibkIsV0FBVztRQUNYQyxVQUFVO1lBQ1I7Z0JBQ0VDLE9BQU87Z0JBQ1BjLEtBQUs7Z0JBQ0xKLFVBQVU7b0JBQ1JNO29CQUNBSDtpQkFDRDtZQUNIO1lBQ0Esd0VBQXdFO1lBQ3hFLDBFQUEwRTtZQUMxRSxnQ0FBZ0M7WUFDaEM7Z0JBQ0ViLE9BQU87Z0JBQ1BjLEtBQUs7Z0JBQ0xJLFNBQVM7Z0JBQ1RSLFVBQVU7b0JBQUVQLEtBQUtnQixnQkFBZ0I7aUJBQUU7WUFDckM7WUFDQTtnQkFDRW5CLE9BQU87Z0JBQ1BjLEtBQUs7Z0JBQ0xJLFNBQVM7Z0JBQ1RSLFVBQVU7b0JBQ1JQLEtBQUtnQixnQkFBZ0I7b0JBQ3JCSDtvQkFDQUg7aUJBQ0Q7WUFDSDtTQUNEO0lBQ0g7SUFDQUEsTUFBTUgsUUFBUSxDQUFDVSxJQUFJLENBQUNIO0lBRXBCLE1BQU1JLHNCQUFzQjtRQUMxQnZCLFdBQVc7UUFDWEUsT0FBTyxrRkFBa0ZHLEtBQUtTLG1CQUFtQixHQUFHO0lBQ3RIO0lBQ0EsTUFBTVUsYUFBYTtRQUNqQnhCLFdBQVc7UUFDWEUsT0FBTyxNQUFNRyxLQUFLUyxtQkFBbUI7UUFDckNGLFVBQVU7WUFDUjtnQkFDRVYsT0FBTztnQkFDUGMsS0FBSztnQkFDTEosVUFBVTtvQkFDUlAsS0FBS29CLE9BQU8sQ0FBQ04sUUFBUTt3QkFBRW5CLFdBQVc7b0JBQVM7b0JBQzNDO2lCQUNEO1lBQ0g7U0FDRDtJQUNIO0lBRUEsd0ZBQXdGO0lBQ3hGLCtFQUErRTtJQUMvRSwyQ0FBMkM7SUFDM0MsTUFBTTBCLHFCQUFxQjNCO0lBQzNCLE1BQU00Qix3QkFBd0J0QixLQUFLdUIsT0FBTyxDQUN4QyxRQUFRLFFBQ1I7UUFBRWhCLFVBQVU7WUFBRVAsS0FBS3dCLG9CQUFvQjtTQUFFO0lBQUM7SUFFNUMsTUFBTUMsb0JBQW9CO1FBQUU3QixVQUFVO1lBQ3BDO2dCQUNFRCxXQUFXO2dCQUNYRSxPQUFPRyxLQUFLUyxtQkFBbUI7WUFDakM7WUFDQTtnQkFDRVosT0FBTztnQkFDUGMsS0FBSztnQkFDTEosVUFBVSxFQUFFLENBQUMsZ0JBQWdCO1lBQy9CO1NBQ0Q7SUFBQztJQUNGLE1BQU1tQixxQkFBcUJEO0lBQzNCQyxtQkFBbUI5QixRQUFRLENBQUMsRUFBRSxDQUFDVyxRQUFRLEdBQUc7UUFBRWtCO0tBQW1CO0lBQy9EQSxrQkFBa0I3QixRQUFRLENBQUMsRUFBRSxDQUFDVyxRQUFRLEdBQUc7UUFBRW1CO0tBQW9CO0lBRS9ELE9BQU87UUFDTEMsTUFBTTtRQUNOQyxTQUFTO1lBQ1A7WUFDQTtTQUNEO1FBQ0RDLFVBQVU1QjtRQUNWTSxVQUFVO1lBQ1JQLEtBQUt1QixPQUFPLENBQ1YsV0FDQSxRQUNBO2dCQUNFekIsV0FBVztnQkFDWFMsVUFBVTtvQkFDUjt3QkFDRVosV0FBVzt3QkFDWEUsT0FBTztvQkFDVDtpQkFDRDtZQUNIO1lBRUZHLEtBQUs4QixtQkFBbUI7WUFDeEJSO1lBQ0FqQjtZQUNBRztZQUNBVTtZQUNBQztZQUNBO2dCQUNFeEIsV0FBVztnQkFDWG9DLGVBQWU7Z0JBQ2ZwQixLQUFLO2dCQUNMcUIsYUFBYTtnQkFDYkMsWUFBWTtnQkFDWkosVUFBVTVCO2dCQUNWSCxXQUFXO2dCQUNYUyxVQUFVO29CQUNSO3dCQUNFVixPQUFPRyxLQUFLUyxtQkFBbUIsR0FBRzt3QkFDbEN1QixhQUFhO3dCQUNibEMsV0FBVzt3QkFDWFMsVUFBVTs0QkFBRVAsS0FBS2tDLHFCQUFxQjt5QkFBRTtvQkFDMUM7b0JBQ0E7d0JBQ0V2QyxXQUFXO3dCQUNYRSxPQUFPO3dCQUNQYyxLQUFLO3dCQUNMa0IsVUFBVTt3QkFDVi9CLFdBQVc7b0JBQ2I7b0JBQ0E7d0JBQ0VILFdBQVc7d0JBQ1hFLE9BQU87d0JBQ1BjLEtBQUs7d0JBQ0x3QixZQUFZO3dCQUNaTixVQUFVNUI7d0JBQ1ZILFdBQVc7d0JBQ1hTLFVBQVU7NEJBQ1I7Z0NBQ0VWLE9BQU87Z0NBQ1BjLEtBQUs7Z0NBQ0x5QixnQkFBZ0I7Z0NBQ2hCN0IsVUFBVTtvQ0FDUmtCO29DQUNBekIsS0FBSzhCLG1CQUFtQjtvQ0FDeEJSO2lDQUNEO2dDQUNEeEIsV0FBVzs0QkFDYjs0QkFDQUUsS0FBSzhCLG1CQUFtQjs0QkFDeEJSOzRCQUNBSjs0QkFDQUM7NEJBQ0FMOzRCQUNBZCxLQUFLWSxhQUFhO3lCQUNuQjtvQkFDSDtvQkFDQVU7aUJBQ0Q7WUFDSDtZQUNBO2dCQUNFekIsT0FBTztvQkFDTDtvQkFDQTtvQkFDQUcsS0FBS1MsbUJBQW1CO2lCQUN6QjtnQkFDRDRCLFlBQVk7b0JBQ1YsR0FBRztnQkFDTDtnQkFDQVIsVUFBVTtnQkFDVmxCLEtBQUs7Z0JBQ0xzQixZQUFZO2dCQUNabEIsU0FBUztnQkFDVFIsVUFBVTtvQkFDUjt3QkFBRXdCLGVBQWU7b0JBQWdEO29CQUNqRS9CLEtBQUtrQyxxQkFBcUI7b0JBQzFCO3dCQUNFdkMsV0FBVzt3QkFDWEUsT0FBTzt3QkFDUGMsS0FBSzt3QkFDTDJCLGNBQWM7d0JBQ2RMLFlBQVk7d0JBQ1puQyxXQUFXO29CQUNiO29CQUNBO3dCQUNFSCxXQUFXO3dCQUNYRSxPQUFPO3dCQUNQYyxLQUFLO3dCQUNMMkIsY0FBYzt3QkFDZEMsV0FBVztvQkFDYjtvQkFDQXJCO29CQUNBQztpQkFDRDtZQUNIO1lBQ0FMO1lBQ0E7Z0JBQ0VuQixXQUFXO2dCQUNYRSxPQUFPO2dCQUNQYyxLQUFLO2dCQUNMSSxTQUFTO1lBQ1g7WUFDQU07U0FDRDtJQUNIO0FBQ0Y7QUFFNkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL2tvdGxpbi5qcz8xNTg2Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2phdmFzZS9zcGVjcy9qbHMvc2UxNS9odG1sL2pscy0zLmh0bWwjamxzLTMuMTBcbnZhciBkZWNpbWFsRGlnaXRzID0gJ1swLTldKF8qWzAtOV0pKic7XG52YXIgZnJhYyA9IGBcXFxcLigke2RlY2ltYWxEaWdpdHN9KWA7XG52YXIgaGV4RGlnaXRzID0gJ1swLTlhLWZBLUZdKF8qWzAtOWEtZkEtRl0pKic7XG52YXIgTlVNRVJJQyA9IHtcbiAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgdmFyaWFudHM6IFtcbiAgICAvLyBEZWNpbWFsRmxvYXRpbmdQb2ludExpdGVyYWxcbiAgICAvLyBpbmNsdWRpbmcgRXhwb25lbnRQYXJ0XG4gICAgeyBiZWdpbjogYChcXFxcYigke2RlY2ltYWxEaWdpdHN9KSgoJHtmcmFjfSl8XFxcXC4pP3woJHtmcmFjfSkpYCArXG4gICAgICBgW2VFXVsrLV0/KCR7ZGVjaW1hbERpZ2l0c30pW2ZGZERdP1xcXFxiYCB9LFxuICAgIC8vIGV4Y2x1ZGluZyBFeHBvbmVudFBhcnRcbiAgICB7IGJlZ2luOiBgXFxcXGIoJHtkZWNpbWFsRGlnaXRzfSkoKCR7ZnJhY30pW2ZGZERdP1xcXFxifFxcXFwuKFtmRmREXVxcXFxiKT8pYCB9LFxuICAgIHsgYmVnaW46IGAoJHtmcmFjfSlbZkZkRF0/XFxcXGJgIH0sXG4gICAgeyBiZWdpbjogYFxcXFxiKCR7ZGVjaW1hbERpZ2l0c30pW2ZGZERdXFxcXGJgIH0sXG5cbiAgICAvLyBIZXhhZGVjaW1hbEZsb2F0aW5nUG9pbnRMaXRlcmFsXG4gICAgeyBiZWdpbjogYFxcXFxiMFt4WF0oKCR7aGV4RGlnaXRzfSlcXFxcLj98KCR7aGV4RGlnaXRzfSk/XFxcXC4oJHtoZXhEaWdpdHN9KSlgICtcbiAgICAgIGBbcFBdWystXT8oJHtkZWNpbWFsRGlnaXRzfSlbZkZkRF0/XFxcXGJgIH0sXG5cbiAgICAvLyBEZWNpbWFsSW50ZWdlckxpdGVyYWxcbiAgICB7IGJlZ2luOiAnXFxcXGIoMHxbMS05XShfKlswLTldKSopW2xMXT9cXFxcYicgfSxcblxuICAgIC8vIEhleEludGVnZXJMaXRlcmFsXG4gICAgeyBiZWdpbjogYFxcXFxiMFt4WF0oJHtoZXhEaWdpdHN9KVtsTF0/XFxcXGJgIH0sXG5cbiAgICAvLyBPY3RhbEludGVnZXJMaXRlcmFsXG4gICAgeyBiZWdpbjogJ1xcXFxiMChfKlswLTddKSpbbExdP1xcXFxiJyB9LFxuXG4gICAgLy8gQmluYXJ5SW50ZWdlckxpdGVyYWxcbiAgICB7IGJlZ2luOiAnXFxcXGIwW2JCXVswMV0oXypbMDFdKSpbbExdP1xcXFxiJyB9LFxuICBdLFxuICByZWxldmFuY2U6IDBcbn07XG5cbi8qXG4gTGFuZ3VhZ2U6IEtvdGxpblxuIERlc2NyaXB0aW9uOiBLb3RsaW4gaXMgYW4gT1NTIHN0YXRpY2FsbHkgdHlwZWQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdGhhdCB0YXJnZXRzIHRoZSBKVk0sIEFuZHJvaWQsIEphdmFTY3JpcHQgYW5kIE5hdGl2ZS5cbiBBdXRob3I6IFNlcmdleSBNYXNoa292IDxjeTZlckduMG1AZ21haWwuY29tPlxuIFdlYnNpdGU6IGh0dHBzOi8va290bGlubGFuZy5vcmdcbiBDYXRlZ29yeTogY29tbW9uXG4gKi9cblxuZnVuY3Rpb24ga290bGluKGhsanMpIHtcbiAgY29uc3QgS0VZV09SRFMgPSB7XG4gICAga2V5d29yZDpcbiAgICAgICdhYnN0cmFjdCBhcyB2YWwgdmFyIHZhcmFyZyBnZXQgc2V0IGNsYXNzIG9iamVjdCBvcGVuIHByaXZhdGUgcHJvdGVjdGVkIHB1YmxpYyBub2lubGluZSAnXG4gICAgICArICdjcm9zc2lubGluZSBkeW5hbWljIGZpbmFsIGVudW0gaWYgZWxzZSBkbyB3aGlsZSBmb3Igd2hlbiB0aHJvdyB0cnkgY2F0Y2ggZmluYWxseSAnXG4gICAgICArICdpbXBvcnQgcGFja2FnZSBpcyBpbiBmdW4gb3ZlcnJpZGUgY29tcGFuaW9uIHJlaWZpZWQgaW5saW5lIGxhdGVpbml0IGluaXQgJ1xuICAgICAgKyAnaW50ZXJmYWNlIGFubm90YXRpb24gZGF0YSBzZWFsZWQgaW50ZXJuYWwgaW5maXggb3BlcmF0b3Igb3V0IGJ5IGNvbnN0cnVjdG9yIHN1cGVyICdcbiAgICAgICsgJ3RhaWxyZWMgd2hlcmUgY29uc3QgaW5uZXIgc3VzcGVuZCB0eXBlYWxpYXMgZXh0ZXJuYWwgZXhwZWN0IGFjdHVhbCcsXG4gICAgYnVpbHRfaW46XG4gICAgICAnQnl0ZSBTaG9ydCBDaGFyIEludCBMb25nIEJvb2xlYW4gRmxvYXQgRG91YmxlIFZvaWQgVW5pdCBOb3RoaW5nJyxcbiAgICBsaXRlcmFsOlxuICAgICAgJ3RydWUgZmFsc2UgbnVsbCdcbiAgfTtcbiAgY29uc3QgS0VZV09SRFNfV0lUSF9MQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogL1xcYihicmVha3xjb250aW51ZXxyZXR1cm58dGhpcylcXGIvLFxuICAgIHN0YXJ0czogeyBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICBiZWdpbjogL0BcXHcrL1xuICAgICAgfVxuICAgIF0gfVxuICB9O1xuICBjb25zdCBMQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgIGJlZ2luOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnQCdcbiAgfTtcblxuICAvLyBmb3Igc3RyaW5nIHRlbXBsYXRlc1xuICBjb25zdCBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC9cXCRcXHsvLFxuICAgIGVuZDogL1xcfS8sXG4gICAgY29udGFpbnM6IFsgaGxqcy5DX05VTUJFUl9NT0RFIF1cbiAgfTtcbiAgY29uc3QgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAnXFxcXCQnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gIH07XG4gIGNvbnN0IFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCJcIlwiJyxcbiAgICAgICAgZW5kOiAnXCJcIlwiKD89W15cIl0pJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBTVUJTVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gQ2FuJ3QgdXNlIGJ1aWx0LWluIG1vZGVzIGVhc2lseSwgYXMgd2Ugd2FudCB0byB1c2UgU1RSSU5HIGluIHRoZSBtZXRhXG4gICAgICAvLyBjb250ZXh0IGFzICdtZXRhLXN0cmluZycgYW5kIHRoZXJlJ3Mgbm8gc3ludGF4IHRvIHJlbW92ZSBleHBsaWNpdGx5IHNldFxuICAgICAgLy8gY2xhc3NOYW1lcyBpbiBidWlsdC1pbiBtb2Rlcy5cbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXCcnLFxuICAgICAgICBlbmQ6ICdcXCcnLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICBlbmQ6ICdcIicsXG4gICAgICAgIGlsbGVnYWw6IC9cXG4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBTVUJTVFxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucy5wdXNoKFNUUklORyk7XG5cbiAgY29uc3QgQU5OT1RBVElPTl9VU0VfU0lURSA9IHtcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICBiZWdpbjogJ0AoPzpmaWxlfHByb3BlcnR5fGZpZWxkfGdldHxzZXR8cmVjZWl2ZXJ8cGFyYW18c2V0cGFyYW18ZGVsZWdhdGUpXFxcXHMqOig/OlxcXFxzKicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnKT8nXG4gIH07XG4gIGNvbnN0IEFOTk9UQVRJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46ICdAJyArIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5pbmhlcml0KFNUUklORywgeyBjbGFzc05hbWU6ICdzdHJpbmcnIH0pLFxuICAgICAgICAgIFwic2VsZlwiXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgLy8gaHR0cHM6Ly9rb3RsaW5sYW5nLm9yZy9kb2NzL3JlZmVyZW5jZS93aGF0c25ldzExLmh0bWwjdW5kZXJzY29yZXMtaW4tbnVtZXJpYy1saXRlcmFsc1xuICAvLyBBY2NvcmRpbmcgdG8gdGhlIGRvYyBhYm92ZSwgdGhlIG51bWJlciBtb2RlIG9mIGtvdGxpbiBpcyB0aGUgc2FtZSBhcyBqYXZhIDgsXG4gIC8vIHNvIHRoZSBjb2RlIGJlbG93IGlzIGNvcGllZCBmcm9tIGphdmEuanNcbiAgY29uc3QgS09UTElOX05VTUJFUl9NT0RFID0gTlVNRVJJQztcbiAgY29uc3QgS09UTElOX05FU1RFRF9DT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICcvXFxcXConLCAnXFxcXCovJyxcbiAgICB7IGNvbnRhaW5zOiBbIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUgXSB9XG4gICk7XG4gIGNvbnN0IEtPVExJTl9QQVJFTl9UWVBFID0geyB2YXJpYW50czogW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRVxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgZW5kOiAvXFwpLyxcbiAgICAgIGNvbnRhaW5zOiBbXSAvLyBkZWZpbmVkIGxhdGVyXG4gICAgfVxuICBdIH07XG4gIGNvbnN0IEtPVExJTl9QQVJFTl9UWVBFMiA9IEtPVExJTl9QQVJFTl9UWVBFO1xuICBLT1RMSU5fUEFSRU5fVFlQRTIudmFyaWFudHNbMV0uY29udGFpbnMgPSBbIEtPVExJTl9QQVJFTl9UWVBFIF07XG4gIEtPVExJTl9QQVJFTl9UWVBFLnZhcmlhbnRzWzFdLmNvbnRhaW5zID0gWyBLT1RMSU5fUEFSRU5fVFlQRTIgXTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdLb3RsaW4nLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdrdCcsXG4gICAgICAna3RzJ1xuICAgIF0sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXCpcXFxcKicsXG4gICAgICAgICdcXFxcKi8nLFxuICAgICAgICB7XG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBLT1RMSU5fTkVTVEVEX0NPTU1FTlQsXG4gICAgICBLRVlXT1JEU19XSVRIX0xBQkVMLFxuICAgICAgTEFCRUwsXG4gICAgICBBTk5PVEFUSU9OX1VTRV9TSVRFLFxuICAgICAgQU5OT1RBVElPTixcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnZnVuY3Rpb24nLFxuICAgICAgICBiZWdpbktleXdvcmRzOiAnZnVuJyxcbiAgICAgICAgZW5kOiAnWyhdfCQnLFxuICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICByZWxldmFuY2U6IDUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICdcXFxccypcXFxcKCcsXG4gICAgICAgICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgYmVnaW46IC88LyxcbiAgICAgICAgICAgIGVuZDogLz4vLFxuICAgICAgICAgICAga2V5d29yZHM6ICdyZWlmaWVkJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAvOi8sXG4gICAgICAgICAgICAgICAgZW5kOiAvWz0sXFwvXS8sXG4gICAgICAgICAgICAgICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgICAgIEtPVExJTl9QQVJFTl9UWVBFLFxuICAgICAgICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICAgICAgS09UTElOX05FU1RFRF9DT01NRU5UXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFLFxuICAgICAgICAgICAgICBLT1RMSU5fTkVTVEVEX0NPTU1FTlQsXG4gICAgICAgICAgICAgIEFOTk9UQVRJT05fVVNFX1NJVEUsXG4gICAgICAgICAgICAgIEFOTk9UQVRJT04sXG4gICAgICAgICAgICAgIFNUUklORyxcbiAgICAgICAgICAgICAgaGxqcy5DX05VTUJFUl9NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBLT1RMSU5fTkVTVEVEX0NPTU1FTlRcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFtcbiAgICAgICAgICAvY2xhc3N8aW50ZXJmYWNlfHRyYWl0LyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgICAgIF0sXG4gICAgICAgIGJlZ2luU2NvcGU6IHtcbiAgICAgICAgICAzOiBcInRpdGxlLmNsYXNzXCJcbiAgICAgICAgfSxcbiAgICAgICAga2V5d29yZHM6ICdjbGFzcyBpbnRlcmZhY2UgdHJhaXQnLFxuICAgICAgICBlbmQ6IC9bOlxceyhdfCQvLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBpbGxlZ2FsOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7IGJlZ2luS2V5d29yZHM6ICdwdWJsaWMgcHJvdGVjdGVkIGludGVybmFsIHByaXZhdGUgY29uc3RydWN0b3InIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAndHlwZScsXG4gICAgICAgICAgICBiZWdpbjogLzwvLFxuICAgICAgICAgICAgZW5kOiAvPi8sXG4gICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgICAgICAgIGJlZ2luOiAvWyw6XVxccyovLFxuICAgICAgICAgICAgZW5kOiAvWzxcXCgsKXtcXHNdfCQvLFxuICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgcmV0dXJuRW5kOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBBTk5PVEFUSU9OX1VTRV9TSVRFLFxuICAgICAgICAgIEFOTk9UQVRJT05cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIFNUUklORyxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiBcIl4jIS91c3IvYmluL2VudlwiLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgaWxsZWdhbDogJ1xcbidcbiAgICAgIH0sXG4gICAgICBLT1RMSU5fTlVNQkVSX01PREVcbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IGtvdGxpbiBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsiZGVjaW1hbERpZ2l0cyIsImZyYWMiLCJoZXhEaWdpdHMiLCJOVU1FUklDIiwiY2xhc3NOYW1lIiwidmFyaWFudHMiLCJiZWdpbiIsInJlbGV2YW5jZSIsImtvdGxpbiIsImhsanMiLCJLRVlXT1JEUyIsImtleXdvcmQiLCJidWlsdF9pbiIsImxpdGVyYWwiLCJLRVlXT1JEU19XSVRIX0xBQkVMIiwic3RhcnRzIiwiY29udGFpbnMiLCJMQUJFTCIsIlVOREVSU0NPUkVfSURFTlRfUkUiLCJTVUJTVCIsImVuZCIsIkNfTlVNQkVSX01PREUiLCJWQVJJQUJMRSIsIlNUUklORyIsImlsbGVnYWwiLCJCQUNLU0xBU0hfRVNDQVBFIiwicHVzaCIsIkFOTk9UQVRJT05fVVNFX1NJVEUiLCJBTk5PVEFUSU9OIiwiaW5oZXJpdCIsIktPVExJTl9OVU1CRVJfTU9ERSIsIktPVExJTl9ORVNURURfQ09NTUVOVCIsIkNPTU1FTlQiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIktPVExJTl9QQVJFTl9UWVBFIiwiS09UTElOX1BBUkVOX1RZUEUyIiwibmFtZSIsImFsaWFzZXMiLCJrZXl3b3JkcyIsIkNfTElORV9DT01NRU5UX01PREUiLCJiZWdpbktleXdvcmRzIiwicmV0dXJuQmVnaW4iLCJleGNsdWRlRW5kIiwiVU5ERVJTQ09SRV9USVRMRV9NT0RFIiwiZW5kc1BhcmVudCIsImVuZHNXaXRoUGFyZW50IiwiYmVnaW5TY29wZSIsImV4Y2x1ZGVCZWdpbiIsInJldHVybkVuZCIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/kotlin.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/less.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/less.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ less)\n/* harmony export */ });\nconst MODES = (hljs)=>{\n return {\n IMPORTANT: {\n scope: \"meta\",\n begin: \"!important\"\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: \"number\",\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: \"selector-attr\",\n begin: /\\[/,\n end: /\\]/,\n illegal: \"$\",\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: \"number\",\n begin: hljs.NUMBER_RE + \"(\" + \"%|em|ex|ch|rem\" + \"|vw|vh|vmin|vmax\" + \"|cm|mm|in|pt|pc|px\" + \"|deg|grad|rad|turn\" + \"|s|ms\" + \"|Hz|kHz\" + \"|dpi|dpcm|dppx\" + \")?\",\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z][A-Za-z0-9_-]*/\n }\n };\n};\nconst TAGS = [\n \"a\",\n \"abbr\",\n \"address\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"blockquote\",\n \"body\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"html\",\n \"i\",\n \"iframe\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"label\",\n \"legend\",\n \"li\",\n \"main\",\n \"mark\",\n \"menu\",\n \"nav\",\n \"object\",\n \"ol\",\n \"p\",\n \"q\",\n \"quote\",\n \"samp\",\n \"section\",\n \"span\",\n \"strong\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"tr\",\n \"ul\",\n \"var\",\n \"video\"\n];\nconst MEDIA_FEATURES = [\n \"any-hover\",\n \"any-pointer\",\n \"aspect-ratio\",\n \"color\",\n \"color-gamut\",\n \"color-index\",\n \"device-aspect-ratio\",\n \"device-height\",\n \"device-width\",\n \"display-mode\",\n \"forced-colors\",\n \"grid\",\n \"height\",\n \"hover\",\n \"inverted-colors\",\n \"monochrome\",\n \"orientation\",\n \"overflow-block\",\n \"overflow-inline\",\n \"pointer\",\n \"prefers-color-scheme\",\n \"prefers-contrast\",\n \"prefers-reduced-motion\",\n \"prefers-reduced-transparency\",\n \"resolution\",\n \"scan\",\n \"scripting\",\n \"update\",\n \"width\",\n // TODO: find a better solution?\n \"min-width\",\n \"max-width\",\n \"min-height\",\n \"max-height\"\n];\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n \"active\",\n \"any-link\",\n \"blank\",\n \"checked\",\n \"current\",\n \"default\",\n \"defined\",\n \"dir\",\n \"disabled\",\n \"drop\",\n \"empty\",\n \"enabled\",\n \"first\",\n \"first-child\",\n \"first-of-type\",\n \"fullscreen\",\n \"future\",\n \"focus\",\n \"focus-visible\",\n \"focus-within\",\n \"has\",\n \"host\",\n \"host-context\",\n \"hover\",\n \"indeterminate\",\n \"in-range\",\n \"invalid\",\n \"is\",\n \"lang\",\n \"last-child\",\n \"last-of-type\",\n \"left\",\n \"link\",\n \"local-link\",\n \"not\",\n \"nth-child\",\n \"nth-col\",\n \"nth-last-child\",\n \"nth-last-col\",\n \"nth-last-of-type\",\n \"nth-of-type\",\n \"only-child\",\n \"only-of-type\",\n \"optional\",\n \"out-of-range\",\n \"past\",\n \"placeholder-shown\",\n \"read-only\",\n \"read-write\",\n \"required\",\n \"right\",\n \"root\",\n \"scope\",\n \"target\",\n \"target-within\",\n \"user-invalid\",\n \"valid\",\n \"visited\",\n \"where\" // where()\n];\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n \"after\",\n \"backdrop\",\n \"before\",\n \"cue\",\n \"cue-region\",\n \"first-letter\",\n \"first-line\",\n \"grammar-error\",\n \"marker\",\n \"part\",\n \"placeholder\",\n \"selection\",\n \"slotted\",\n \"spelling-error\"\n];\nconst ATTRIBUTES = [\n \"align-content\",\n \"align-items\",\n \"align-self\",\n \"all\",\n \"animation\",\n \"animation-delay\",\n \"animation-direction\",\n \"animation-duration\",\n \"animation-fill-mode\",\n \"animation-iteration-count\",\n \"animation-name\",\n \"animation-play-state\",\n \"animation-timing-function\",\n \"backface-visibility\",\n \"background\",\n \"background-attachment\",\n \"background-blend-mode\",\n \"background-clip\",\n \"background-color\",\n \"background-image\",\n \"background-origin\",\n \"background-position\",\n \"background-repeat\",\n \"background-size\",\n \"block-size\",\n \"border\",\n \"border-block\",\n \"border-block-color\",\n \"border-block-end\",\n \"border-block-end-color\",\n \"border-block-end-style\",\n \"border-block-end-width\",\n \"border-block-start\",\n \"border-block-start-color\",\n \"border-block-start-style\",\n \"border-block-start-width\",\n \"border-block-style\",\n \"border-block-width\",\n \"border-bottom\",\n \"border-bottom-color\",\n \"border-bottom-left-radius\",\n \"border-bottom-right-radius\",\n \"border-bottom-style\",\n \"border-bottom-width\",\n \"border-collapse\",\n \"border-color\",\n \"border-image\",\n \"border-image-outset\",\n \"border-image-repeat\",\n \"border-image-slice\",\n \"border-image-source\",\n \"border-image-width\",\n \"border-inline\",\n \"border-inline-color\",\n \"border-inline-end\",\n \"border-inline-end-color\",\n \"border-inline-end-style\",\n \"border-inline-end-width\",\n \"border-inline-start\",\n \"border-inline-start-color\",\n \"border-inline-start-style\",\n \"border-inline-start-width\",\n \"border-inline-style\",\n \"border-inline-width\",\n \"border-left\",\n \"border-left-color\",\n \"border-left-style\",\n \"border-left-width\",\n \"border-radius\",\n \"border-right\",\n \"border-right-color\",\n \"border-right-style\",\n \"border-right-width\",\n \"border-spacing\",\n \"border-style\",\n \"border-top\",\n \"border-top-color\",\n \"border-top-left-radius\",\n \"border-top-right-radius\",\n \"border-top-style\",\n \"border-top-width\",\n \"border-width\",\n \"bottom\",\n \"box-decoration-break\",\n \"box-shadow\",\n \"box-sizing\",\n \"break-after\",\n \"break-before\",\n \"break-inside\",\n \"caption-side\",\n \"caret-color\",\n \"clear\",\n \"clip\",\n \"clip-path\",\n \"clip-rule\",\n \"color\",\n \"column-count\",\n \"column-fill\",\n \"column-gap\",\n \"column-rule\",\n \"column-rule-color\",\n \"column-rule-style\",\n \"column-rule-width\",\n \"column-span\",\n \"column-width\",\n \"columns\",\n \"contain\",\n \"content\",\n \"content-visibility\",\n \"counter-increment\",\n \"counter-reset\",\n \"cue\",\n \"cue-after\",\n \"cue-before\",\n \"cursor\",\n \"direction\",\n \"display\",\n \"empty-cells\",\n \"filter\",\n \"flex\",\n \"flex-basis\",\n \"flex-direction\",\n \"flex-flow\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"float\",\n \"flow\",\n \"font\",\n \"font-display\",\n \"font-family\",\n \"font-feature-settings\",\n \"font-kerning\",\n \"font-language-override\",\n \"font-size\",\n \"font-size-adjust\",\n \"font-smoothing\",\n \"font-stretch\",\n \"font-style\",\n \"font-synthesis\",\n \"font-variant\",\n \"font-variant-caps\",\n \"font-variant-east-asian\",\n \"font-variant-ligatures\",\n \"font-variant-numeric\",\n \"font-variant-position\",\n \"font-variation-settings\",\n \"font-weight\",\n \"gap\",\n \"glyph-orientation-vertical\",\n \"grid\",\n \"grid-area\",\n \"grid-auto-columns\",\n \"grid-auto-flow\",\n \"grid-auto-rows\",\n \"grid-column\",\n \"grid-column-end\",\n \"grid-column-start\",\n \"grid-gap\",\n \"grid-row\",\n \"grid-row-end\",\n \"grid-row-start\",\n \"grid-template\",\n \"grid-template-areas\",\n \"grid-template-columns\",\n \"grid-template-rows\",\n \"hanging-punctuation\",\n \"height\",\n \"hyphens\",\n \"icon\",\n \"image-orientation\",\n \"image-rendering\",\n \"image-resolution\",\n \"ime-mode\",\n \"inline-size\",\n \"isolation\",\n \"justify-content\",\n \"left\",\n \"letter-spacing\",\n \"line-break\",\n \"line-height\",\n \"list-style\",\n \"list-style-image\",\n \"list-style-position\",\n \"list-style-type\",\n \"margin\",\n \"margin-block\",\n \"margin-block-end\",\n \"margin-block-start\",\n \"margin-bottom\",\n \"margin-inline\",\n \"margin-inline-end\",\n \"margin-inline-start\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"marks\",\n \"mask\",\n \"mask-border\",\n \"mask-border-mode\",\n \"mask-border-outset\",\n \"mask-border-repeat\",\n \"mask-border-slice\",\n \"mask-border-source\",\n \"mask-border-width\",\n \"mask-clip\",\n \"mask-composite\",\n \"mask-image\",\n \"mask-mode\",\n \"mask-origin\",\n \"mask-position\",\n \"mask-repeat\",\n \"mask-size\",\n \"mask-type\",\n \"max-block-size\",\n \"max-height\",\n \"max-inline-size\",\n \"max-width\",\n \"min-block-size\",\n \"min-height\",\n \"min-inline-size\",\n \"min-width\",\n \"mix-blend-mode\",\n \"nav-down\",\n \"nav-index\",\n \"nav-left\",\n \"nav-right\",\n \"nav-up\",\n \"none\",\n \"normal\",\n \"object-fit\",\n \"object-position\",\n \"opacity\",\n \"order\",\n \"orphans\",\n \"outline\",\n \"outline-color\",\n \"outline-offset\",\n \"outline-style\",\n \"outline-width\",\n \"overflow\",\n \"overflow-wrap\",\n \"overflow-x\",\n \"overflow-y\",\n \"padding\",\n \"padding-block\",\n \"padding-block-end\",\n \"padding-block-start\",\n \"padding-bottom\",\n \"padding-inline\",\n \"padding-inline-end\",\n \"padding-inline-start\",\n \"padding-left\",\n \"padding-right\",\n \"padding-top\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"pause\",\n \"pause-after\",\n \"pause-before\",\n \"perspective\",\n \"perspective-origin\",\n \"pointer-events\",\n \"position\",\n \"quotes\",\n \"resize\",\n \"rest\",\n \"rest-after\",\n \"rest-before\",\n \"right\",\n \"row-gap\",\n \"scroll-margin\",\n \"scroll-margin-block\",\n \"scroll-margin-block-end\",\n \"scroll-margin-block-start\",\n \"scroll-margin-bottom\",\n \"scroll-margin-inline\",\n \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\",\n \"scroll-margin-left\",\n \"scroll-margin-right\",\n \"scroll-margin-top\",\n \"scroll-padding\",\n \"scroll-padding-block\",\n \"scroll-padding-block-end\",\n \"scroll-padding-block-start\",\n \"scroll-padding-bottom\",\n \"scroll-padding-inline\",\n \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\",\n \"scroll-padding-left\",\n \"scroll-padding-right\",\n \"scroll-padding-top\",\n \"scroll-snap-align\",\n \"scroll-snap-stop\",\n \"scroll-snap-type\",\n \"scrollbar-color\",\n \"scrollbar-gutter\",\n \"scrollbar-width\",\n \"shape-image-threshold\",\n \"shape-margin\",\n \"shape-outside\",\n \"speak\",\n \"speak-as\",\n \"src\",\n \"tab-size\",\n \"table-layout\",\n \"text-align\",\n \"text-align-all\",\n \"text-align-last\",\n \"text-combine-upright\",\n \"text-decoration\",\n \"text-decoration-color\",\n \"text-decoration-line\",\n \"text-decoration-style\",\n \"text-emphasis\",\n \"text-emphasis-color\",\n \"text-emphasis-position\",\n \"text-emphasis-style\",\n \"text-indent\",\n \"text-justify\",\n \"text-orientation\",\n \"text-overflow\",\n \"text-rendering\",\n \"text-shadow\",\n \"text-transform\",\n \"text-underline-position\",\n \"top\",\n \"transform\",\n \"transform-box\",\n \"transform-origin\",\n \"transform-style\",\n \"transition\",\n \"transition-delay\",\n \"transition-duration\",\n \"transition-property\",\n \"transition-timing-function\",\n \"unicode-bidi\",\n \"vertical-align\",\n \"visibility\",\n \"voice-balance\",\n \"voice-duration\",\n \"voice-family\",\n \"voice-pitch\",\n \"voice-range\",\n \"voice-rate\",\n \"voice-stress\",\n \"voice-volume\",\n \"white-space\",\n \"widows\",\n \"width\",\n \"will-change\",\n \"word-break\",\n \"word-spacing\",\n \"word-wrap\",\n \"writing-mode\",\n \"z-index\"\n].reverse();\n// some grammars use them all as a single group\nconst PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS);\n/*\nLanguage: Less\nDescription: It's CSS, with just a little more.\nAuthor: Max Mikhailov <seven.phases.max@gmail.com>\nWebsite: http://lesscss.org\nCategory: common, css, web\n*/ /** @type LanguageFn */ function less(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_SELECTORS$1 = PSEUDO_SELECTORS;\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = \"[\\\\w-]+\"; // yes, Less identifiers may begin with a digit\n const INTERP_IDENT_RE = \"(\" + IDENT_RE + \"|@\\\\{\" + IDENT_RE + \"\\\\})\";\n /* Generic Modes */ const RULES = [];\n const VALUE_MODES = []; // forward def. for recursive modes\n const STRING_MODE = function(c) {\n return {\n // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n className: \"string\",\n begin: \"~?\" + c + \".*?\" + c\n };\n };\n const IDENT_MODE = function(name, begin, relevance) {\n return {\n className: name,\n begin: begin,\n relevance: relevance\n };\n };\n const AT_KEYWORDS = {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n };\n const PARENS_MODE = {\n // used only to properly balance nested parens inside mixin call, def. arg list\n begin: \"\\\\(\",\n end: \"\\\\)\",\n contains: VALUE_MODES,\n keywords: AT_KEYWORDS,\n relevance: 0\n };\n // generic Less highlighter (used almost everywhere except selectors):\n VALUE_MODES.push(hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, STRING_MODE(\"'\"), STRING_MODE('\"'), modes.CSS_NUMBER_MODE, {\n begin: \"(url|data-uri)\\\\(\",\n starts: {\n className: \"string\",\n end: \"[\\\\)\\\\n]\",\n excludeEnd: true\n }\n }, modes.HEXCOLOR, PARENS_MODE, IDENT_MODE(\"variable\", \"@@?\" + IDENT_RE, 10), IDENT_MODE(\"variable\", \"@\\\\{\" + IDENT_RE + \"\\\\}\"), IDENT_MODE(\"built_in\", \"~?`[^`]*?`\"), {\n className: \"attribute\",\n begin: IDENT_RE + \"\\\\s*:\",\n end: \":\",\n returnBegin: true,\n excludeEnd: true\n }, modes.IMPORTANT, {\n beginKeywords: \"and not\"\n }, modes.FUNCTION_DISPATCH);\n const VALUE_WITH_RULESETS = VALUE_MODES.concat({\n begin: /\\{/,\n end: /\\}/,\n contains: RULES\n });\n const MIXIN_GUARD_MODE = {\n beginKeywords: \"when\",\n endsWithParent: true,\n contains: [\n {\n beginKeywords: \"and not\"\n }\n ].concat(VALUE_MODES) // using this form to override VALUEs 'function' match\n };\n /* Rule-Level Modes */ const RULE_MODE = {\n begin: INTERP_IDENT_RE + \"\\\\s*:\",\n returnBegin: true,\n end: /[;}]/,\n relevance: 0,\n contains: [\n {\n begin: /-(webkit|moz|ms|o)-/\n },\n modes.CSS_VARIABLE,\n {\n className: \"attribute\",\n begin: \"\\\\b(\" + ATTRIBUTES.join(\"|\") + \")\\\\b\",\n end: /(?=:)/,\n starts: {\n endsWithParent: true,\n illegal: \"[<=$]\",\n relevance: 0,\n contains: VALUE_MODES\n }\n }\n ]\n };\n const AT_RULE_MODE = {\n className: \"keyword\",\n begin: \"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b\",\n starts: {\n end: \"[;{}]\",\n keywords: AT_KEYWORDS,\n returnEnd: true,\n contains: VALUE_MODES,\n relevance: 0\n }\n };\n // variable definitions and calls\n const VAR_RULE_MODE = {\n className: \"variable\",\n variants: [\n // using more strict pattern for higher relevance to increase chances of Less detection.\n // this is *the only* Less specific statement used in most of the sources, so...\n // (well still often loose to the css-parser unless there's '//' comment,\n // simply because 1 variable just can't beat 99 properties :)\n {\n begin: \"@\" + IDENT_RE + \"\\\\s*:\",\n relevance: 15\n },\n {\n begin: \"@\" + IDENT_RE\n }\n ],\n starts: {\n end: \"[;}]\",\n returnEnd: true,\n contains: VALUE_WITH_RULESETS\n }\n };\n const SELECTOR_MODE = {\n // first parse unambiguous selectors (i.e. those not starting with tag)\n // then fall into the scary lookahead-discriminator variant.\n // this mode also handles mixin definitions and calls\n variants: [\n {\n begin: \"[\\\\.#:&\\\\[>]\",\n end: \"[;{}]\" // mixin calls end with ';'\n },\n {\n begin: INTERP_IDENT_RE,\n end: /\\{/\n }\n ],\n returnBegin: true,\n returnEnd: true,\n illegal: \"[<='$\\\"]\",\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n MIXIN_GUARD_MODE,\n IDENT_MODE(\"keyword\", \"all\\\\b\"),\n IDENT_MODE(\"variable\", \"@\\\\{\" + IDENT_RE + \"\\\\}\"),\n {\n begin: \"\\\\b(\" + TAGS.join(\"|\") + \")\\\\b\",\n className: \"selector-tag\"\n },\n modes.CSS_NUMBER_MODE,\n IDENT_MODE(\"selector-tag\", INTERP_IDENT_RE, 0),\n IDENT_MODE(\"selector-id\", \"#\" + INTERP_IDENT_RE),\n IDENT_MODE(\"selector-class\", \"\\\\.\" + INTERP_IDENT_RE, 0),\n IDENT_MODE(\"selector-tag\", \"&\", 0),\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: \"selector-pseudo\",\n begin: \":(\" + PSEUDO_CLASSES.join(\"|\") + \")\"\n },\n {\n className: \"selector-pseudo\",\n begin: \":(:)?(\" + PSEUDO_ELEMENTS.join(\"|\") + \")\"\n },\n {\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n contains: VALUE_WITH_RULESETS\n },\n {\n begin: \"!important\"\n },\n modes.FUNCTION_DISPATCH\n ]\n };\n const PSEUDO_SELECTOR_MODE = {\n begin: IDENT_RE + \":(:)?\" + `(${PSEUDO_SELECTORS$1.join(\"|\")})`,\n returnBegin: true,\n contains: [\n SELECTOR_MODE\n ]\n };\n RULES.push(hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, AT_RULE_MODE, VAR_RULE_MODE, PSEUDO_SELECTOR_MODE, RULE_MODE, SELECTOR_MODE, MIXIN_GUARD_MODE, modes.FUNCTION_DISPATCH);\n return {\n name: \"Less\",\n case_insensitive: true,\n illegal: \"[=>'/<($\\\"]\",\n contains: RULES\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9sZXNzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNQSxRQUFRLENBQUNDO0lBQ2IsT0FBTztRQUNMQyxXQUFXO1lBQ1RDLE9BQU87WUFDUEMsT0FBTztRQUNUO1FBQ0FDLGVBQWVKLEtBQUtLLG9CQUFvQjtRQUN4Q0MsVUFBVTtZQUNSSixPQUFPO1lBQ1BDLE9BQU87UUFDVDtRQUNBSSxtQkFBbUI7WUFDakJDLFdBQVc7WUFDWEwsT0FBTztRQUNUO1FBQ0FNLHlCQUF5QjtZQUN2QlAsT0FBTztZQUNQQyxPQUFPO1lBQ1BPLEtBQUs7WUFDTEMsU0FBUztZQUNUQyxVQUFVO2dCQUNSWixLQUFLYSxnQkFBZ0I7Z0JBQ3JCYixLQUFLYyxpQkFBaUI7YUFDdkI7UUFDSDtRQUNBQyxpQkFBaUI7WUFDZmIsT0FBTztZQUNQQyxPQUFPSCxLQUFLZ0IsU0FBUyxHQUFHLE1BQ3RCLG1CQUNBLHFCQUNBLHVCQUNBLHVCQUNBLFVBQ0EsWUFDQSxtQkFDQTtZQUNGQyxXQUFXO1FBQ2I7UUFDQUMsY0FBYztZQUNaVixXQUFXO1lBQ1hMLE9BQU87UUFDVDtJQUNGO0FBQ0Y7QUFFQSxNQUFNZ0IsT0FBTztJQUNYO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsTUFBTUMsaUJBQWlCO0lBQ3JCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxnQ0FBZ0M7SUFDaEM7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUVELGtFQUFrRTtBQUNsRSxNQUFNQyxpQkFBaUI7SUFDckI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxRQUFRLFVBQVU7Q0FDbkI7QUFFRCxtRUFBbUU7QUFDbkUsTUFBTUMsa0JBQWtCO0lBQ3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUVELE1BQU1DLGFBQWE7SUFDakI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lB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U0FBZTtJQUM3QjtJQUVBM0IsTUFBTWEsSUFBSSxDQUNSOUMsS0FBSytDLG1CQUFtQixFQUN4Qi9DLEtBQUtLLG9CQUFvQixFQUN6Qm1ELGNBQ0FFLGVBQ0FHLHNCQUNBTixXQUNBSyxlQUNBUCxrQkFDQXpCLE1BQU1yQixpQkFBaUI7SUFHekIsT0FBTztRQUNMK0IsTUFBTTtRQUNOd0Isa0JBQWtCO1FBQ2xCbkQsU0FBUztRQUNUQyxVQUFVcUI7SUFDWjtBQUNGO0FBRTJCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9sZXNzLmpzPzg2NWUiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTU9ERVMgPSAoaGxqcykgPT4ge1xuICByZXR1cm4ge1xuICAgIElNUE9SVEFOVDoge1xuICAgICAgc2NvcGU6ICdtZXRhJyxcbiAgICAgIGJlZ2luOiAnIWltcG9ydGFudCdcbiAgICB9LFxuICAgIEJMT0NLX0NPTU1FTlQ6IGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgSEVYQ09MT1I6IHtcbiAgICAgIHNjb3BlOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiAvIygoWzAtOWEtZkEtRl17Myw0fSl8KChbMC05YS1mQS1GXXsyfSl7Myw0fSkpXFxiL1xuICAgIH0sXG4gICAgRlVOQ1RJT05fRElTUEFUQ0g6IHtcbiAgICAgIGNsYXNzTmFtZTogXCJidWlsdF9pblwiLFxuICAgICAgYmVnaW46IC9bXFx3LV0rKD89XFwoKS9cbiAgICB9LFxuICAgIEFUVFJJQlVURV9TRUxFQ1RPUl9NT0RFOiB7XG4gICAgICBzY29wZTogJ3NlbGVjdG9yLWF0dHInLFxuICAgICAgYmVnaW46IC9cXFsvLFxuICAgICAgZW5kOiAvXFxdLyxcbiAgICAgIGlsbGVnYWw6ICckJyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERVxuICAgICAgXVxuICAgIH0sXG4gICAgQ1NTX05VTUJFUl9NT0RFOiB7XG4gICAgICBzY29wZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogaGxqcy5OVU1CRVJfUkUgKyAnKCcgK1xuICAgICAgICAnJXxlbXxleHxjaHxyZW0nICtcbiAgICAgICAgJ3x2d3x2aHx2bWlufHZtYXgnICtcbiAgICAgICAgJ3xjbXxtbXxpbnxwdHxwY3xweCcgK1xuICAgICAgICAnfGRlZ3xncmFkfHJhZHx0dXJuJyArXG4gICAgICAgICd8c3xtcycgK1xuICAgICAgICAnfEh6fGtIeicgK1xuICAgICAgICAnfGRwaXxkcGNtfGRwcHgnICtcbiAgICAgICAgJyk/JyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAgQ1NTX1ZBUklBQkxFOiB7XG4gICAgICBjbGFzc05hbWU6IFwiYXR0clwiLFxuICAgICAgYmVnaW46IC8tLVtBLVphLXpdW0EtWmEtejAtOV8tXSovXG4gICAgfVxuICB9O1xufTtcblxuY29uc3QgVEFHUyA9IFtcbiAgJ2EnLFxuICAnYWJicicsXG4gICdhZGRyZXNzJyxcbiAgJ2FydGljbGUnLFxuICAnYXNpZGUnLFxuICAnYXVkaW8nLFxuICAnYicsXG4gICdibG9ja3F1b3RlJyxcbiAgJ2JvZHknLFxuICAnYnV0dG9uJyxcbiAgJ2NhbnZhcycsXG4gICdjYXB0aW9uJyxcbiAgJ2NpdGUnLFxuICAnY29kZScsXG4gICdkZCcsXG4gICdkZWwnLFxuICAnZGV0YWlscycsXG4gICdkZm4nLFxuICAnZGl2JyxcbiAgJ2RsJyxcbiAgJ2R0JyxcbiAgJ2VtJyxcbiAgJ2ZpZWxkc2V0JyxcbiAgJ2ZpZ2NhcHRpb24nLFxuICAnZmlndXJlJyxcbiAgJ2Zvb3RlcicsXG4gICdmb3JtJyxcbiAgJ2gxJyxcbiAgJ2gyJyxcbiAgJ2gzJyxcbiAgJ2g0JyxcbiAgJ2g1JyxcbiAgJ2g2JyxcbiAgJ2hlYWRlcicsXG4gICdoZ3JvdXAnLFxuICAnaHRtbCcsXG4gICdpJyxcbiAgJ2lmcmFtZScsXG4gICdpbWcnLFxuICAnaW5wdXQnLFxuICAnaW5zJyxcbiAgJ2tiZCcsXG4gICdsYWJlbCcsXG4gICdsZWdlbmQnLFxuICAnbGknLFxuICAnbWFpbicsXG4gICdtYXJrJyxcbiAgJ21lbnUnLFxuICAnbmF2JyxcbiAgJ29iamVjdCcsXG4gICdvbCcsXG4gICdwJyxcbiAgJ3EnLFxuICAncXVvdGUnLFxuICAnc2FtcCcsXG4gICdzZWN0aW9uJyxcbiAgJ3NwYW4nLFxuICAnc3Ryb25nJyxcbiAgJ3N1bW1hcnknLFxuICAnc3VwJyxcbiAgJ3RhYmxlJyxcbiAgJ3Rib2R5JyxcbiAgJ3RkJyxcbiAgJ3RleHRhcmVhJyxcbiAgJ3Rmb290JyxcbiAgJ3RoJyxcbiAgJ3RoZWFkJyxcbiAgJ3RpbWUnLFxuICAndHInLFxuICAndWwnLFxuICAndmFyJyxcbiAgJ3ZpZGVvJ1xuXTtcblxuY29uc3QgTUVESUFfRkVBVFVSRVMgPSBbXG4gICdhbnktaG92ZXInLFxuICAnYW55LXBvaW50ZXInLFxuICAnYXNwZWN0LXJhdGlvJyxcbiAgJ2NvbG9yJyxcbiAgJ2NvbG9yLWdhbXV0JyxcbiAgJ2NvbG9yLWluZGV4JyxcbiAgJ2RldmljZS1hc3BlY3QtcmF0aW8nLFxuICAnZGV2aWNlLWhlaWdodCcsXG4gICdkZXZpY2Utd2lkdGgnLFxuICAnZGlzcGxheS1tb2RlJyxcbiAgJ2ZvcmNlZC1jb2xvcnMnLFxuICAnZ3JpZCcsXG4gICdoZWlnaHQnLFxuICAnaG92ZXInLFxuICAnaW52ZXJ0ZWQtY29sb3JzJyxcbiAgJ21vbm9jaHJvbWUnLFxuICAnb3JpZW50YXRpb24nLFxuICAnb3ZlcmZsb3ctYmxvY2snLFxuICAnb3ZlcmZsb3ctaW5saW5lJyxcbiAgJ3BvaW50ZXInLFxuICAncHJlZmVycy1jb2xvci1zY2hlbWUnLFxuICAncHJlZmVycy1jb250cmFzdCcsXG4gICdwcmVmZXJzLXJlZHVjZWQtbW90aW9uJyxcbiAgJ3ByZWZlcnMtcmVkdWNlZC10cmFuc3BhcmVuY3knLFxuICAncmVzb2x1dGlvbicsXG4gICdzY2FuJyxcbiAgJ3NjcmlwdGluZycsXG4gICd1cGRhdGUnLFxuICAnd2lkdGgnLFxuICAvLyBUT0RPOiBmaW5kIGEgYmV0dGVyIHNvbHV0aW9uP1xuICAnbWluLXdpZHRoJyxcbiAgJ21heC13aWR0aCcsXG4gICdtaW4taGVpZ2h0JyxcbiAgJ21heC1oZWlnaHQnXG5dO1xuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvUHNldWRvLWNsYXNzZXNcbmNvbnN0IFBTRVVET19DTEFTU0VTID0gW1xuICAnYWN0aXZlJyxcbiAgJ2FueS1saW5rJyxcbiAgJ2JsYW5rJyxcbiAgJ2NoZWNrZWQnLFxuICAnY3VycmVudCcsXG4gICdkZWZhdWx0JyxcbiAgJ2RlZmluZWQnLFxuICAnZGlyJywgLy8gZGlyKClcbiAgJ2Rpc2FibGVkJyxcbiAgJ2Ryb3AnLFxuICAnZW1wdHknLFxuICAnZW5hYmxlZCcsXG4gICdmaXJzdCcsXG4gICdmaXJzdC1jaGlsZCcsXG4gICdmaXJzdC1vZi10eXBlJyxcbiAgJ2Z1bGxzY3JlZW4nLFxuICAnZnV0dXJlJyxcbiAgJ2ZvY3VzJyxcbiAgJ2ZvY3VzLXZpc2libGUnLFxuICAnZm9jdXMtd2l0aGluJyxcbiAgJ2hhcycsIC8vIGhhcygpXG4gICdob3N0JywgLy8gaG9zdCBvciBob3N0KClcbiAgJ2hvc3QtY29udGV4dCcsIC8vIGhvc3QtY29udGV4dCgpXG4gICdob3ZlcicsXG4gICdpbmRldGVybWluYXRlJyxcbiAgJ2luLXJhbmdlJyxcbiAgJ2ludmFsaWQnLFxuICAnaXMnLCAvLyBpcygpXG4gICdsYW5nJywgLy8gbGFuZygpXG4gICdsYXN0LWNoaWxkJyxcbiAgJ2xhc3Qtb2YtdHlwZScsXG4gICdsZWZ0JyxcbiAgJ2xpbmsnLFxuICAnbG9jYWwtbGluaycsXG4gICdub3QnLCAvLyBub3QoKVxuICAnbnRoLWNoaWxkJywgLy8gbnRoLWNoaWxkKClcbiAgJ250aC1jb2wnLCAvLyBudGgtY29sKClcbiAgJ250aC1sYXN0LWNoaWxkJywgLy8gbnRoLWxhc3QtY2hpbGQoKVxuICAnbnRoLWxhc3QtY29sJywgLy8gbnRoLWxhc3QtY29sKClcbiAgJ250aC1sYXN0LW9mLXR5cGUnLCAvL250aC1sYXN0LW9mLXR5cGUoKVxuICAnbnRoLW9mLXR5cGUnLCAvL250aC1vZi10eXBlKClcbiAgJ29ubHktY2hpbGQnLFxuICAnb25seS1vZi10eXBlJyxcbiAgJ29wdGlvbmFsJyxcbiAgJ291dC1vZi1yYW5nZScsXG4gICdwYXN0JyxcbiAgJ3BsYWNlaG9sZGVyLXNob3duJyxcbiAgJ3JlYWQtb25seScsXG4gICdyZWFkLXdyaXRlJyxcbiAgJ3JlcXVpcmVkJyxcbiAgJ3JpZ2h0JyxcbiAgJ3Jvb3QnLFxuICAnc2NvcGUnLFxuICAndGFyZ2V0JyxcbiAgJ3RhcmdldC13aXRoaW4nLFxuICAndXNlci1pbnZhbGlkJyxcbiAgJ3ZhbGlkJyxcbiAgJ3Zpc2l0ZWQnLFxuICAnd2hlcmUnIC8vIHdoZXJlKClcbl07XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Qc2V1ZG8tZWxlbWVudHNcbmNvbnN0IFBTRVVET19FTEVNRU5UUyA9IFtcbiAgJ2FmdGVyJyxcbiAgJ2JhY2tkcm9wJyxcbiAgJ2JlZm9yZScsXG4gICdjdWUnLFxuICAnY3VlLXJlZ2lvbicsXG4gICdmaXJzdC1sZXR0ZXInLFxuICAnZmlyc3QtbGluZScsXG4gICdncmFtbWFyLWVycm9yJyxcbiAgJ21hcmtlcicsXG4gICdwYXJ0JyxcbiAgJ3BsYWNlaG9sZGVyJyxcbiAgJ3NlbGVjdGlvbicsXG4gICdzbG90dGVkJyxcbiAgJ3NwZWxsaW5nLWVycm9yJ1xuXTtcblxuY29uc3QgQVRUUklCVVRFUyA9IFtcbiAgJ2FsaWduLWNvbnRlbnQnLFxuICAnYWxpZ24taXRlbXMnLFxuICAnYWxpZ24tc2VsZicsXG4gICdhbGwnLFxuICAnYW5pbWF0aW9uJyxcbiAgJ2FuaW1hdGlvbi1kZWxheScsXG4gICdhbmltYXRpb24tZGlyZWN0aW9uJyxcbiAgJ2FuaW1hdGlvbi1kdXJhdGlvbicsXG4gICdhbmltYXRpb24tZmlsbC1tb2RlJyxcbiAgJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnLFxuICAnYW5pbWF0aW9uLW5hbWUnLFxuICAnYW5pbWF0aW9uLXBsYXktc3RhdGUnLFxuICAnYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsXG4gICdiYWNrZmFjZS12aXNpYmlsaXR5JyxcbiAgJ2JhY2tncm91bmQnLFxuICAnYmFja2dyb3VuZC1hdHRhY2htZW50JyxcbiAgJ2JhY2tncm91bmQtYmxlbmQtbW9kZScsXG4gICdiYWNrZ3JvdW5kLWNsaXAnLFxuICAnYmFja2dyb3VuZC1jb2xvcicsXG4gICdiYWNrZ3JvdW5kLWltYWdlJyxcbiAgJ2JhY2tncm91bmQtb3JpZ2luJyxcbiAgJ2JhY2tncm91bmQtcG9zaXRpb24nLFxuICAnYmFja2dyb3VuZC1yZXBlYXQnLFxuICAnYmFja2dyb3VuZC1zaXplJyxcbiAgJ2Jsb2NrLXNpemUnLFxuICAnYm9yZGVyJyxcbiAgJ2JvcmRlci1ibG9jaycsXG4gICdib3JkZXItYmxvY2stY29sb3InLFxuICAnYm9yZGVyLWJsb2NrLWVuZCcsXG4gICdib3JkZXItYmxvY2stZW5kLWNvbG9yJyxcbiAgJ2JvcmRlci1ibG9jay1lbmQtc3R5bGUnLFxuICAnYm9yZGVyLWJsb2NrLWVuZC13aWR0aCcsXG4gICdib3JkZXItYmxvY2stc3RhcnQnLFxuICAnYm9yZGVyLWJsb2NrLXN0YXJ0LWNvbG9yJyxcbiAgJ2JvcmRlci1ibG9jay1zdGFydC1zdHlsZScsXG4gICdib3JkZXItYmxvY2stc3RhcnQtd2lkdGgnLFxuICAnYm9yZGVyLWJsb2NrLXN0eWxlJyxcbiAgJ2JvcmRlci1ibG9jay13aWR0aCcsXG4gICdib3JkZXItYm90dG9tJyxcbiAgJ2JvcmRlci1ib3R0b20tY29sb3InLFxuICAnYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cycsXG4gICdib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cycsXG4gICdib3JkZXItYm90dG9tLXN0eWxlJyxcbiAgJ2JvcmRlci1ib3R0b20td2lkdGgnLFxuICAnYm9yZGVyLWNvbGxhcHNlJyxcbiAgJ2JvcmRlci1jb2xvcicsXG4gICdib3JkZXItaW1hZ2UnLFxuICAnYm9yZGVyLWltYWdlLW91dHNldCcsXG4gICdib3JkZXItaW1hZ2UtcmVwZWF0JyxcbiAgJ2JvcmRlci1pbWFnZS1zbGljZScsXG4gICdib3JkZXItaW1hZ2Utc291cmNlJyxcbiAgJ2JvcmRlci1pbWFnZS13aWR0aCcsXG4gICdib3JkZXItaW5saW5lJyxcbiAgJ2JvcmRlci1pbmxpbmUtY29sb3InLFxuICAnYm9yZGVyLWlubGluZS1lbmQnLFxuICAnYm9yZGVyLWlubGluZS1lbmQtY29sb3InLFxuICAnYm9yZGVyLWlubGluZS1lbmQtc3R5bGUnLFxuICAnYm9yZGVyLWlubGluZS1lbmQtd2lkdGgnLFxuICAnYm9yZGVyLWlubGluZS1zdGFydCcsXG4gICdib3JkZXItaW5saW5lLXN0YXJ0LWNvbG9yJyxcbiAgJ2JvcmRlci1pbmxpbmUtc3RhcnQtc3R5bGUnLFxuICAnYm9yZGVyLWlubGluZS1zdGFydC13aWR0aCcsXG4gICdib3JkZXItaW5saW5lLXN0eWxlJyxcbiAgJ2JvcmRlci1pbmxpbmUtd2lkdGgnLFxuICAnYm9yZGVyLWxlZnQnLFxuICAnYm9yZGVyLWxlZnQtY29sb3InLFxuICAnYm9yZGVyLWxlZnQtc3R5bGUnLFxuICAnYm9yZGVyLWxlZnQtd2lkdGgnLFxuICAnYm9yZGVyLXJhZGl1cycsXG4gICdib3JkZXItcmlnaHQnLFxuICAnYm9yZGVyLXJpZ2h0LWNvbG9yJyxcbiAgJ2JvcmRlci1yaWdodC1zdHlsZScsXG4gICdib3JkZXItcmlnaHQtd2lkdGgnLFxuICAnYm9yZGVyLXNwYWNpbmcnLFxuICAnYm9yZGVyLXN0eWxlJyxcbiAgJ2JvcmRlci10b3AnLFxuICAnYm9yZGVyLXRvcC1jb2xvcicsXG4gICdib3JkZXItdG9wLWxlZnQtcmFkaXVzJyxcbiAgJ2JvcmRlci10b3AtcmlnaHQtcmFkaXVzJyxcbiAgJ2JvcmRlci10b3Atc3R5bGUnLFxuICAnYm9yZGVyLXRvcC13aWR0aCcsXG4gICdib3JkZXItd2lkdGgnLFxuICAnYm90dG9tJyxcbiAgJ2JveC1kZWNvcmF0aW9uLWJyZWFrJyxcbiAgJ2JveC1zaGFkb3cnLFxuICAnYm94LXNpemluZycsXG4gICdicmVhay1hZnRlcicsXG4gICdicmVhay1iZWZvcmUnLFxuICAnYnJlYWstaW5zaWRlJyxcbiAgJ2NhcHRpb24tc2lkZScsXG4gICdjYXJldC1jb2xvcicsXG4gICdjbGVhcicsXG4gICdjbGlwJyxcbiAgJ2NsaXAtcGF0aCcsXG4gICdjbGlwLXJ1bGUnLFxuICAnY29sb3InLFxuICAnY29sdW1uLWNvdW50JyxcbiAgJ2NvbHVtbi1maWxsJyxcbiAgJ2NvbHVtbi1nYXAnLFxuICAnY29sdW1uLXJ1bGUnLFxuICAnY29sdW1uLXJ1bGUtY29sb3InLFxuICAnY29sdW1uLXJ1bGUtc3R5bGUnLFxuICAnY29sdW1uLXJ1bGUtd2lkdGgnLFxuICAnY29sdW1uLXNwYW4nLFxuICAnY29sdW1uLXdpZHRoJyxcbiAgJ2NvbHVtbnMnLFxuICAnY29udGFpbicsXG4gICdjb250ZW50JyxcbiAgJ2NvbnRlbnQtdmlzaWJpbGl0eScsXG4gICdjb3VudGVyLWluY3JlbWVudCcsXG4gICdjb3VudGVyLXJlc2V0JyxcbiAgJ2N1ZScsXG4gICdjdWUtYWZ0ZXInLFxuICAnY3VlLWJlZm9yZScsXG4gICdjdXJzb3InLFxuICAnZGlyZWN0aW9uJyxcbiAgJ2Rpc3BsYXknLFxuICAnZW1wdHktY2VsbHMnLFxuICAnZmlsdGVyJyxcbiAgJ2ZsZXgnLFxuICAnZmxleC1iYXNpcycsXG4gICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LWZsb3cnLFxuICAnZmxleC1ncm93JyxcbiAgJ2ZsZXgtc2hyaW5rJyxcbiAgJ2ZsZXgtd3JhcCcsXG4gICdmbG9hdCcsXG4gICdmbG93JyxcbiAgJ2ZvbnQnLFxuICAnZm9udC1kaXNwbGF5JyxcbiAgJ2ZvbnQtZmFtaWx5JyxcbiAgJ2ZvbnQtZmVhdHVyZS1zZXR0aW5ncycsXG4gICdmb250LWtlcm5pbmcnLFxuICAnZm9udC1sYW5ndWFnZS1vdmVycmlkZScsXG4gICdmb250LXNpemUnLFxuICAnZm9udC1zaXplLWFkanVzdCcsXG4gICdmb250LXNtb290aGluZycsXG4gICdmb250LXN0cmV0Y2gnLFxuICAnZm9udC1zdHlsZScsXG4gICdmb250LXN5bnRoZXNpcycsXG4gICdmb250LXZhcmlhbnQnLFxuICAnZm9udC12YXJpYW50LWNhcHMnLFxuICAnZm9udC12YXJpYW50LWVhc3QtYXNpYW4nLFxuICAnZm9udC12YXJpYW50LWxpZ2F0dXJlcycsXG4gICdmb250LXZhcmlhbnQtbnVtZXJpYycsXG4gICdmb250LXZhcmlhbnQtcG9zaXRpb24nLFxuICAnZm9udC12YXJpYXRpb24tc2V0dGluZ3MnLFxuICAnZm9udC13ZWlnaHQnLFxuICAnZ2FwJyxcbiAgJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyxcbiAgJ2dyaWQnLFxuICAnZ3JpZC1hcmVhJyxcbiAgJ2dyaWQtYXV0by1jb2x1bW5zJyxcbiAgJ2dyaWQtYXV0by1mbG93JyxcbiAgJ2dyaWQtYXV0by1yb3dzJyxcbiAgJ2dyaWQtY29sdW1uJyxcbiAgJ2dyaWQtY29sdW1uLWVuZCcsXG4gICdncmlkLWNvbHVtbi1zdGFydCcsXG4gICdncmlkLWdhcCcsXG4gICdncmlkLXJvdycsXG4gICdncmlkLXJvdy1lbmQnLFxuICAnZ3JpZC1yb3ctc3RhcnQnLFxuICAnZ3JpZC10ZW1wbGF0ZScsXG4gICdncmlkLXRlbXBsYXRlLWFyZWFzJyxcbiAgJ2dyaWQtdGVtcGxhdGUtY29sdW1ucycsXG4gICdncmlkLXRlbXBsYXRlLXJvd3MnLFxuICAnaGFuZ2luZy1wdW5jdHVhdGlvbicsXG4gICdoZWlnaHQnLFxuICAnaHlwaGVucycsXG4gICdpY29uJyxcbiAgJ2ltYWdlLW9yaWVudGF0aW9uJyxcbiAgJ2ltYWdlLXJlbmRlcmluZycsXG4gICdpbWFnZS1yZXNvbHV0aW9uJyxcbiAgJ2ltZS1tb2RlJyxcbiAgJ2lubGluZS1zaXplJyxcbiAgJ2lzb2xhdGlvbicsXG4gICdqdXN0aWZ5LWNvbnRlbnQnLFxuICAnbGVmdCcsXG4gICdsZXR0ZXItc3BhY2luZycsXG4gICdsaW5lLWJyZWFrJyxcbiAgJ2xpbmUtaGVpZ2h0JyxcbiAgJ2xpc3Qtc3R5bGUnLFxuICAnbGlzdC1zdHlsZS1pbWFnZScsXG4gICdsaXN0LXN0eWxlLXBvc2l0aW9uJyxcbiAgJ2xpc3Qtc3R5bGUtdHlwZScsXG4gICdtYXJnaW4nLFxuICAnbWFyZ2luLWJsb2NrJyxcbiAgJ21hcmdpbi1ibG9jay1lbmQnLFxuICAnbWFyZ2luLWJsb2NrLXN0YXJ0JyxcbiAgJ21hcmdpbi1ib3R0b20nLFxuICAnbWFyZ2luLWlubGluZScsXG4gICdtYXJnaW4taW5saW5lLWVuZCcsXG4gICdtYXJnaW4taW5saW5lLXN0YXJ0JyxcbiAgJ21hcmdpbi1sZWZ0JyxcbiAgJ21hcmdpbi1yaWdodCcsXG4gICdtYXJnaW4tdG9wJyxcbiAgJ21hcmtzJyxcbiAgJ21hc2snLFxuICAnbWFzay1ib3JkZXInLFxuICAnbWFzay1ib3JkZXItbW9kZScsXG4gICdtYXNrLWJvcmRlci1vdXRzZXQnLFxuICAnbWFzay1ib3JkZXItcmVwZWF0JyxcbiAgJ21hc2stYm9yZGVyLXNsaWNlJyxcbiAgJ21hc2stYm9yZGVyLXNvdXJjZScsXG4gICdtYXNrLWJvcmRlci13aWR0aCcsXG4gICdtYXNrLWNsaXAnLFxuICAnbWFzay1jb21wb3NpdGUnLFxuICAnbWFzay1pbWFnZScsXG4gICdtYXNrLW1vZGUnLFxuICAnbWFzay1vcmlnaW4nLFxuICAnbWFzay1wb3NpdGlvbicsXG4gICdtYXNrLXJlcGVhdCcsXG4gICdtYXNrLXNpemUnLFxuICAnbWFzay10eXBlJyxcbiAgJ21heC1ibG9jay1zaXplJyxcbiAgJ21heC1oZWlnaHQnLFxuICAnbWF4LWlubGluZS1zaXplJyxcbiAgJ21heC13aWR0aCcsXG4gICdtaW4tYmxvY2stc2l6ZScsXG4gICdtaW4taGVpZ2h0JyxcbiAgJ21pbi1pbmxpbmUtc2l6ZScsXG4gICdtaW4td2lkdGgnLFxuICAnbWl4LWJsZW5kLW1vZGUnLFxuICAnbmF2LWRvd24nLFxuICAnbmF2LWluZGV4JyxcbiAgJ25hdi1sZWZ0JyxcbiAgJ25hdi1yaWdodCcsXG4gICduYXYtdXAnLFxuICAnbm9uZScsXG4gICdub3JtYWwnLFxuICAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtcG9zaXRpb24nLFxuICAnb3BhY2l0eScsXG4gICdvcmRlcicsXG4gICdvcnBoYW5zJyxcbiAgJ291dGxpbmUnLFxuICAnb3V0bGluZS1jb2xvcicsXG4gICdvdXRsaW5lLW9mZnNldCcsXG4gICdvdXRsaW5lLXN0eWxlJyxcbiAgJ291dGxpbmUtd2lkdGgnLFxuICAnb3ZlcmZsb3cnLFxuICAnb3ZlcmZsb3ctd3JhcCcsXG4gICdvdmVyZmxvdy14JyxcbiAgJ292ZXJmbG93LXknLFxuICAncGFkZGluZycsXG4gICdwYWRkaW5nLWJsb2NrJyxcbiAgJ3BhZGRpbmctYmxvY2stZW5kJyxcbiAgJ3BhZGRpbmctYmxvY2stc3RhcnQnLFxuICAncGFkZGluZy1ib3R0b20nLFxuICAncGFkZGluZy1pbmxpbmUnLFxuICAncGFkZGluZy1pbmxpbmUtZW5kJyxcbiAgJ3BhZGRpbmctaW5saW5lLXN0YXJ0JyxcbiAgJ3BhZGRpbmctbGVmdCcsXG4gICdwYWRkaW5nLXJpZ2h0JyxcbiAgJ3BhZGRpbmctdG9wJyxcbiAgJ3BhZ2UtYnJlYWstYWZ0ZXInLFxuICAncGFnZS1icmVhay1iZWZvcmUnLFxuICAncGFnZS1icmVhay1pbnNpZGUnLFxuICAncGF1c2UnLFxuICAncGF1c2UtYWZ0ZXInLFxuICAncGF1c2UtYmVmb3JlJyxcbiAgJ3BlcnNwZWN0aXZlJyxcbiAgJ3BlcnNwZWN0aXZlLW9yaWdpbicsXG4gICdwb2ludGVyLWV2ZW50cycsXG4gICdwb3NpdGlvbicsXG4gICdxdW90ZXMnLFxuICAncmVzaXplJyxcbiAgJ3Jlc3QnLFxuICAncmVzdC1hZnRlcicsXG4gICdyZXN0LWJlZm9yZScsXG4gICdyaWdodCcsXG4gICdyb3ctZ2FwJyxcbiAgJ3Njcm9sbC1tYXJnaW4nLFxuICAnc2Nyb2xsLW1hcmdpbi1ibG9jaycsXG4gICdzY3JvbGwtbWFyZ2luLWJsb2NrLWVuZCcsXG4gICdzY3JvbGwtbWFyZ2luLWJsb2NrLXN0YXJ0JyxcbiAgJ3Njcm9sbC1tYXJnaW4tYm90dG9tJyxcbiAgJ3Njcm9sbC1tYXJnaW4taW5saW5lJyxcbiAgJ3Njcm9sbC1tYXJnaW4taW5saW5lLWVuZCcsXG4gICdzY3JvbGwtbWFyZ2luLWlubGluZS1zdGFydCcsXG4gICdzY3JvbGwtbWFyZ2luLWxlZnQnLFxuICAnc2Nyb2xsLW1hcmdpbi1yaWdodCcsXG4gICdzY3JvbGwtbWFyZ2luLXRvcCcsXG4gICdzY3JvbGwtcGFkZGluZycsXG4gICdzY3JvbGwtcGFkZGluZy1ibG9jaycsXG4gICdzY3JvbGwtcGFkZGluZy1ibG9jay1lbmQnLFxuICAnc2Nyb2xsLXBhZGRpbmctYmxvY2stc3RhcnQnLFxuICAnc2Nyb2xsLXBhZGRpbmctYm90dG9tJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWlubGluZScsXG4gICdzY3JvbGwtcGFkZGluZy1pbmxpbmUtZW5kJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWlubGluZS1zdGFydCcsXG4gICdzY3JvbGwtcGFkZGluZy1sZWZ0JyxcbiAgJ3Njcm9sbC1wYWRkaW5nLXJpZ2h0JyxcbiAgJ3Njcm9sbC1wYWRkaW5nLXRvcCcsXG4gICdzY3JvbGwtc25hcC1hbGlnbicsXG4gICdzY3JvbGwtc25hcC1zdG9wJyxcbiAgJ3Njcm9sbC1zbmFwLXR5cGUnLFxuICAnc2Nyb2xsYmFyLWNvbG9yJyxcbiAgJ3Njcm9sbGJhci1ndXR0ZXInLFxuICAnc2Nyb2xsYmFyLXdpZHRoJyxcbiAgJ3NoYXBlLWltYWdlLXRocmVzaG9sZCcsXG4gICdzaGFwZS1tYXJnaW4nLFxuICAnc2hhcGUtb3V0c2lkZScsXG4gICdzcGVhaycsXG4gICdzcGVhay1hcycsXG4gICdzcmMnLCAvLyBAZm9udC1mYWNlXG4gICd0YWItc2l6ZScsXG4gICd0YWJsZS1sYXlvdXQnLFxuICAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWFsaWduLWFsbCcsXG4gICd0ZXh0LWFsaWduLWxhc3QnLFxuICAndGV4dC1jb21iaW5lLXVwcmlnaHQnLFxuICAndGV4dC1kZWNvcmF0aW9uJyxcbiAgJ3RleHQtZGVjb3JhdGlvbi1jb2xvcicsXG4gICd0ZXh0LWRlY29yYXRpb24tbGluZScsXG4gICd0ZXh0LWRlY29yYXRpb24tc3R5bGUnLFxuICAndGV4dC1lbXBoYXNpcycsXG4gICd0ZXh0LWVtcGhhc2lzLWNvbG9yJyxcbiAgJ3RleHQtZW1waGFzaXMtcG9zaXRpb24nLFxuICAndGV4dC1lbXBoYXNpcy1zdHlsZScsXG4gICd0ZXh0LWluZGVudCcsXG4gICd0ZXh0LWp1c3RpZnknLFxuICAndGV4dC1vcmllbnRhdGlvbicsXG4gICd0ZXh0LW92ZXJmbG93JyxcbiAgJ3RleHQtcmVuZGVyaW5nJyxcbiAgJ3RleHQtc2hhZG93JyxcbiAgJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ3RleHQtdW5kZXJsaW5lLXBvc2l0aW9uJyxcbiAgJ3RvcCcsXG4gICd0cmFuc2Zvcm0nLFxuICAndHJhbnNmb3JtLWJveCcsXG4gICd0cmFuc2Zvcm0tb3JpZ2luJyxcbiAgJ3RyYW5zZm9ybS1zdHlsZScsXG4gICd0cmFuc2l0aW9uJyxcbiAgJ3RyYW5zaXRpb24tZGVsYXknLFxuICAndHJhbnNpdGlvbi1kdXJhdGlvbicsXG4gICd0cmFuc2l0aW9uLXByb3BlcnR5JyxcbiAgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgJ3VuaWNvZGUtYmlkaScsXG4gICd2ZXJ0aWNhbC1hbGlnbicsXG4gICd2aXNpYmlsaXR5JyxcbiAgJ3ZvaWNlLWJhbGFuY2UnLFxuICAndm9pY2UtZHVyYXRpb24nLFxuICAndm9pY2UtZmFtaWx5JyxcbiAgJ3ZvaWNlLXBpdGNoJyxcbiAgJ3ZvaWNlLXJhbmdlJyxcbiAgJ3ZvaWNlLXJhdGUnLFxuICAndm9pY2Utc3RyZXNzJyxcbiAgJ3ZvaWNlLXZvbHVtZScsXG4gICd3aGl0ZS1zcGFjZScsXG4gICd3aWRvd3MnLFxuICAnd2lkdGgnLFxuICAnd2lsbC1jaGFuZ2UnLFxuICAnd29yZC1icmVhaycsXG4gICd3b3JkLXNwYWNpbmcnLFxuICAnd29yZC13cmFwJyxcbiAgJ3dyaXRpbmctbW9kZScsXG4gICd6LWluZGV4J1xuICAvLyByZXZlcnNlIG1ha2VzIHN1cmUgbG9uZ2VyIGF0dHJpYnV0ZXMgYGZvbnQtd2VpZ2h0YCBhcmUgbWF0Y2hlZCBmdWxseVxuICAvLyBpbnN0ZWFkIG9mIGdldHRpbmcgZmFsc2UgcG9zaXRpdmVzIG9uIHNheSBgZm9udGBcbl0ucmV2ZXJzZSgpO1xuXG4vLyBzb21lIGdyYW1tYXJzIHVzZSB0aGVtIGFsbCBhcyBhIHNpbmdsZSBncm91cFxuY29uc3QgUFNFVURPX1NFTEVDVE9SUyA9IFBTRVVET19DTEFTU0VTLmNvbmNhdChQU0VVRE9fRUxFTUVOVFMpO1xuXG4vKlxuTGFuZ3VhZ2U6IExlc3NcbkRlc2NyaXB0aW9uOiBJdCdzIENTUywgd2l0aCBqdXN0IGEgbGl0dGxlIG1vcmUuXG5BdXRob3I6ICAgTWF4IE1pa2hhaWxvdiA8c2V2ZW4ucGhhc2VzLm1heEBnbWFpbC5jb20+XG5XZWJzaXRlOiBodHRwOi8vbGVzc2Nzcy5vcmdcbkNhdGVnb3J5OiBjb21tb24sIGNzcywgd2ViXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gbGVzcyhobGpzKSB7XG4gIGNvbnN0IG1vZGVzID0gTU9ERVMoaGxqcyk7XG4gIGNvbnN0IFBTRVVET19TRUxFQ1RPUlMkMSA9IFBTRVVET19TRUxFQ1RPUlM7XG5cbiAgY29uc3QgQVRfTU9ESUZJRVJTID0gXCJhbmQgb3Igbm90IG9ubHlcIjtcbiAgY29uc3QgSURFTlRfUkUgPSAnW1xcXFx3LV0rJzsgLy8geWVzLCBMZXNzIGlkZW50aWZpZXJzIG1heSBiZWdpbiB3aXRoIGEgZGlnaXRcbiAgY29uc3QgSU5URVJQX0lERU5UX1JFID0gJygnICsgSURFTlRfUkUgKyAnfEBcXFxceycgKyBJREVOVF9SRSArICdcXFxcfSknO1xuXG4gIC8qIEdlbmVyaWMgTW9kZXMgKi9cblxuICBjb25zdCBSVUxFUyA9IFtdOyBjb25zdCBWQUxVRV9NT0RFUyA9IFtdOyAvLyBmb3J3YXJkIGRlZi4gZm9yIHJlY3Vyc2l2ZSBtb2Rlc1xuXG4gIGNvbnN0IFNUUklOR19NT0RFID0gZnVuY3Rpb24oYykge1xuICAgIHJldHVybiB7XG4gICAgLy8gTGVzcyBzdHJpbmdzIGFyZSBub3QgbXVsdGlsaW5lIChhbHNvIGluY2x1ZGUgJ34nIGZvciBtb3JlIGNvbnNpc3RlbnQgY29sb3Jpbmcgb2YgXCJlc2NhcGVkXCIgc3RyaW5ncylcbiAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICBiZWdpbjogJ34/JyArIGMgKyAnLio/JyArIGNcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IElERU5UX01PREUgPSBmdW5jdGlvbihuYW1lLCBiZWdpbiwgcmVsZXZhbmNlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYXNzTmFtZTogbmFtZSxcbiAgICAgIGJlZ2luOiBiZWdpbixcbiAgICAgIHJlbGV2YW5jZTogcmVsZXZhbmNlXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCBBVF9LRVlXT1JEUyA9IHtcbiAgICAkcGF0dGVybjogL1thLXotXSsvLFxuICAgIGtleXdvcmQ6IEFUX01PRElGSUVSUyxcbiAgICBhdHRyaWJ1dGU6IE1FRElBX0ZFQVRVUkVTLmpvaW4oXCIgXCIpXG4gIH07XG5cbiAgY29uc3QgUEFSRU5TX01PREUgPSB7XG4gICAgLy8gdXNlZCBvbmx5IHRvIHByb3Blcmx5IGJhbGFuY2UgbmVzdGVkIHBhcmVucyBpbnNpZGUgbWl4aW4gY2FsbCwgZGVmLiBhcmcgbGlzdFxuICAgIGJlZ2luOiAnXFxcXCgnLFxuICAgIGVuZDogJ1xcXFwpJyxcbiAgICBjb250YWluczogVkFMVUVfTU9ERVMsXG4gICAga2V5d29yZHM6IEFUX0tFWVdPUkRTLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIC8vIGdlbmVyaWMgTGVzcyBoaWdobGlnaHRlciAodXNlZCBhbG1vc3QgZXZlcnl3aGVyZSBleGNlcHQgc2VsZWN0b3JzKTpcbiAgVkFMVUVfTU9ERVMucHVzaChcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBTVFJJTkdfTU9ERShcIidcIiksXG4gICAgU1RSSU5HX01PREUoJ1wiJyksXG4gICAgbW9kZXMuQ1NTX05VTUJFUl9NT0RFLCAvLyBmaXhtZTogaXQgZG9lcyBub3QgaW5jbHVkZSBkb3QgZm9yIG51bWJlcnMgbGlrZSAuNWVtIDooXG4gICAge1xuICAgICAgYmVnaW46ICcodXJsfGRhdGEtdXJpKVxcXFwoJyxcbiAgICAgIHN0YXJ0czoge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBlbmQ6ICdbXFxcXClcXFxcbl0nLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9XG4gICAgfSxcbiAgICBtb2Rlcy5IRVhDT0xPUixcbiAgICBQQVJFTlNfTU9ERSxcbiAgICBJREVOVF9NT0RFKCd2YXJpYWJsZScsICdAQD8nICsgSURFTlRfUkUsIDEwKSxcbiAgICBJREVOVF9NT0RFKCd2YXJpYWJsZScsICdAXFxcXHsnICsgSURFTlRfUkUgKyAnXFxcXH0nKSxcbiAgICBJREVOVF9NT0RFKCdidWlsdF9pbicsICd+P2BbXmBdKj9gJyksIC8vIGlubGluZSBqYXZhc2NyaXB0IChvciB3aGF0ZXZlciBob3N0IGxhbmd1YWdlKSAqbXVsdGlsaW5lKiBzdHJpbmdcbiAgICB7IC8vIEBtZWRpYSBmZWF0dXJlcyAoaXTigJlzIGhlcmUgdG8gbm90IGR1cGxpY2F0ZSB0aGluZ3MgaW4gQVRfUlVMRV9NT0RFIHdpdGggZXh0cmEgUEFSRU5TX01PREUgb3ZlcnJpZGluZyk6XG4gICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgYmVnaW46IElERU5UX1JFICsgJ1xcXFxzKjonLFxuICAgICAgZW5kOiAnOicsXG4gICAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgICB9LFxuICAgIG1vZGVzLklNUE9SVEFOVCxcbiAgICB7IGJlZ2luS2V5d29yZHM6ICdhbmQgbm90JyB9LFxuICAgIG1vZGVzLkZVTkNUSU9OX0RJU1BBVENIXG4gICk7XG5cbiAgY29uc3QgVkFMVUVfV0lUSF9SVUxFU0VUUyA9IFZBTFVFX01PREVTLmNvbmNhdCh7XG4gICAgYmVnaW46IC9cXHsvLFxuICAgIGVuZDogL1xcfS8sXG4gICAgY29udGFpbnM6IFJVTEVTXG4gIH0pO1xuXG4gIGNvbnN0IE1JWElOX0dVQVJEX01PREUgPSB7XG4gICAgYmVnaW5LZXl3b3JkczogJ3doZW4nLFxuICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbIHsgYmVnaW5LZXl3b3JkczogJ2FuZCBub3QnIH0gXS5jb25jYXQoVkFMVUVfTU9ERVMpIC8vIHVzaW5nIHRoaXMgZm9ybSB0byBvdmVycmlkZSBWQUxVReKAmXMgJ2Z1bmN0aW9uJyBtYXRjaFxuICB9O1xuXG4gIC8qIFJ1bGUtTGV2ZWwgTW9kZXMgKi9cblxuICBjb25zdCBSVUxFX01PREUgPSB7XG4gICAgYmVnaW46IElOVEVSUF9JREVOVF9SRSArICdcXFxccyo6JyxcbiAgICByZXR1cm5CZWdpbjogdHJ1ZSxcbiAgICBlbmQ6IC9bO31dLyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgYmVnaW46IC8tKHdlYmtpdHxtb3p8bXN8byktLyB9LFxuICAgICAgbW9kZXMuQ1NTX1ZBUklBQkxFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyaWJ1dGUnLFxuICAgICAgICBiZWdpbjogJ1xcXFxiKCcgKyBBVFRSSUJVVEVTLmpvaW4oJ3wnKSArICcpXFxcXGInLFxuICAgICAgICBlbmQ6IC8oPz06KS8sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgIGlsbGVnYWw6ICdbPD0kXScsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGNvbnRhaW5zOiBWQUxVRV9NT0RFU1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IEFUX1JVTEVfTU9ERSA9IHtcbiAgICBjbGFzc05hbWU6ICdrZXl3b3JkJyxcbiAgICBiZWdpbjogJ0AoaW1wb3J0fG1lZGlhfGNoYXJzZXR8Zm9udC1mYWNlfCgtW2Etel0rLSk/a2V5ZnJhbWVzfHN1cHBvcnRzfGRvY3VtZW50fG5hbWVzcGFjZXxwYWdlfHZpZXdwb3J0fGhvc3QpXFxcXGInLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnWzt7fV0nLFxuICAgICAga2V5d29yZHM6IEFUX0tFWVdPUkRTLFxuICAgICAgcmV0dXJuRW5kOiB0cnVlLFxuICAgICAgY29udGFpbnM6IFZBTFVFX01PREVTLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfVxuICB9O1xuXG4gIC8vIHZhcmlhYmxlIGRlZmluaXRpb25zIGFuZCBjYWxsc1xuICBjb25zdCBWQVJfUlVMRV9NT0RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgLy8gdXNpbmcgbW9yZSBzdHJpY3QgcGF0dGVybiBmb3IgaGlnaGVyIHJlbGV2YW5jZSB0byBpbmNyZWFzZSBjaGFuY2VzIG9mIExlc3MgZGV0ZWN0aW9uLlxuICAgICAgLy8gdGhpcyBpcyAqdGhlIG9ubHkqIExlc3Mgc3BlY2lmaWMgc3RhdGVtZW50IHVzZWQgaW4gbW9zdCBvZiB0aGUgc291cmNlcywgc28uLi5cbiAgICAgIC8vICh3ZeKAmWxsIHN0aWxsIG9mdGVuIGxvb3NlIHRvIHRoZSBjc3MtcGFyc2VyIHVubGVzcyB0aGVyZSdzICcvLycgY29tbWVudCxcbiAgICAgIC8vIHNpbXBseSBiZWNhdXNlIDEgdmFyaWFibGUganVzdCBjYW4ndCBiZWF0IDk5IHByb3BlcnRpZXMgOilcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAJyArIElERU5UX1JFICsgJ1xcXFxzKjonLFxuICAgICAgICByZWxldmFuY2U6IDE1XG4gICAgICB9LFxuICAgICAgeyBiZWdpbjogJ0AnICsgSURFTlRfUkUgfVxuICAgIF0sXG4gICAgc3RhcnRzOiB7XG4gICAgICBlbmQ6ICdbO31dJyxcbiAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgIGNvbnRhaW5zOiBWQUxVRV9XSVRIX1JVTEVTRVRTXG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IFNFTEVDVE9SX01PREUgPSB7XG4gICAgLy8gZmlyc3QgcGFyc2UgdW5hbWJpZ3VvdXMgc2VsZWN0b3JzIChpLmUuIHRob3NlIG5vdCBzdGFydGluZyB3aXRoIHRhZylcbiAgICAvLyB0aGVuIGZhbGwgaW50byB0aGUgc2NhcnkgbG9va2FoZWFkLWRpc2NyaW1pbmF0b3IgdmFyaWFudC5cbiAgICAvLyB0aGlzIG1vZGUgYWxzbyBoYW5kbGVzIG1peGluIGRlZmluaXRpb25zIGFuZCBjYWxsc1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnW1xcXFwuIzomXFxcXFs+XScsXG4gICAgICAgIGVuZDogJ1s7e31dJyAvLyBtaXhpbiBjYWxscyBlbmQgd2l0aCAnOydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBJTlRFUlBfSURFTlRfUkUsXG4gICAgICAgIGVuZDogL1xcey9cbiAgICAgIH1cbiAgICBdLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAnWzw9XFwnJFwiXScsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgTUlYSU5fR1VBUkRfTU9ERSxcbiAgICAgIElERU5UX01PREUoJ2tleXdvcmQnLCAnYWxsXFxcXGInKSxcbiAgICAgIElERU5UX01PREUoJ3ZhcmlhYmxlJywgJ0BcXFxceycgKyBJREVOVF9SRSArICdcXFxcfScpLCAvLyBvdGhlcndpc2UgaXTigJlzIGlkZW50aWZpZWQgYXMgdGFnXG4gICAgICBcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdcXFxcYignICsgVEFHUy5qb2luKCd8JykgKyAnKVxcXFxiJyxcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJ1xuICAgICAgfSxcbiAgICAgIG1vZGVzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgIElERU5UX01PREUoJ3NlbGVjdG9yLXRhZycsIElOVEVSUF9JREVOVF9SRSwgMCksXG4gICAgICBJREVOVF9NT0RFKCdzZWxlY3Rvci1pZCcsICcjJyArIElOVEVSUF9JREVOVF9SRSksXG4gICAgICBJREVOVF9NT0RFKCdzZWxlY3Rvci1jbGFzcycsICdcXFxcLicgKyBJTlRFUlBfSURFTlRfUkUsIDApLFxuICAgICAgSURFTlRfTU9ERSgnc2VsZWN0b3ItdGFnJywgJyYnLCAwKSxcbiAgICAgIG1vZGVzLkFUVFJJQlVURV9TRUxFQ1RPUl9NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzZWxlY3Rvci1wc2V1ZG8nLFxuICAgICAgICBiZWdpbjogJzooJyArIFBTRVVET19DTEFTU0VTLmpvaW4oJ3wnKSArICcpJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItcHNldWRvJyxcbiAgICAgICAgYmVnaW46ICc6KDopPygnICsgUFNFVURPX0VMRU1FTlRTLmpvaW4oJ3wnKSArICcpJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBWQUxVRV9XSVRIX1JVTEVTRVRTXG4gICAgICB9LCAvLyBhcmd1bWVudCBsaXN0IG9mIHBhcmFtZXRyaWMgbWl4aW5zXG4gICAgICB7IGJlZ2luOiAnIWltcG9ydGFudCcgfSwgLy8gZWF0ICFpbXBvcnRhbnQgYWZ0ZXIgbWl4aW4gY2FsbCBvciBpdCB3aWxsIGJlIGNvbG9yZWQgYXMgdGFnXG4gICAgICBtb2Rlcy5GVU5DVElPTl9ESVNQQVRDSFxuICAgIF1cbiAgfTtcblxuICBjb25zdCBQU0VVRE9fU0VMRUNUT1JfTU9ERSA9IHtcbiAgICBiZWdpbjogSURFTlRfUkUgKyAnOig6KT8nICsgYCgke1BTRVVET19TRUxFQ1RPUlMkMS5qb2luKCd8Jyl9KWAsXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFsgU0VMRUNUT1JfTU9ERSBdXG4gIH07XG5cbiAgUlVMRVMucHVzaChcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBBVF9SVUxFX01PREUsXG4gICAgVkFSX1JVTEVfTU9ERSxcbiAgICBQU0VVRE9fU0VMRUNUT1JfTU9ERSxcbiAgICBSVUxFX01PREUsXG4gICAgU0VMRUNUT1JfTU9ERSxcbiAgICBNSVhJTl9HVUFSRF9NT0RFLFxuICAgIG1vZGVzLkZVTkNUSU9OX0RJU1BBVENIXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnTGVzcycsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAnWz0+XFwnLzwoJFwiXScsXG4gICAgY29udGFpbnM6IFJVTEVTXG4gIH07XG59XG5cbmV4cG9ydCB7IGxlc3MgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbIk1PREVTIiwiaGxqcyIsIklNUE9SVEFOVCIsInNjb3BlIiwiYmVnaW4iLCJCTE9DS19DT01NRU5UIiwiQ19CTE9DS19DT01NRU5UX01PREUiLCJIRVhDT0xPUiIsIkZVTkNUSU9OX0RJU1BBVENIIiwiY2xhc3NOYW1lIiwiQVRUUklCVVRFX1NFTEVDVE9SX01PREUiLCJlbmQiLCJpbGxlZ2FsIiwiY29udGFpbnMiLCJBUE9TX1NUUklOR19NT0RFIiwiUVVPVEVfU1RSSU5HX01PREUiLCJDU1NfTlVNQkVSX01PREUiLCJOVU1CRVJfUkUiLCJyZWxldmFuY2UiLCJDU1NfVkFSSUFCTEUiLCJUQUdTIiwiTUVESUFfRkVBVFVSRVMiLCJQU0VVRE9fQ0xBU1NFUyIsIlBTRVVET19FTEVNRU5UUyIsIkFUVFJJQlVURVMiLCJyZXZlcnNlIiwiUFNFVURPX1NFTEVDVE9SUyIsImNvbmNhdCIsImxlc3MiLCJtb2RlcyIsIlBTRVVET19TRUxFQ1RPUlMkMSIsIkFUX01PRElGSUVSUyIsIklERU5UX1JFIiwiSU5URVJQX0lERU5UX1JFIiwiUlVMRVMiLCJWQUxVRV9NT0RFUyIsIlNUUklOR19NT0RFIiwiYyIsIklERU5UX01PREUiLCJuYW1lIiwiQVRfS0VZV09SRFMiLCIkcGF0dGVybiIsImtleXdvcmQiLCJhdHRyaWJ1dGUiLCJqb2luIiwiUEFSRU5TX01PREUiLCJrZXl3b3JkcyIsInB1c2giLCJDX0xJTkVfQ09NTUVOVF9NT0RFIiwic3RhcnRzIiwiZXhjbHVkZUVuZCIsInJldHVybkJlZ2luIiwiYmVnaW5LZXl3b3JkcyIsIlZBTFVFX1dJVEhfUlVMRVNFVFMiLCJNSVhJTl9HVUFSRF9NT0RFIiwiZW5kc1dpdGhQYXJlbnQiLCJSVUxFX01PREUiLCJBVF9SVUxFX01PREUiLCJyZXR1cm5FbmQiLCJWQVJfUlVMRV9NT0RFIiwidmFyaWFudHMiLCJTRUxFQ1RPUl9NT0RFIiwiUFNFVURPX1NFTEVDVE9SX01PREUiLCJjYXNlX2luc2Vuc2l0aXZlIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/less.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/lua.js":
/*!*******************************************************!*\
!*** ./node_modules/highlight.js/es/languages/lua.js ***!
\*******************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ lua)\n/* harmony export */ });\n/*\nLanguage: Lua\nDescription: Lua is a powerful, efficient, lightweight, embeddable scripting language.\nAuthor: Andrew Fedorov <dmmdrs@mail.ru>\nCategory: common, scripting\nWebsite: https://www.lua.org\n*/ function lua(hljs) {\n const OPENING_LONG_BRACKET = \"\\\\[=*\\\\[\";\n const CLOSING_LONG_BRACKET = \"\\\\]=*\\\\]\";\n const LONG_BRACKETS = {\n begin: OPENING_LONG_BRACKET,\n end: CLOSING_LONG_BRACKET,\n contains: [\n \"self\"\n ]\n };\n const COMMENTS = [\n hljs.COMMENT(\"--(?!\" + OPENING_LONG_BRACKET + \")\", \"$\"),\n hljs.COMMENT(\"--\" + OPENING_LONG_BRACKET, CLOSING_LONG_BRACKET, {\n contains: [\n LONG_BRACKETS\n ],\n relevance: 10\n })\n ];\n return {\n name: \"Lua\",\n keywords: {\n $pattern: hljs.UNDERSCORE_IDENT_RE,\n literal: \"true false nil\",\n keyword: \"and break do else elseif end for goto if in local not or repeat return then until while\",\n built_in: // Metatags and globals:\n \"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len \" + \"__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert \" + \"collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring \" + \"module next pairs pcall print rawequal rawget rawset require select setfenv \" + \"setmetatable tonumber tostring type unpack xpcall arg self \" + \"coroutine resume yield status wrap create running debug getupvalue \" + \"debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv \" + \"io lines write close flush open output type read stderr stdin input stdout popen tmpfile \" + \"math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan \" + \"os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall \" + \"string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower \" + \"table setn insert getn foreachi maxn foreach concat sort remove\"\n },\n contains: COMMENTS.concat([\n {\n className: \"function\",\n beginKeywords: \"function\",\n end: \"\\\\)\",\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: \"([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*\"\n }),\n {\n className: \"params\",\n begin: \"\\\\(\",\n endsWithParent: true,\n contains: COMMENTS\n }\n ].concat(COMMENTS)\n },\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: \"string\",\n begin: OPENING_LONG_BRACKET,\n end: CLOSING_LONG_BRACKET,\n contains: [\n LONG_BRACKETS\n ],\n relevance: 5\n }\n ])\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9sdWEuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7QUFNQSxHQUVBLFNBQVNBLElBQUlDLElBQUk7SUFDZixNQUFNQyx1QkFBdUI7SUFDN0IsTUFBTUMsdUJBQXVCO0lBQzdCLE1BQU1DLGdCQUFnQjtRQUNwQkMsT0FBT0g7UUFDUEksS0FBS0g7UUFDTEksVUFBVTtZQUFFO1NBQVE7SUFDdEI7SUFDQSxNQUFNQyxXQUFXO1FBQ2ZQLEtBQUtRLE9BQU8sQ0FBQyxVQUFVUCx1QkFBdUIsS0FBSztRQUNuREQsS0FBS1EsT0FBTyxDQUNWLE9BQU9QLHNCQUNQQyxzQkFDQTtZQUNFSSxVQUFVO2dCQUFFSDthQUFlO1lBQzNCTSxXQUFXO1FBQ2I7S0FFSDtJQUNELE9BQU87UUFDTEMsTUFBTTtRQUNOQyxVQUFVO1lBQ1JDLFVBQVVaLEtBQUthLG1CQUFtQjtZQUNsQ0MsU0FBUztZQUNUQyxTQUFTO1lBQ1RDLFVBQ0Usd0JBQXdCO1lBQ3hCLG9GQUNFLG1GQUVBLHNGQUNBLGlGQUNBLGdFQUVBLHdFQUNBLGdJQUNBLDhGQUNBLG9LQUNBLHFKQUNBLCtGQUNBO1FBQ047UUFDQVYsVUFBVUMsU0FBU1UsTUFBTSxDQUFDO1lBQ3hCO2dCQUNFQyxXQUFXO2dCQUNYQyxlQUFlO2dCQUNmZCxLQUFLO2dCQUNMQyxVQUFVO29CQUNSTixLQUFLb0IsT0FBTyxDQUFDcEIsS0FBS3FCLFVBQVUsRUFBRTt3QkFBRWpCLE9BQU87b0JBQW9EO29CQUMzRjt3QkFDRWMsV0FBVzt3QkFDWGQsT0FBTzt3QkFDUGtCLGdCQUFnQjt3QkFDaEJoQixVQUFVQztvQkFDWjtpQkFDRCxDQUFDVSxNQUFNLENBQUNWO1lBQ1g7WUFDQVAsS0FBS3VCLGFBQWE7WUFDbEJ2QixLQUFLd0IsZ0JBQWdCO1lBQ3JCeEIsS0FBS3lCLGlCQUFpQjtZQUN0QjtnQkFDRVAsV0FBVztnQkFDWGQsT0FBT0g7Z0JBQ1BJLEtBQUtIO2dCQUNMSSxVQUFVO29CQUFFSDtpQkFBZTtnQkFDM0JNLFdBQVc7WUFDYjtTQUNEO0lBQ0g7QUFDRjtBQUUwQiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvbHVhLmpzP2NlOGIiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBMdWFcbkRlc2NyaXB0aW9uOiBMdWEgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBsaWdodHdlaWdodCwgZW1iZWRkYWJsZSBzY3JpcHRpbmcgbGFuZ3VhZ2UuXG5BdXRob3I6IEFuZHJldyBGZWRvcm92IDxkbW1kcnNAbWFpbC5ydT5cbkNhdGVnb3J5OiBjb21tb24sIHNjcmlwdGluZ1xuV2Vic2l0ZTogaHR0cHM6Ly93d3cubHVhLm9yZ1xuKi9cblxuZnVuY3Rpb24gbHVhKGhsanMpIHtcbiAgY29uc3QgT1BFTklOR19MT05HX0JSQUNLRVQgPSAnXFxcXFs9KlxcXFxbJztcbiAgY29uc3QgQ0xPU0lOR19MT05HX0JSQUNLRVQgPSAnXFxcXF09KlxcXFxdJztcbiAgY29uc3QgTE9OR19CUkFDS0VUUyA9IHtcbiAgICBiZWdpbjogT1BFTklOR19MT05HX0JSQUNLRVQsXG4gICAgZW5kOiBDTE9TSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICBjb250YWluczogWyAnc2VsZicgXVxuICB9O1xuICBjb25zdCBDT01NRU5UUyA9IFtcbiAgICBobGpzLkNPTU1FTlQoJy0tKD8hJyArIE9QRU5JTkdfTE9OR19CUkFDS0VUICsgJyknLCAnJCcpLFxuICAgIGhsanMuQ09NTUVOVChcbiAgICAgICctLScgKyBPUEVOSU5HX0xPTkdfQlJBQ0tFVCxcbiAgICAgIENMT1NJTkdfTE9OR19CUkFDS0VULFxuICAgICAge1xuICAgICAgICBjb250YWluczogWyBMT05HX0JSQUNLRVRTIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH1cbiAgICApXG4gIF07XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0x1YScsXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUsXG4gICAgICBsaXRlcmFsOiBcInRydWUgZmFsc2UgbmlsXCIsXG4gICAgICBrZXl3b3JkOiBcImFuZCBicmVhayBkbyBlbHNlIGVsc2VpZiBlbmQgZm9yIGdvdG8gaWYgaW4gbG9jYWwgbm90IG9yIHJlcGVhdCByZXR1cm4gdGhlbiB1bnRpbCB3aGlsZVwiLFxuICAgICAgYnVpbHRfaW46XG4gICAgICAgIC8vIE1ldGF0YWdzIGFuZCBnbG9iYWxzOlxuICAgICAgICAnX0cgX0VOViBfVkVSU0lPTiBfX2luZGV4IF9fbmV3aW5kZXggX19tb2RlIF9fY2FsbCBfX21ldGF0YWJsZSBfX3Rvc3RyaW5nIF9fbGVuICdcbiAgICAgICAgKyAnX19nYyBfX2FkZCBfX3N1YiBfX211bCBfX2RpdiBfX21vZCBfX3BvdyBfX2NvbmNhdCBfX3VubSBfX2VxIF9fbHQgX19sZSBhc3NlcnQgJ1xuICAgICAgICAvLyBTdGFuZGFyZCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzOlxuICAgICAgICArICdjb2xsZWN0Z2FyYmFnZSBkb2ZpbGUgZXJyb3IgZ2V0ZmVudiBnZXRtZXRhdGFibGUgaXBhaXJzIGxvYWQgbG9hZGZpbGUgbG9hZHN0cmluZyAnXG4gICAgICAgICsgJ21vZHVsZSBuZXh0IHBhaXJzIHBjYWxsIHByaW50IHJhd2VxdWFsIHJhd2dldCByYXdzZXQgcmVxdWlyZSBzZWxlY3Qgc2V0ZmVudiAnXG4gICAgICAgICsgJ3NldG1ldGF0YWJsZSB0b251bWJlciB0b3N0cmluZyB0eXBlIHVucGFjayB4cGNhbGwgYXJnIHNlbGYgJ1xuICAgICAgICAvLyBMaWJyYXJ5IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgKG9uZSBsaW5lIHBlciBsaWJyYXJ5KTpcbiAgICAgICAgKyAnY29yb3V0aW5lIHJlc3VtZSB5aWVsZCBzdGF0dXMgd3JhcCBjcmVhdGUgcnVubmluZyBkZWJ1ZyBnZXR1cHZhbHVlICdcbiAgICAgICAgKyAnZGVidWcgc2V0aG9vayBnZXRtZXRhdGFibGUgZ2V0aG9vayBzZXRtZXRhdGFibGUgc2V0bG9jYWwgdHJhY2ViYWNrIHNldGZlbnYgZ2V0aW5mbyBzZXR1cHZhbHVlIGdldGxvY2FsIGdldHJlZ2lzdHJ5IGdldGZlbnYgJ1xuICAgICAgICArICdpbyBsaW5lcyB3cml0ZSBjbG9zZSBmbHVzaCBvcGVuIG91dHB1dCB0eXBlIHJlYWQgc3RkZXJyIHN0ZGluIGlucHV0IHN0ZG91dCBwb3BlbiB0bXBmaWxlICdcbiAgICAgICAgKyAnbWF0aCBsb2cgbWF4IGFjb3MgaHVnZSBsZGV4cCBwaSBjb3MgdGFuaCBwb3cgZGVnIHRhbiBjb3NoIHNpbmggcmFuZG9tIHJhbmRvbXNlZWQgZnJleHAgY2VpbCBmbG9vciByYWQgYWJzIHNxcnQgbW9kZiBhc2luIG1pbiBtb2QgZm1vZCBsb2cxMCBhdGFuMiBleHAgc2luIGF0YW4gJ1xuICAgICAgICArICdvcyBleGl0IHNldGxvY2FsZSBkYXRlIGdldGVudiBkaWZmdGltZSByZW1vdmUgdGltZSBjbG9jayB0bXBuYW1lIHJlbmFtZSBleGVjdXRlIHBhY2thZ2UgcHJlbG9hZCBsb2FkbGliIGxvYWRlZCBsb2FkZXJzIGNwYXRoIGNvbmZpZyBwYXRoIHNlZWFsbCAnXG4gICAgICAgICsgJ3N0cmluZyBzdWIgdXBwZXIgbGVuIGdmaW5kIHJlcCBmaW5kIG1hdGNoIGNoYXIgZHVtcCBnbWF0Y2ggcmV2ZXJzZSBieXRlIGZvcm1hdCBnc3ViIGxvd2VyICdcbiAgICAgICAgKyAndGFibGUgc2V0biBpbnNlcnQgZ2V0biBmb3JlYWNoaSBtYXhuIGZvcmVhY2ggY29uY2F0IHNvcnQgcmVtb3ZlJ1xuICAgIH0sXG4gICAgY29udGFpbnM6IENPTU1FTlRTLmNvbmNhdChbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2Z1bmN0aW9uJyxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2Z1bmN0aW9uJyxcbiAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuaW5oZXJpdChobGpzLlRJVExFX01PREUsIHsgYmVnaW46ICcoW19hLXpBLVpdXFxcXHcqXFxcXC4pKihbX2EtekEtWl1cXFxcdyo6KT9bX2EtekEtWl1cXFxcdyonIH0pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICAgICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgY29udGFpbnM6IENPTU1FTlRTXG4gICAgICAgICAgfVxuICAgICAgICBdLmNvbmNhdChDT01NRU5UUylcbiAgICAgIH0sXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICBiZWdpbjogT1BFTklOR19MT05HX0JSQUNLRVQsXG4gICAgICAgIGVuZDogQ0xPU0lOR19MT05HX0JSQUNLRVQsXG4gICAgICAgIGNvbnRhaW5zOiBbIExPTkdfQlJBQ0tFVFMgXSxcbiAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICB9XG4gICAgXSlcbiAgfTtcbn1cblxuZXhwb3J0IHsgbHVhIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJsdWEiLCJobGpzIiwiT1BFTklOR19MT05HX0JSQUNLRVQiLCJDTE9TSU5HX0xPTkdfQlJBQ0tFVCIsIkxPTkdfQlJBQ0tFVFMiLCJiZWdpbiIsImVuZCIsImNvbnRhaW5zIiwiQ09NTUVOVFMiLCJDT01NRU5UIiwicmVsZXZhbmNlIiwibmFtZSIsImtleXdvcmRzIiwiJHBhdHRlcm4iLCJVTkRFUlNDT1JFX0lERU5UX1JFIiwibGl0ZXJhbCIsImtleXdvcmQiLCJidWlsdF9pbiIsImNvbmNhdCIsImNsYXNzTmFtZSIsImJlZ2luS2V5d29yZHMiLCJpbmhlcml0IiwiVElUTEVfTU9ERSIsImVuZHNXaXRoUGFyZW50IiwiQ19OVU1CRVJfTU9ERSIsIkFQT1NfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/lua.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/makefile.js":
/*!************************************************************!*\
!*** ./node_modules/highlight.js/es/languages/makefile.js ***!
\************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ makefile)\n/* harmony export */ });\n/*\nLanguage: Makefile\nAuthor: Ivan Sagalaev <maniac@softwaremaniacs.org>\nContributors: Joël Porquet <joel@porquet.org>\nWebsite: https://www.gnu.org/software/make/manual/html_node/Introduction.html\nCategory: common\n*/ function makefile(hljs) {\n /* Variables: simple (eg $(var)) and special (eg $@) */ const VARIABLE = {\n className: \"variable\",\n variants: [\n {\n begin: \"\\\\$\\\\(\" + hljs.UNDERSCORE_IDENT_RE + \"\\\\)\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n {\n begin: /\\$[@%<?\\^\\+\\*]/\n }\n ]\n };\n /* Quoted string with variables inside */ const QUOTE_STRING = {\n className: \"string\",\n begin: /\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE\n ]\n };\n /* Function: $(func arg,...) */ const FUNC = {\n className: \"variable\",\n begin: /\\$\\([\\w-]+\\s/,\n end: /\\)/,\n keywords: {\n built_in: \"subst patsubst strip findstring filter filter-out sort \" + \"word wordlist firstword lastword dir notdir suffix basename \" + \"addsuffix addprefix join wildcard realpath abspath error warning \" + \"shell origin flavor foreach if or and call eval file value\"\n },\n contains: [\n VARIABLE\n ]\n };\n /* Variable assignment */ const ASSIGNMENT = {\n begin: \"^\" + hljs.UNDERSCORE_IDENT_RE + \"\\\\s*(?=[:+?]?=)\"\n };\n /* Meta targets (.PHONY) */ const META = {\n className: \"meta\",\n begin: /^\\.PHONY:/,\n end: /$/,\n keywords: {\n $pattern: /[\\.\\w]+/,\n keyword: \".PHONY\"\n }\n };\n /* Targets */ const TARGET = {\n className: \"section\",\n begin: /^[^\\s]+:/,\n end: /$/,\n contains: [\n VARIABLE\n ]\n };\n return {\n name: \"Makefile\",\n aliases: [\n \"mk\",\n \"mak\",\n \"make\"\n ],\n keywords: {\n $pattern: /[\\w-]+/,\n keyword: \"define endef undefine ifdef ifndef ifeq ifneq else endif \" + \"include -include sinclude override export unexport private vpath\"\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n VARIABLE,\n QUOTE_STRING,\n FUNC,\n ASSIGNMENT,\n META,\n TARGET\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9tYWtlZmlsZS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7OztBQU1BLEdBRUEsU0FBU0EsU0FBU0MsSUFBSTtJQUNwQixxREFBcUQsR0FDckQsTUFBTUMsV0FBVztRQUNmQyxXQUFXO1FBQ1hDLFVBQVU7WUFDUjtnQkFDRUMsT0FBTyxXQUFXSixLQUFLSyxtQkFBbUIsR0FBRztnQkFDN0NDLFVBQVU7b0JBQUVOLEtBQUtPLGdCQUFnQjtpQkFBRTtZQUNyQztZQUNBO2dCQUFFSCxPQUFPO1lBQWlCO1NBQzNCO0lBQ0g7SUFDQSx1Q0FBdUMsR0FDdkMsTUFBTUksZUFBZTtRQUNuQk4sV0FBVztRQUNYRSxPQUFPO1FBQ1BLLEtBQUs7UUFDTEgsVUFBVTtZQUNSTixLQUFLTyxnQkFBZ0I7WUFDckJOO1NBQ0Q7SUFDSDtJQUNBLDZCQUE2QixHQUM3QixNQUFNUyxPQUFPO1FBQ1hSLFdBQVc7UUFDWEUsT0FBTztRQUNQSyxLQUFLO1FBQ0xFLFVBQVU7WUFBRUMsVUFDUiw0REFDRSxpRUFDQSxzRUFDQTtRQUE2RDtRQUNuRU4sVUFBVTtZQUFFTDtTQUFVO0lBQ3hCO0lBQ0EsdUJBQXVCLEdBQ3ZCLE1BQU1ZLGFBQWE7UUFBRVQsT0FBTyxNQUFNSixLQUFLSyxtQkFBbUIsR0FBRztJQUFrQjtJQUMvRSx5QkFBeUIsR0FDekIsTUFBTVMsT0FBTztRQUNYWixXQUFXO1FBQ1hFLE9BQU87UUFDUEssS0FBSztRQUNMRSxVQUFVO1lBQ1JJLFVBQVU7WUFDVkMsU0FBUztRQUNYO0lBQ0Y7SUFDQSxXQUFXLEdBQ1gsTUFBTUMsU0FBUztRQUNiZixXQUFXO1FBQ1hFLE9BQU87UUFDUEssS0FBSztRQUNMSCxVQUFVO1lBQUVMO1NBQVU7SUFDeEI7SUFDQSxPQUFPO1FBQ0xpQixNQUFNO1FBQ05DLFNBQVM7WUFDUDtZQUNBO1lBQ0E7U0FDRDtRQUNEUixVQUFVO1lBQ1JJLFVBQVU7WUFDVkMsU0FBUyw4REFDUDtRQUNKO1FBQ0FWLFVBQVU7WUFDUk4sS0FBS29CLGlCQUFpQjtZQUN0Qm5CO1lBQ0FPO1lBQ0FFO1lBQ0FHO1lBQ0FDO1lBQ0FHO1NBQ0Q7SUFDSDtBQUNGO0FBRStCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9tYWtlZmlsZS5qcz82ZTZlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogTWFrZWZpbGVcbkF1dGhvcjogSXZhbiBTYWdhbGFldiA8bWFuaWFjQHNvZnR3YXJlbWFuaWFjcy5vcmc+XG5Db250cmlidXRvcnM6IEpvw6tsIFBvcnF1ZXQgPGpvZWxAcG9ycXVldC5vcmc+XG5XZWJzaXRlOiBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL21ha2UvbWFudWFsL2h0bWxfbm9kZS9JbnRyb2R1Y3Rpb24uaHRtbFxuQ2F0ZWdvcnk6IGNvbW1vblxuKi9cblxuZnVuY3Rpb24gbWFrZWZpbGUoaGxqcykge1xuICAvKiBWYXJpYWJsZXM6IHNpbXBsZSAoZWcgJCh2YXIpKSBhbmQgc3BlY2lhbCAoZWcgJEApICovXG4gIGNvbnN0IFZBUklBQkxFID0ge1xuICAgIGNsYXNzTmFtZTogJ3ZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ1xcXFwkXFxcXCgnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJ1xcXFwpJyxcbiAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgICAgIH0sXG4gICAgICB7IGJlZ2luOiAvXFwkW0AlPD9cXF5cXCtcXCpdLyB9XG4gICAgXVxuICB9O1xuICAvKiBRdW90ZWQgc3RyaW5nIHdpdGggdmFyaWFibGVzIGluc2lkZSAqL1xuICBjb25zdCBRVU9URV9TVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiLyxcbiAgICBlbmQ6IC9cIi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFZBUklBQkxFXG4gICAgXVxuICB9O1xuICAvKiBGdW5jdGlvbjogJChmdW5jIGFyZywuLi4pICovXG4gIGNvbnN0IEZVTkMgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAvXFwkXFwoW1xcdy1dK1xccy8sXG4gICAgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3JkczogeyBidWlsdF9pbjpcbiAgICAgICAgJ3N1YnN0IHBhdHN1YnN0IHN0cmlwIGZpbmRzdHJpbmcgZmlsdGVyIGZpbHRlci1vdXQgc29ydCAnXG4gICAgICAgICsgJ3dvcmQgd29yZGxpc3QgZmlyc3R3b3JkIGxhc3R3b3JkIGRpciBub3RkaXIgc3VmZml4IGJhc2VuYW1lICdcbiAgICAgICAgKyAnYWRkc3VmZml4IGFkZHByZWZpeCBqb2luIHdpbGRjYXJkIHJlYWxwYXRoIGFic3BhdGggZXJyb3Igd2FybmluZyAnXG4gICAgICAgICsgJ3NoZWxsIG9yaWdpbiBmbGF2b3IgZm9yZWFjaCBpZiBvciBhbmQgY2FsbCBldmFsIGZpbGUgdmFsdWUnIH0sXG4gICAgY29udGFpbnM6IFsgVkFSSUFCTEUgXVxuICB9O1xuICAvKiBWYXJpYWJsZSBhc3NpZ25tZW50ICovXG4gIGNvbnN0IEFTU0lHTk1FTlQgPSB7IGJlZ2luOiAnXicgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnXFxcXHMqKD89WzorP10/PSknIH07XG4gIC8qIE1ldGEgdGFyZ2V0cyAoLlBIT05ZKSAqL1xuICBjb25zdCBNRVRBID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAvXlxcLlBIT05ZOi8sXG4gICAgZW5kOiAvJC8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiAvW1xcLlxcd10rLyxcbiAgICAgIGtleXdvcmQ6ICcuUEhPTlknXG4gICAgfVxuICB9O1xuICAvKiBUYXJnZXRzICovXG4gIGNvbnN0IFRBUkdFVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICBiZWdpbjogL15bXlxcc10rOi8sXG4gICAgZW5kOiAvJC8sXG4gICAgY29udGFpbnM6IFsgVkFSSUFCTEUgXVxuICB9O1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdNYWtlZmlsZScsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ21rJyxcbiAgICAgICdtYWsnLFxuICAgICAgJ21ha2UnLFxuICAgIF0sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiAvW1xcdy1dKy8sXG4gICAgICBrZXl3b3JkOiAnZGVmaW5lIGVuZGVmIHVuZGVmaW5lIGlmZGVmIGlmbmRlZiBpZmVxIGlmbmVxIGVsc2UgZW5kaWYgJ1xuICAgICAgKyAnaW5jbHVkZSAtaW5jbHVkZSBzaW5jbHVkZSBvdmVycmlkZSBleHBvcnQgdW5leHBvcnQgcHJpdmF0ZSB2cGF0aCdcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgVkFSSUFCTEUsXG4gICAgICBRVU9URV9TVFJJTkcsXG4gICAgICBGVU5DLFxuICAgICAgQVNTSUdOTUVOVCxcbiAgICAgIE1FVEEsXG4gICAgICBUQVJHRVRcbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IG1ha2VmaWxlIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJtYWtlZmlsZSIsImhsanMiLCJWQVJJQUJMRSIsImNsYXNzTmFtZSIsInZhcmlhbnRzIiwiYmVnaW4iLCJVTkRFUlNDT1JFX0lERU5UX1JFIiwiY29udGFpbnMiLCJCQUNLU0xBU0hfRVNDQVBFIiwiUVVPVEVfU1RSSU5HIiwiZW5kIiwiRlVOQyIsImtleXdvcmRzIiwiYnVpbHRfaW4iLCJBU1NJR05NRU5UIiwiTUVUQSIsIiRwYXR0ZXJuIiwia2V5d29yZCIsIlRBUkdFVCIsIm5hbWUiLCJhbGlhc2VzIiwiSEFTSF9DT01NRU5UX01PREUiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/makefile.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/markdown.js":
/*!************************************************************!*\
!*** ./node_modules/highlight.js/es/languages/markdown.js ***!
\************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ markdown)\n/* harmony export */ });\n/*\nLanguage: Markdown\nRequires: xml.js\nAuthor: John Crepezzi <john.crepezzi@gmail.com>\nWebsite: https://daringfireball.net/projects/markdown/\nCategory: common, markup\n*/ function markdown(hljs) {\n const regex = hljs.regex;\n const INLINE_HTML = {\n begin: /<\\/?[A-Za-z_]/,\n end: \">\",\n subLanguage: \"xml\",\n relevance: 0\n };\n const HORIZONTAL_RULE = {\n begin: \"^[-\\\\*]{3,}\",\n end: \"$\"\n };\n const CODE = {\n className: \"code\",\n variants: [\n // TODO: fix to allow these to work with sublanguage also\n {\n begin: \"(`{3,})[^`](.|\\\\n)*?\\\\1`*[ ]*\"\n },\n {\n begin: \"(~{3,})[^~](.|\\\\n)*?\\\\1~*[ ]*\"\n },\n // needed to allow markdown as a sublanguage to work\n {\n begin: \"```\",\n end: \"```+[ ]*$\"\n },\n {\n begin: \"~~~\",\n end: \"~~~+[ ]*$\"\n },\n {\n begin: \"`.+?`\"\n },\n {\n begin: \"(?=^( {4}|\\\\t))\",\n // use contains to gobble up multiple lines to allow the block to be whatever size\n // but only have a single open/close tag vs one per line\n contains: [\n {\n begin: \"^( {4}|\\\\t)\",\n end: \"(\\\\n)$\"\n }\n ],\n relevance: 0\n }\n ]\n };\n const LIST = {\n className: \"bullet\",\n begin: \"^[ \t]*([*+-]|(\\\\d+\\\\.))(?=\\\\s+)\",\n end: \"\\\\s+\",\n excludeEnd: true\n };\n const LINK_REFERENCE = {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: \"symbol\",\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: \"link\",\n begin: /:\\s*/,\n end: /$/,\n excludeBegin: true\n }\n ]\n };\n const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/;\n const LINK = {\n variants: [\n // too much like nested array access in so many languages\n // to have any real relevance\n {\n begin: /\\[.+?\\]\\[.*?\\]/,\n relevance: 0\n },\n // popular internet URLs\n {\n begin: /\\[.+?\\]\\(((data|javascript|mailto):|(?:http|ftp)s?:\\/\\/).*?\\)/,\n relevance: 2\n },\n {\n begin: regex.concat(/\\[.+?\\]\\(/, URL_SCHEME, /:\\/\\/.*?\\)/),\n relevance: 2\n },\n // relative urls\n {\n begin: /\\[.+?\\]\\([./?&#].*?\\)/,\n relevance: 1\n },\n // whatever else, lower relevance (might not be a link at all)\n {\n begin: /\\[.*?\\]\\(.*?\\)/,\n relevance: 0\n }\n ],\n returnBegin: true,\n contains: [\n {\n // empty strings for alt or link text\n match: /\\[(?=\\])/\n },\n {\n className: \"string\",\n relevance: 0,\n begin: \"\\\\[\",\n end: \"\\\\]\",\n excludeBegin: true,\n returnEnd: true\n },\n {\n className: \"link\",\n relevance: 0,\n begin: \"\\\\]\\\\(\",\n end: \"\\\\)\",\n excludeBegin: true,\n excludeEnd: true\n },\n {\n className: \"symbol\",\n relevance: 0,\n begin: \"\\\\]\\\\[\",\n end: \"\\\\]\",\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n const BOLD = {\n className: \"strong\",\n contains: [],\n variants: [\n {\n begin: /_{2}(?!\\s)/,\n end: /_{2}/\n },\n {\n begin: /\\*{2}(?!\\s)/,\n end: /\\*{2}/\n }\n ]\n };\n const ITALIC = {\n className: \"emphasis\",\n contains: [],\n variants: [\n {\n begin: /\\*(?![*\\s])/,\n end: /\\*/\n },\n {\n begin: /_(?![_\\s])/,\n end: /_/,\n relevance: 0\n }\n ]\n };\n // 3 level deep nesting is not allowed because it would create confusion\n // in cases like `***testing***` because where we don't know if the last\n // `***` is starting a new bold/italic or finishing the last one\n const BOLD_WITHOUT_ITALIC = hljs.inherit(BOLD, {\n contains: []\n });\n const ITALIC_WITHOUT_BOLD = hljs.inherit(ITALIC, {\n contains: []\n });\n BOLD.contains.push(ITALIC_WITHOUT_BOLD);\n ITALIC.contains.push(BOLD_WITHOUT_ITALIC);\n let CONTAINABLE = [\n INLINE_HTML,\n LINK\n ];\n [\n BOLD,\n ITALIC,\n BOLD_WITHOUT_ITALIC,\n ITALIC_WITHOUT_BOLD\n ].forEach((m)=>{\n m.contains = m.contains.concat(CONTAINABLE);\n });\n CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC);\n const HEADER = {\n className: \"section\",\n variants: [\n {\n begin: \"^#{1,6}\",\n end: \"$\",\n contains: CONTAINABLE\n },\n {\n begin: \"(?=^.+?\\\\n[=-]{2,}$)\",\n contains: [\n {\n begin: \"^[=-]*$\"\n },\n {\n begin: \"^\",\n end: \"\\\\n\",\n contains: CONTAINABLE\n }\n ]\n }\n ]\n };\n const BLOCKQUOTE = {\n className: \"quote\",\n begin: \"^>\\\\s+\",\n contains: CONTAINABLE,\n end: \"$\"\n };\n return {\n name: \"Markdown\",\n aliases: [\n \"md\",\n \"mkdown\",\n \"mkd\"\n ],\n contains: [\n HEADER,\n INLINE_HTML,\n LIST,\n BOLD,\n ITALIC,\n BLOCKQUOTE,\n CODE,\n HORIZONTAL_RULE,\n LINK,\n LINK_REFERENCE\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9tYXJrZG93bi5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7OztBQU1BLEdBRUEsU0FBU0EsU0FBU0MsSUFBSTtJQUNwQixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLE1BQU1DLGNBQWM7UUFDbEJDLE9BQU87UUFDUEMsS0FBSztRQUNMQyxhQUFhO1FBQ2JDLFdBQVc7SUFDYjtJQUNBLE1BQU1DLGtCQUFrQjtRQUN0QkosT0FBTztRQUNQQyxLQUFLO0lBQ1A7SUFDQSxNQUFNSSxPQUFPO1FBQ1hDLFdBQVc7UUFDWEMsVUFBVTtZQUNSLHlEQUF5RDtZQUN6RDtnQkFBRVAsT0FBTztZQUFnQztZQUN6QztnQkFBRUEsT0FBTztZQUFnQztZQUN6QyxvREFBb0Q7WUFDcEQ7Z0JBQ0VBLE9BQU87Z0JBQ1BDLEtBQUs7WUFDUDtZQUNBO2dCQUNFRCxPQUFPO2dCQUNQQyxLQUFLO1lBQ1A7WUFDQTtnQkFBRUQsT0FBTztZQUFRO1lBQ2pCO2dCQUNFQSxPQUFPO2dCQUNQLGtGQUFrRjtnQkFDbEYsd0RBQXdEO2dCQUN4RFEsVUFBVTtvQkFDUjt3QkFDRVIsT0FBTzt3QkFDUEMsS0FBSztvQkFDUDtpQkFDRDtnQkFDREUsV0FBVztZQUNiO1NBQ0Q7SUFDSDtJQUNBLE1BQU1NLE9BQU87UUFDWEgsV0FBVztRQUNYTixPQUFPO1FBQ1BDLEtBQUs7UUFDTFMsWUFBWTtJQUNkO0lBQ0EsTUFBTUMsaUJBQWlCO1FBQ3JCWCxPQUFPO1FBQ1BZLGFBQWE7UUFDYkosVUFBVTtZQUNSO2dCQUNFRixXQUFXO2dCQUNYTixPQUFPO2dCQUNQQyxLQUFLO2dCQUNMWSxjQUFjO2dCQUNkSCxZQUFZO1lBQ2Q7WUFDQTtnQkFDRUosV0FBVztnQkFDWE4sT0FBTztnQkFDUEMsS0FBSztnQkFDTFksY0FBYztZQUNoQjtTQUNEO0lBQ0g7SUFDQSxNQUFNQyxhQUFhO0lBQ25CLE1BQU1DLE9BQU87UUFDWFIsVUFBVTtZQUNSLHlEQUF5RDtZQUN6RCw2QkFBNkI7WUFDN0I7Z0JBQ0VQLE9BQU87Z0JBQ1BHLFdBQVc7WUFDYjtZQUNBLHdCQUF3QjtZQUN4QjtnQkFDRUgsT0FBTztnQkFDUEcsV0FBVztZQUNiO1lBQ0E7Z0JBQ0VILE9BQU9GLE1BQU1rQixNQUFNLENBQUMsYUFBYUYsWUFBWTtnQkFDN0NYLFdBQVc7WUFDYjtZQUNBLGdCQUFnQjtZQUNoQjtnQkFDRUgsT0FBTztnQkFDUEcsV0FBVztZQUNiO1lBQ0EsOERBQThEO1lBQzlEO2dCQUNFSCxPQUFPO2dCQUNQRyxXQUFXO1lBQ2I7U0FDRDtRQUNEUyxhQUFhO1FBQ2JKLFVBQVU7WUFDUjtnQkFDRSxxQ0FBcUM7Z0JBQ3JDUyxPQUFPO1lBQVc7WUFDcEI7Z0JBQ0VYLFdBQVc7Z0JBQ1hILFdBQVc7Z0JBQ1hILE9BQU87Z0JBQ1BDLEtBQUs7Z0JBQ0xZLGNBQWM7Z0JBQ2RLLFdBQVc7WUFDYjtZQUNBO2dCQUNFWixXQUFXO2dCQUNYSCxXQUFXO2dCQUNYSCxPQUFPO2dCQUNQQyxLQUFLO2dCQUNMWSxjQUFjO2dCQUNkSCxZQUFZO1lBQ2Q7WUFDQTtnQkFDRUosV0FBVztnQkFDWEgsV0FBVztnQkFDWEgsT0FBTztnQkFDUEMsS0FBSztnQkFDTFksY0FBYztnQkFDZEgsWUFBWTtZQUNkO1NBQ0Q7SUFDSDtJQUNBLE1BQU1TLE9BQU87UUFDWGIsV0FBVztRQUNYRSxVQUFVLEVBQUU7UUFDWkQsVUFBVTtZQUNSO2dCQUNFUCxPQUFPO2dCQUNQQyxLQUFLO1lBQ1A7WUFDQTtnQkFDRUQsT0FBTztnQkFDUEMsS0FBSztZQUNQO1NBQ0Q7SUFDSDtJQUNBLE1BQU1tQixTQUFTO1FBQ2JkLFdBQVc7UUFDWEUsVUFBVSxFQUFFO1FBQ1pELFVBQVU7WUFDUjtnQkFDRVAsT0FBTztnQkFDUEMsS0FBSztZQUNQO1lBQ0E7Z0JBQ0VELE9BQU87Z0JBQ1BDLEtBQUs7Z0JBQ0xFLFdBQVc7WUFDYjtTQUNEO0lBQ0g7SUFFQSx3RUFBd0U7SUFDeEUsd0VBQXdFO0lBQ3hFLGdFQUFnRTtJQUNoRSxNQUFNa0Isc0JBQXNCeEIsS0FBS3lCLE9BQU8sQ0FBQ0gsTUFBTTtRQUFFWCxVQUFVLEVBQUU7SUFBQztJQUM5RCxNQUFNZSxzQkFBc0IxQixLQUFLeUIsT0FBTyxDQUFDRixRQUFRO1FBQUVaLFVBQVUsRUFBRTtJQUFDO0lBQ2hFVyxLQUFLWCxRQUFRLENBQUNnQixJQUFJLENBQUNEO0lBQ25CSCxPQUFPWixRQUFRLENBQUNnQixJQUFJLENBQUNIO0lBRXJCLElBQUlJLGNBQWM7UUFDaEIxQjtRQUNBZ0I7S0FDRDtJQUVEO1FBQ0VJO1FBQ0FDO1FBQ0FDO1FBQ0FFO0tBQ0QsQ0FBQ0csT0FBTyxDQUFDQyxDQUFBQTtRQUNSQSxFQUFFbkIsUUFBUSxHQUFHbUIsRUFBRW5CLFFBQVEsQ0FBQ1EsTUFBTSxDQUFDUztJQUNqQztJQUVBQSxjQUFjQSxZQUFZVCxNQUFNLENBQUNHLE1BQU1DO0lBRXZDLE1BQU1RLFNBQVM7UUFDYnRCLFdBQVc7UUFDWEMsVUFBVTtZQUNSO2dCQUNFUCxPQUFPO2dCQUNQQyxLQUFLO2dCQUNMTyxVQUFVaUI7WUFDWjtZQUNBO2dCQUNFekIsT0FBTztnQkFDUFEsVUFBVTtvQkFDUjt3QkFBRVIsT0FBTztvQkFBVTtvQkFDbkI7d0JBQ0VBLE9BQU87d0JBQ1BDLEtBQUs7d0JBQ0xPLFVBQVVpQjtvQkFDWjtpQkFDRDtZQUNIO1NBQ0Q7SUFDSDtJQUVBLE1BQU1JLGFBQWE7UUFDakJ2QixXQUFXO1FBQ1hOLE9BQU87UUFDUFEsVUFBVWlCO1FBQ1Z4QixLQUFLO0lBQ1A7SUFFQSxPQUFPO1FBQ0w2QixNQUFNO1FBQ05DLFNBQVM7WUFDUDtZQUNBO1lBQ0E7U0FDRDtRQUNEdkIsVUFBVTtZQUNSb0I7WUFDQTdCO1lBQ0FVO1lBQ0FVO1lBQ0FDO1lBQ0FTO1lBQ0F4QjtZQUNBRDtZQUNBVztZQUNBSjtTQUNEO0lBQ0g7QUFDRjtBQUUrQiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvbWFya2Rvd24uanM/YjYxZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IE1hcmtkb3duXG5SZXF1aXJlczogeG1sLmpzXG5BdXRob3I6IEpvaG4gQ3JlcGV6emkgPGpvaG4uY3JlcGV6emlAZ21haWwuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly9kYXJpbmdmaXJlYmFsbC5uZXQvcHJvamVjdHMvbWFya2Rvd24vXG5DYXRlZ29yeTogY29tbW9uLCBtYXJrdXBcbiovXG5cbmZ1bmN0aW9uIG1hcmtkb3duKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICBjb25zdCBJTkxJTkVfSFRNTCA9IHtcbiAgICBiZWdpbjogLzxcXC8/W0EtWmEtel9dLyxcbiAgICBlbmQ6ICc+JyxcbiAgICBzdWJMYW5ndWFnZTogJ3htbCcsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGNvbnN0IEhPUklaT05UQUxfUlVMRSA9IHtcbiAgICBiZWdpbjogJ15bLVxcXFwqXXszLH0nLFxuICAgIGVuZDogJyQnXG4gIH07XG4gIGNvbnN0IENPREUgPSB7XG4gICAgY2xhc3NOYW1lOiAnY29kZScsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIC8vIFRPRE86IGZpeCB0byBhbGxvdyB0aGVzZSB0byB3b3JrIHdpdGggc3VibGFuZ3VhZ2UgYWxzb1xuICAgICAgeyBiZWdpbjogJyhgezMsfSlbXmBdKC58XFxcXG4pKj9cXFxcMWAqWyBdKicgfSxcbiAgICAgIHsgYmVnaW46ICcofnszLH0pW15+XSgufFxcXFxuKSo/XFxcXDF+KlsgXSonIH0sXG4gICAgICAvLyBuZWVkZWQgdG8gYWxsb3cgbWFya2Rvd24gYXMgYSBzdWJsYW5ndWFnZSB0byB3b3JrXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnYGBgJyxcbiAgICAgICAgZW5kOiAnYGBgK1sgXSokJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICd+fn4nLFxuICAgICAgICBlbmQ6ICd+fn4rWyBdKiQnXG4gICAgICB9LFxuICAgICAgeyBiZWdpbjogJ2AuKz9gJyB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyg/PV4oIHs0fXxcXFxcdCkpJyxcbiAgICAgICAgLy8gdXNlIGNvbnRhaW5zIHRvIGdvYmJsZSB1cCBtdWx0aXBsZSBsaW5lcyB0byBhbGxvdyB0aGUgYmxvY2sgdG8gYmUgd2hhdGV2ZXIgc2l6ZVxuICAgICAgICAvLyBidXQgb25seSBoYXZlIGEgc2luZ2xlIG9wZW4vY2xvc2UgdGFnIHZzIG9uZSBwZXIgbGluZVxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXiggezR9fFxcXFx0KScsXG4gICAgICAgICAgICBlbmQ6ICcoXFxcXG4pJCdcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgY29uc3QgTElTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdidWxsZXQnLFxuICAgIGJlZ2luOiAnXlsgXFx0XSooWyorLV18KFxcXFxkK1xcXFwuKSkoPz1cXFxccyspJyxcbiAgICBlbmQ6ICdcXFxccysnLFxuICAgIGV4Y2x1ZGVFbmQ6IHRydWVcbiAgfTtcbiAgY29uc3QgTElOS19SRUZFUkVOQ0UgPSB7XG4gICAgYmVnaW46IC9eXFxbW15cXG5dK1xcXTovLFxuICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvXFxbLyxcbiAgICAgICAgZW5kOiAvXFxdLyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaW5rJyxcbiAgICAgICAgYmVnaW46IC86XFxzKi8sXG4gICAgICAgIGVuZDogLyQvLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWVcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGNvbnN0IFVSTF9TQ0hFTUUgPSAvW0EtWmEtel1bQS1aYS16MC05Ky4tXSovO1xuICBjb25zdCBMSU5LID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyB0b28gbXVjaCBsaWtlIG5lc3RlZCBhcnJheSBhY2Nlc3MgaW4gc28gbWFueSBsYW5ndWFnZXNcbiAgICAgIC8vIHRvIGhhdmUgYW55IHJlYWwgcmVsZXZhbmNlXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxbLis/XFxdXFxbLio/XFxdLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgLy8gcG9wdWxhciBpbnRlcm5ldCBVUkxzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFxbLis/XFxdXFwoKChkYXRhfGphdmFzY3JpcHR8bWFpbHRvKTp8KD86aHR0cHxmdHApcz86XFwvXFwvKS4qP1xcKS8sXG4gICAgICAgIHJlbGV2YW5jZTogMlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IHJlZ2V4LmNvbmNhdCgvXFxbLis/XFxdXFwoLywgVVJMX1NDSEVNRSwgLzpcXC9cXC8uKj9cXCkvKSxcbiAgICAgICAgcmVsZXZhbmNlOiAyXG4gICAgICB9LFxuICAgICAgLy8gcmVsYXRpdmUgdXJsc1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcWy4rP1xcXVxcKFsuLz8mI10uKj9cXCkvLFxuICAgICAgICByZWxldmFuY2U6IDFcbiAgICAgIH0sXG4gICAgICAvLyB3aGF0ZXZlciBlbHNlLCBsb3dlciByZWxldmFuY2UgKG1pZ2h0IG5vdCBiZSBhIGxpbmsgYXQgYWxsKVxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcWy4qP1xcXVxcKC4qP1xcKS8sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfVxuICAgIF0sXG4gICAgcmV0dXJuQmVnaW46IHRydWUsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgLy8gZW1wdHkgc3RyaW5ncyBmb3IgYWx0IG9yIGxpbmsgdGV4dFxuICAgICAgICBtYXRjaDogL1xcWyg/PVxcXSkvIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgYmVnaW46ICdcXFxcWycsXG4gICAgICAgIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICByZXR1cm5FbmQ6IHRydWVcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2xpbmsnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcKCcsXG4gICAgICAgIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGJlZ2luOiAnXFxcXF1cXFxcWycsXG4gICAgICAgIGVuZDogJ1xcXFxdJyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBjb25zdCBCT0xEID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cm9uZycsXG4gICAgY29udGFpbnM6IFtdLCAvLyBkZWZpbmVkIGxhdGVyXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9fezJ9KD8hXFxzKS8sXG4gICAgICAgIGVuZDogL197Mn0vXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKnsyfSg/IVxccykvLFxuICAgICAgICBlbmQ6IC9cXCp7Mn0vXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBjb25zdCBJVEFMSUMgPSB7XG4gICAgY2xhc3NOYW1lOiAnZW1waGFzaXMnLFxuICAgIGNvbnRhaW5zOiBbXSwgLy8gZGVmaW5lZCBsYXRlclxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwqKD8hWypcXHNdKS8sXG4gICAgICAgIGVuZDogL1xcKi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXyg/IVtfXFxzXSkvLFxuICAgICAgICBlbmQ6IC9fLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIC8vIDMgbGV2ZWwgZGVlcCBuZXN0aW5nIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgaXQgd291bGQgY3JlYXRlIGNvbmZ1c2lvblxuICAvLyBpbiBjYXNlcyBsaWtlIGAqKip0ZXN0aW5nKioqYCBiZWNhdXNlIHdoZXJlIHdlIGRvbid0IGtub3cgaWYgdGhlIGxhc3RcbiAgLy8gYCoqKmAgaXMgc3RhcnRpbmcgYSBuZXcgYm9sZC9pdGFsaWMgb3IgZmluaXNoaW5nIHRoZSBsYXN0IG9uZVxuICBjb25zdCBCT0xEX1dJVEhPVVRfSVRBTElDID0gaGxqcy5pbmhlcml0KEJPTEQsIHsgY29udGFpbnM6IFtdIH0pO1xuICBjb25zdCBJVEFMSUNfV0lUSE9VVF9CT0xEID0gaGxqcy5pbmhlcml0KElUQUxJQywgeyBjb250YWluczogW10gfSk7XG4gIEJPTEQuY29udGFpbnMucHVzaChJVEFMSUNfV0lUSE9VVF9CT0xEKTtcbiAgSVRBTElDLmNvbnRhaW5zLnB1c2goQk9MRF9XSVRIT1VUX0lUQUxJQyk7XG5cbiAgbGV0IENPTlRBSU5BQkxFID0gW1xuICAgIElOTElORV9IVE1MLFxuICAgIExJTktcbiAgXTtcblxuICBbXG4gICAgQk9MRCxcbiAgICBJVEFMSUMsXG4gICAgQk9MRF9XSVRIT1VUX0lUQUxJQyxcbiAgICBJVEFMSUNfV0lUSE9VVF9CT0xEXG4gIF0uZm9yRWFjaChtID0+IHtcbiAgICBtLmNvbnRhaW5zID0gbS5jb250YWlucy5jb25jYXQoQ09OVEFJTkFCTEUpO1xuICB9KTtcblxuICBDT05UQUlOQUJMRSA9IENPTlRBSU5BQkxFLmNvbmNhdChCT0xELCBJVEFMSUMpO1xuXG4gIGNvbnN0IEhFQURFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdzZWN0aW9uJyxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogJ14jezEsNn0nLFxuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAgY29udGFpbnM6IENPTlRBSU5BQkxFXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogJyg/PV4uKz9cXFxcbls9LV17Mix9JCknLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgYmVnaW46ICdeWz0tXSokJyB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnXicsXG4gICAgICAgICAgICBlbmQ6IFwiXFxcXG5cIixcbiAgICAgICAgICAgIGNvbnRhaW5zOiBDT05UQUlOQUJMRVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcblxuICBjb25zdCBCTE9DS1FVT1RFID0ge1xuICAgIGNsYXNzTmFtZTogJ3F1b3RlJyxcbiAgICBiZWdpbjogJ14+XFxcXHMrJyxcbiAgICBjb250YWluczogQ09OVEFJTkFCTEUsXG4gICAgZW5kOiAnJCdcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdNYXJrZG93bicsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ21kJyxcbiAgICAgICdta2Rvd24nLFxuICAgICAgJ21rZCdcbiAgICBdLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBIRUFERVIsXG4gICAgICBJTkxJTkVfSFRNTCxcbiAgICAgIExJU1QsXG4gICAgICBCT0xELFxuICAgICAgSVRBTElDLFxuICAgICAgQkxPQ0tRVU9URSxcbiAgICAgIENPREUsXG4gICAgICBIT1JJWk9OVEFMX1JVTEUsXG4gICAgICBMSU5LLFxuICAgICAgTElOS19SRUZFUkVOQ0VcbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IG1hcmtkb3duIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJtYXJrZG93biIsImhsanMiLCJyZWdleCIsIklOTElORV9IVE1MIiwiYmVnaW4iLCJlbmQiLCJzdWJMYW5ndWFnZSIsInJlbGV2YW5jZSIsIkhPUklaT05UQUxfUlVMRSIsIkNPREUiLCJjbGFzc05hbWUiLCJ2YXJpYW50cyIsImNvbnRhaW5zIiwiTElTVCIsImV4Y2x1ZGVFbmQiLCJMSU5LX1JFRkVSRU5DRSIsInJldHVybkJlZ2luIiwiZXhjbHVkZUJlZ2luIiwiVVJMX1NDSEVNRSIsIkxJTksiLCJjb25jYXQiLCJtYXRjaCIsInJldHVybkVuZCIsIkJPTEQiLCJJVEFMSUMiLCJCT0xEX1dJVEhPVVRfSVRBTElDIiwiaW5oZXJpdCIsIklUQUxJQ19XSVRIT1VUX0JPTEQiLCJwdXNoIiwiQ09OVEFJTkFCTEUiLCJmb3JFYWNoIiwibSIsIkhFQURFUiIsIkJMT0NLUVVPVEUiLCJuYW1lIiwiYWxpYXNlcyIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/markdown.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/objectivec.js":
/*!**************************************************************!*\
!*** ./node_modules/highlight.js/es/languages/objectivec.js ***!
\**************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ objectivec)\n/* harmony export */ });\n/*\nLanguage: Objective-C\nAuthor: Valerii Hiora <valerii.hiora@gmail.com>\nContributors: Angel G. Olloqui <angelgarcia.mail@gmail.com>, Matt Diephouse <matt@diephouse.com>, Andrew Farmer <ahfarmer@gmail.com>, Minh Nguyễn <mxn@1ec5.org>\nWebsite: https://developer.apple.com/documentation/objectivec\nCategory: common\n*/ function objectivec(hljs) {\n const API_CLASS = {\n className: \"built_in\",\n begin: \"\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+\"\n };\n const IDENTIFIER_RE = /[a-zA-Z@][a-zA-Z0-9_]*/;\n const TYPES = [\n \"int\",\n \"float\",\n \"char\",\n \"unsigned\",\n \"signed\",\n \"short\",\n \"long\",\n \"double\",\n \"wchar_t\",\n \"unichar\",\n \"void\",\n \"bool\",\n \"BOOL\",\n \"id|0\",\n \"_Bool\"\n ];\n const KWS = [\n \"while\",\n \"export\",\n \"sizeof\",\n \"typedef\",\n \"const\",\n \"struct\",\n \"for\",\n \"union\",\n \"volatile\",\n \"static\",\n \"mutable\",\n \"if\",\n \"do\",\n \"return\",\n \"goto\",\n \"enum\",\n \"else\",\n \"break\",\n \"extern\",\n \"asm\",\n \"case\",\n \"default\",\n \"register\",\n \"explicit\",\n \"typename\",\n \"switch\",\n \"continue\",\n \"inline\",\n \"readonly\",\n \"assign\",\n \"readwrite\",\n \"self\",\n \"@synchronized\",\n \"id\",\n \"typeof\",\n \"nonatomic\",\n \"IBOutlet\",\n \"IBAction\",\n \"strong\",\n \"weak\",\n \"copy\",\n \"in\",\n \"out\",\n \"inout\",\n \"bycopy\",\n \"byref\",\n \"oneway\",\n \"__strong\",\n \"__weak\",\n \"__block\",\n \"__autoreleasing\",\n \"@private\",\n \"@protected\",\n \"@public\",\n \"@try\",\n \"@property\",\n \"@end\",\n \"@throw\",\n \"@catch\",\n \"@finally\",\n \"@autoreleasepool\",\n \"@synthesize\",\n \"@dynamic\",\n \"@selector\",\n \"@optional\",\n \"@required\",\n \"@encode\",\n \"@package\",\n \"@import\",\n \"@defs\",\n \"@compatibility_alias\",\n \"__bridge\",\n \"__bridge_transfer\",\n \"__bridge_retained\",\n \"__bridge_retain\",\n \"__covariant\",\n \"__contravariant\",\n \"__kindof\",\n \"_Nonnull\",\n \"_Nullable\",\n \"_Null_unspecified\",\n \"__FUNCTION__\",\n \"__PRETTY_FUNCTION__\",\n \"__attribute__\",\n \"getter\",\n \"setter\",\n \"retain\",\n \"unsafe_unretained\",\n \"nonnull\",\n \"nullable\",\n \"null_unspecified\",\n \"null_resettable\",\n \"class\",\n \"instancetype\",\n \"NS_DESIGNATED_INITIALIZER\",\n \"NS_UNAVAILABLE\",\n \"NS_REQUIRES_SUPER\",\n \"NS_RETURNS_INNER_POINTER\",\n \"NS_INLINE\",\n \"NS_AVAILABLE\",\n \"NS_DEPRECATED\",\n \"NS_ENUM\",\n \"NS_OPTIONS\",\n \"NS_SWIFT_UNAVAILABLE\",\n \"NS_ASSUME_NONNULL_BEGIN\",\n \"NS_ASSUME_NONNULL_END\",\n \"NS_REFINED_FOR_SWIFT\",\n \"NS_SWIFT_NAME\",\n \"NS_SWIFT_NOTHROW\",\n \"NS_DURING\",\n \"NS_HANDLER\",\n \"NS_ENDHANDLER\",\n \"NS_VALUERETURN\",\n \"NS_VOIDRETURN\"\n ];\n const LITERALS = [\n \"false\",\n \"true\",\n \"FALSE\",\n \"TRUE\",\n \"nil\",\n \"YES\",\n \"NO\",\n \"NULL\"\n ];\n const BUILT_INS = [\n \"dispatch_once_t\",\n \"dispatch_queue_t\",\n \"dispatch_sync\",\n \"dispatch_async\",\n \"dispatch_once\"\n ];\n const KEYWORDS = {\n \"variable.language\": [\n \"this\",\n \"super\"\n ],\n $pattern: IDENTIFIER_RE,\n keyword: KWS,\n literal: LITERALS,\n built_in: BUILT_INS,\n type: TYPES\n };\n const CLASS_KEYWORDS = {\n $pattern: IDENTIFIER_RE,\n keyword: [\n \"@interface\",\n \"@class\",\n \"@protocol\",\n \"@implementation\"\n ]\n };\n return {\n name: \"Objective-C\",\n aliases: [\n \"mm\",\n \"objc\",\n \"obj-c\",\n \"obj-c++\",\n \"objective-c++\"\n ],\n keywords: KEYWORDS,\n illegal: \"</\",\n contains: [\n API_CLASS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n className: \"string\",\n variants: [\n {\n begin: '@\"',\n end: '\"',\n illegal: \"\\\\n\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n }\n ]\n },\n {\n className: \"meta\",\n begin: /#\\s*[a-z]+\\b/,\n end: /$/,\n keywords: {\n keyword: \"if else elif endif define undef warning error line \" + \"pragma ifdef ifndef include\"\n },\n contains: [\n {\n begin: /\\\\\\n/,\n relevance: 0\n },\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n className: \"string\"\n }),\n {\n className: \"string\",\n begin: /<.*?>/,\n end: /$/,\n illegal: \"\\\\n\"\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: \"class\",\n begin: \"(\" + CLASS_KEYWORDS.keyword.join(\"|\") + \")\\\\b\",\n end: /(\\{|$)/,\n excludeEnd: true,\n keywords: CLASS_KEYWORDS,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n begin: \"\\\\.\" + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9vYmplY3RpdmVjLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7O0FBTUEsR0FFQSxTQUFTQSxXQUFXQyxJQUFJO0lBQ3RCLE1BQU1DLFlBQVk7UUFDaEJDLFdBQVc7UUFDWEMsT0FBTztJQUNUO0lBQ0EsTUFBTUMsZ0JBQWdCO0lBQ3RCLE1BQU1DLFFBQVE7UUFDWjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUNELE1BQU1DLE1BQU07UUFDVjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUNELE1BQU1DLFdBQVc7UUFDZjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFDRCxNQUFNQyxZQUFZO1FBQ2hCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUNELE1BQU1DLFdBQVc7UUFDZixxQkFBcUI7WUFDbkI7WUFDQTtTQUNEO1FBQ0RDLFVBQVVOO1FBQ1ZPLFNBQVNMO1FBQ1RNLFNBQVNMO1FBQ1RNLFVBQVVMO1FBQ1ZNLE1BQU1UO0lBQ1I7SUFDQSxNQUFNVSxpQkFBaUI7UUFDckJMLFVBQVVOO1FBQ1ZPLFNBQVM7WUFDUDtZQUNBO1lBQ0E7WUFDQTtTQUNEO0lBQ0g7SUFDQSxPQUFPO1FBQ0xLLE1BQU07UUFDTkMsU0FBUztZQUNQO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7U0FDRDtRQUNEQyxVQUFVVDtRQUNWVSxTQUFTO1FBQ1RDLFVBQVU7WUFDUm5CO1lBQ0FELEtBQUtxQixtQkFBbUI7WUFDeEJyQixLQUFLc0Isb0JBQW9CO1lBQ3pCdEIsS0FBS3VCLGFBQWE7WUFDbEJ2QixLQUFLd0IsaUJBQWlCO1lBQ3RCeEIsS0FBS3lCLGdCQUFnQjtZQUNyQjtnQkFDRXZCLFdBQVc7Z0JBQ1h3QixVQUFVO29CQUNSO3dCQUNFdkIsT0FBTzt3QkFDUHdCLEtBQUs7d0JBQ0xSLFNBQVM7d0JBQ1RDLFVBQVU7NEJBQUVwQixLQUFLNEIsZ0JBQWdCO3lCQUFFO29CQUNyQztpQkFDRDtZQUNIO1lBQ0E7Z0JBQ0UxQixXQUFXO2dCQUNYQyxPQUFPO2dCQUNQd0IsS0FBSztnQkFDTFQsVUFBVTtvQkFBRVAsU0FDUix3REFDRTtnQkFBOEI7Z0JBQ3BDUyxVQUFVO29CQUNSO3dCQUNFakIsT0FBTzt3QkFDUDBCLFdBQVc7b0JBQ2I7b0JBQ0E3QixLQUFLOEIsT0FBTyxDQUFDOUIsS0FBS3dCLGlCQUFpQixFQUFFO3dCQUFFdEIsV0FBVztvQkFBUztvQkFDM0Q7d0JBQ0VBLFdBQVc7d0JBQ1hDLE9BQU87d0JBQ1B3QixLQUFLO3dCQUNMUixTQUFTO29CQUNYO29CQUNBbkIsS0FBS3FCLG1CQUFtQjtvQkFDeEJyQixLQUFLc0Isb0JBQW9CO2lCQUMxQjtZQUNIO1lBQ0E7Z0JBQ0VwQixXQUFXO2dCQUNYQyxPQUFPLE1BQU1ZLGVBQWVKLE9BQU8sQ0FBQ29CLElBQUksQ0FBQyxPQUFPO2dCQUNoREosS0FBSztnQkFDTEssWUFBWTtnQkFDWmQsVUFBVUg7Z0JBQ1ZLLFVBQVU7b0JBQUVwQixLQUFLaUMscUJBQXFCO2lCQUFFO1lBQzFDO1lBQ0E7Z0JBQ0U5QixPQUFPLFFBQVFILEtBQUtrQyxtQkFBbUI7Z0JBQ3ZDTCxXQUFXO1lBQ2I7U0FDRDtJQUNIO0FBQ0Y7QUFFaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL29iamVjdGl2ZWMuanM/ZWE0YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IE9iamVjdGl2ZS1DXG5BdXRob3I6IFZhbGVyaWkgSGlvcmEgPHZhbGVyaWkuaGlvcmFAZ21haWwuY29tPlxuQ29udHJpYnV0b3JzOiBBbmdlbCBHLiBPbGxvcXVpIDxhbmdlbGdhcmNpYS5tYWlsQGdtYWlsLmNvbT4sIE1hdHQgRGllcGhvdXNlIDxtYXR0QGRpZXBob3VzZS5jb20+LCBBbmRyZXcgRmFybWVyIDxhaGZhcm1lckBnbWFpbC5jb20+LCBNaW5oIE5ndXnhu4VuIDxteG5AMWVjNS5vcmc+XG5XZWJzaXRlOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9vYmplY3RpdmVjXG5DYXRlZ29yeTogY29tbW9uXG4qL1xuXG5mdW5jdGlvbiBvYmplY3RpdmVjKGhsanMpIHtcbiAgY29uc3QgQVBJX0NMQVNTID0ge1xuICAgIGNsYXNzTmFtZTogJ2J1aWx0X2luJyxcbiAgICBiZWdpbjogJ1xcXFxiKEFWfENBfENGfENHfENJfENMfENNfENOfENUfE1LfE1QfE1US3xNVEx8TlN8U0NOfFNLfFVJfFdLfFhDKVxcXFx3KydcbiAgfTtcbiAgY29uc3QgSURFTlRJRklFUl9SRSA9IC9bYS16QS1aQF1bYS16QS1aMC05X10qLztcbiAgY29uc3QgVFlQRVMgPSBbXG4gICAgXCJpbnRcIixcbiAgICBcImZsb2F0XCIsXG4gICAgXCJjaGFyXCIsXG4gICAgXCJ1bnNpZ25lZFwiLFxuICAgIFwic2lnbmVkXCIsXG4gICAgXCJzaG9ydFwiLFxuICAgIFwibG9uZ1wiLFxuICAgIFwiZG91YmxlXCIsXG4gICAgXCJ3Y2hhcl90XCIsXG4gICAgXCJ1bmljaGFyXCIsXG4gICAgXCJ2b2lkXCIsXG4gICAgXCJib29sXCIsXG4gICAgXCJCT09MXCIsXG4gICAgXCJpZHwwXCIsXG4gICAgXCJfQm9vbFwiXG4gIF07XG4gIGNvbnN0IEtXUyA9IFtcbiAgICBcIndoaWxlXCIsXG4gICAgXCJleHBvcnRcIixcbiAgICBcInNpemVvZlwiLFxuICAgIFwidHlwZWRlZlwiLFxuICAgIFwiY29uc3RcIixcbiAgICBcInN0cnVjdFwiLFxuICAgIFwiZm9yXCIsXG4gICAgXCJ1bmlvblwiLFxuICAgIFwidm9sYXRpbGVcIixcbiAgICBcInN0YXRpY1wiLFxuICAgIFwibXV0YWJsZVwiLFxuICAgIFwiaWZcIixcbiAgICBcImRvXCIsXG4gICAgXCJyZXR1cm5cIixcbiAgICBcImdvdG9cIixcbiAgICBcImVudW1cIixcbiAgICBcImVsc2VcIixcbiAgICBcImJyZWFrXCIsXG4gICAgXCJleHRlcm5cIixcbiAgICBcImFzbVwiLFxuICAgIFwiY2FzZVwiLFxuICAgIFwiZGVmYXVsdFwiLFxuICAgIFwicmVnaXN0ZXJcIixcbiAgICBcImV4cGxpY2l0XCIsXG4gICAgXCJ0eXBlbmFtZVwiLFxuICAgIFwic3dpdGNoXCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwiaW5saW5lXCIsXG4gICAgXCJyZWFkb25seVwiLFxuICAgIFwiYXNzaWduXCIsXG4gICAgXCJyZWFkd3JpdGVcIixcbiAgICBcInNlbGZcIixcbiAgICBcIkBzeW5jaHJvbml6ZWRcIixcbiAgICBcImlkXCIsXG4gICAgXCJ0eXBlb2ZcIixcbiAgICBcIm5vbmF0b21pY1wiLFxuICAgIFwiSUJPdXRsZXRcIixcbiAgICBcIklCQWN0aW9uXCIsXG4gICAgXCJzdHJvbmdcIixcbiAgICBcIndlYWtcIixcbiAgICBcImNvcHlcIixcbiAgICBcImluXCIsXG4gICAgXCJvdXRcIixcbiAgICBcImlub3V0XCIsXG4gICAgXCJieWNvcHlcIixcbiAgICBcImJ5cmVmXCIsXG4gICAgXCJvbmV3YXlcIixcbiAgICBcIl9fc3Ryb25nXCIsXG4gICAgXCJfX3dlYWtcIixcbiAgICBcIl9fYmxvY2tcIixcbiAgICBcIl9fYXV0b3JlbGVhc2luZ1wiLFxuICAgIFwiQHByaXZhdGVcIixcbiAgICBcIkBwcm90ZWN0ZWRcIixcbiAgICBcIkBwdWJsaWNcIixcbiAgICBcIkB0cnlcIixcbiAgICBcIkBwcm9wZXJ0eVwiLFxuICAgIFwiQGVuZFwiLFxuICAgIFwiQHRocm93XCIsXG4gICAgXCJAY2F0Y2hcIixcbiAgICBcIkBmaW5hbGx5XCIsXG4gICAgXCJAYXV0b3JlbGVhc2Vwb29sXCIsXG4gICAgXCJAc3ludGhlc2l6ZVwiLFxuICAgIFwiQGR5bmFtaWNcIixcbiAgICBcIkBzZWxlY3RvclwiLFxuICAgIFwiQG9wdGlvbmFsXCIsXG4gICAgXCJAcmVxdWlyZWRcIixcbiAgICBcIkBlbmNvZGVcIixcbiAgICBcIkBwYWNrYWdlXCIsXG4gICAgXCJAaW1wb3J0XCIsXG4gICAgXCJAZGVmc1wiLFxuICAgIFwiQGNvbXBhdGliaWxpdHlfYWxpYXNcIixcbiAgICBcIl9fYnJpZGdlXCIsXG4gICAgXCJfX2JyaWRnZV90cmFuc2ZlclwiLFxuICAgIFwiX19icmlkZ2VfcmV0YWluZWRcIixcbiAgICBcIl9fYnJpZGdlX3JldGFpblwiLFxuICAgIFwiX19jb3ZhcmlhbnRcIixcbiAgICBcIl9fY29udHJhdmFyaWFudFwiLFxuICAgIFwiX19raW5kb2ZcIixcbiAgICBcIl9Ob25udWxsXCIsXG4gICAgXCJfTnVsbGFibGVcIixcbiAgICBcIl9OdWxsX3Vuc3BlY2lmaWVkXCIsXG4gICAgXCJfX0ZVTkNUSU9OX19cIixcbiAgICBcIl9fUFJFVFRZX0ZVTkNUSU9OX19cIixcbiAgICBcIl9fYXR0cmlidXRlX19cIixcbiAgICBcImdldHRlclwiLFxuICAgIFwic2V0dGVyXCIsXG4gICAgXCJyZXRhaW5cIixcbiAgICBcInVuc2FmZV91bnJldGFpbmVkXCIsXG4gICAgXCJub25udWxsXCIsXG4gICAgXCJudWxsYWJsZVwiLFxuICAgIFwibnVsbF91bnNwZWNpZmllZFwiLFxuICAgIFwibnVsbF9yZXNldHRhYmxlXCIsXG4gICAgXCJjbGFzc1wiLFxuICAgIFwiaW5zdGFuY2V0eXBlXCIsXG4gICAgXCJOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSXCIsXG4gICAgXCJOU19VTkFWQUlMQUJMRVwiLFxuICAgIFwiTlNfUkVRVUlSRVNfU1VQRVJcIixcbiAgICBcIk5TX1JFVFVSTlNfSU5ORVJfUE9JTlRFUlwiLFxuICAgIFwiTlNfSU5MSU5FXCIsXG4gICAgXCJOU19BVkFJTEFCTEVcIixcbiAgICBcIk5TX0RFUFJFQ0FURURcIixcbiAgICBcIk5TX0VOVU1cIixcbiAgICBcIk5TX09QVElPTlNcIixcbiAgICBcIk5TX1NXSUZUX1VOQVZBSUxBQkxFXCIsXG4gICAgXCJOU19BU1NVTUVfTk9OTlVMTF9CRUdJTlwiLFxuICAgIFwiTlNfQVNTVU1FX05PTk5VTExfRU5EXCIsXG4gICAgXCJOU19SRUZJTkVEX0ZPUl9TV0lGVFwiLFxuICAgIFwiTlNfU1dJRlRfTkFNRVwiLFxuICAgIFwiTlNfU1dJRlRfTk9USFJPV1wiLFxuICAgIFwiTlNfRFVSSU5HXCIsXG4gICAgXCJOU19IQU5ETEVSXCIsXG4gICAgXCJOU19FTkRIQU5ETEVSXCIsXG4gICAgXCJOU19WQUxVRVJFVFVSTlwiLFxuICAgIFwiTlNfVk9JRFJFVFVSTlwiXG4gIF07XG4gIGNvbnN0IExJVEVSQUxTID0gW1xuICAgIFwiZmFsc2VcIixcbiAgICBcInRydWVcIixcbiAgICBcIkZBTFNFXCIsXG4gICAgXCJUUlVFXCIsXG4gICAgXCJuaWxcIixcbiAgICBcIllFU1wiLFxuICAgIFwiTk9cIixcbiAgICBcIk5VTExcIlxuICBdO1xuICBjb25zdCBCVUlMVF9JTlMgPSBbXG4gICAgXCJkaXNwYXRjaF9vbmNlX3RcIixcbiAgICBcImRpc3BhdGNoX3F1ZXVlX3RcIixcbiAgICBcImRpc3BhdGNoX3N5bmNcIixcbiAgICBcImRpc3BhdGNoX2FzeW5jXCIsXG4gICAgXCJkaXNwYXRjaF9vbmNlXCJcbiAgXTtcbiAgY29uc3QgS0VZV09SRFMgPSB7XG4gICAgXCJ2YXJpYWJsZS5sYW5ndWFnZVwiOiBbXG4gICAgICBcInRoaXNcIixcbiAgICAgIFwic3VwZXJcIlxuICAgIF0sXG4gICAgJHBhdHRlcm46IElERU5USUZJRVJfUkUsXG4gICAga2V5d29yZDogS1dTLFxuICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgIGJ1aWx0X2luOiBCVUlMVF9JTlMsXG4gICAgdHlwZTogVFlQRVNcbiAgfTtcbiAgY29uc3QgQ0xBU1NfS0VZV09SRFMgPSB7XG4gICAgJHBhdHRlcm46IElERU5USUZJRVJfUkUsXG4gICAga2V5d29yZDogW1xuICAgICAgXCJAaW50ZXJmYWNlXCIsXG4gICAgICBcIkBjbGFzc1wiLFxuICAgICAgXCJAcHJvdG9jb2xcIixcbiAgICAgIFwiQGltcGxlbWVudGF0aW9uXCJcbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ09iamVjdGl2ZS1DJyxcbiAgICBhbGlhc2VzOiBbXG4gICAgICAnbW0nLFxuICAgICAgJ29iamMnLFxuICAgICAgJ29iai1jJyxcbiAgICAgICdvYmotYysrJyxcbiAgICAgICdvYmplY3RpdmUtYysrJ1xuICAgIF0sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEFQSV9DTEFTUyxcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ19CTE9DS19DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFLFxuICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAnQFwiJyxcbiAgICAgICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcbicsXG4gICAgICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvI1xccypbYS16XStcXGIvLFxuICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAga2V5d29yZHM6IHsga2V5d29yZDpcbiAgICAgICAgICAgICdpZiBlbHNlIGVsaWYgZW5kaWYgZGVmaW5lIHVuZGVmIHdhcm5pbmcgZXJyb3IgbGluZSAnXG4gICAgICAgICAgICArICdwcmFnbWEgaWZkZWYgaWZuZGVmIGluY2x1ZGUnIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXFxcXFxuLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHsgY2xhc3NOYW1lOiAnc3RyaW5nJyB9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgYmVnaW46IC88Lio/Pi8sXG4gICAgICAgICAgICBlbmQ6IC8kLyxcbiAgICAgICAgICAgIGlsbGVnYWw6ICdcXFxcbidcbiAgICAgICAgICB9LFxuICAgICAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2NsYXNzJyxcbiAgICAgICAgYmVnaW46ICcoJyArIENMQVNTX0tFWVdPUkRTLmtleXdvcmQuam9pbignfCcpICsgJylcXFxcYicsXG4gICAgICAgIGVuZDogLyhcXHt8JCkvLFxuICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogQ0xBU1NfS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBbIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAnXFxcXC4nICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IG9iamVjdGl2ZWMgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbIm9iamVjdGl2ZWMiLCJobGpzIiwiQVBJX0NMQVNTIiwiY2xhc3NOYW1lIiwiYmVnaW4iLCJJREVOVElGSUVSX1JFIiwiVFlQRVMiLCJLV1MiLCJMSVRFUkFMUyIsIkJVSUxUX0lOUyIsIktFWVdPUkRTIiwiJHBhdHRlcm4iLCJrZXl3b3JkIiwibGl0ZXJhbCIsImJ1aWx0X2luIiwidHlwZSIsIkNMQVNTX0tFWVdPUkRTIiwibmFtZSIsImFsaWFzZXMiLCJrZXl3b3JkcyIsImlsbGVnYWwiLCJjb250YWlucyIsIkNfTElORV9DT01NRU5UX01PREUiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkNfTlVNQkVSX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIkFQT1NfU1RSSU5HX01PREUiLCJ2YXJpYW50cyIsImVuZCIsIkJBQ0tTTEFTSF9FU0NBUEUiLCJyZWxldmFuY2UiLCJpbmhlcml0Iiwiam9pbiIsImV4Y2x1ZGVFbmQiLCJVTkRFUlNDT1JFX1RJVExFX01PREUiLCJVTkRFUlNDT1JFX0lERU5UX1JFIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/objectivec.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/perl.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/perl.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ perl)\n/* harmony export */ });\n/*\nLanguage: Perl\nAuthor: Peter Leonov <gojpeg@yandex.ru>\nWebsite: https://www.perl.org\nCategory: common\n*/ /** @type LanguageFn */ function perl(hljs) {\n const regex = hljs.regex;\n const KEYWORDS = [\n \"abs\",\n \"accept\",\n \"alarm\",\n \"and\",\n \"atan2\",\n \"bind\",\n \"binmode\",\n \"bless\",\n \"break\",\n \"caller\",\n \"chdir\",\n \"chmod\",\n \"chomp\",\n \"chop\",\n \"chown\",\n \"chr\",\n \"chroot\",\n \"close\",\n \"closedir\",\n \"connect\",\n \"continue\",\n \"cos\",\n \"crypt\",\n \"dbmclose\",\n \"dbmopen\",\n \"defined\",\n \"delete\",\n \"die\",\n \"do\",\n \"dump\",\n \"each\",\n \"else\",\n \"elsif\",\n \"endgrent\",\n \"endhostent\",\n \"endnetent\",\n \"endprotoent\",\n \"endpwent\",\n \"endservent\",\n \"eof\",\n \"eval\",\n \"exec\",\n \"exists\",\n \"exit\",\n \"exp\",\n \"fcntl\",\n \"fileno\",\n \"flock\",\n \"for\",\n \"foreach\",\n \"fork\",\n \"format\",\n \"formline\",\n \"getc\",\n \"getgrent\",\n \"getgrgid\",\n \"getgrnam\",\n \"gethostbyaddr\",\n \"gethostbyname\",\n \"gethostent\",\n \"getlogin\",\n \"getnetbyaddr\",\n \"getnetbyname\",\n \"getnetent\",\n \"getpeername\",\n \"getpgrp\",\n \"getpriority\",\n \"getprotobyname\",\n \"getprotobynumber\",\n \"getprotoent\",\n \"getpwent\",\n \"getpwnam\",\n \"getpwuid\",\n \"getservbyname\",\n \"getservbyport\",\n \"getservent\",\n \"getsockname\",\n \"getsockopt\",\n \"given\",\n \"glob\",\n \"gmtime\",\n \"goto\",\n \"grep\",\n \"gt\",\n \"hex\",\n \"if\",\n \"index\",\n \"int\",\n \"ioctl\",\n \"join\",\n \"keys\",\n \"kill\",\n \"last\",\n \"lc\",\n \"lcfirst\",\n \"length\",\n \"link\",\n \"listen\",\n \"local\",\n \"localtime\",\n \"log\",\n \"lstat\",\n \"lt\",\n \"ma\",\n \"map\",\n \"mkdir\",\n \"msgctl\",\n \"msgget\",\n \"msgrcv\",\n \"msgsnd\",\n \"my\",\n \"ne\",\n \"next\",\n \"no\",\n \"not\",\n \"oct\",\n \"open\",\n \"opendir\",\n \"or\",\n \"ord\",\n \"our\",\n \"pack\",\n \"package\",\n \"pipe\",\n \"pop\",\n \"pos\",\n \"print\",\n \"printf\",\n \"prototype\",\n \"push\",\n \"q|0\",\n \"qq\",\n \"quotemeta\",\n \"qw\",\n \"qx\",\n \"rand\",\n \"read\",\n \"readdir\",\n \"readline\",\n \"readlink\",\n \"readpipe\",\n \"recv\",\n \"redo\",\n \"ref\",\n \"rename\",\n \"require\",\n \"reset\",\n \"return\",\n \"reverse\",\n \"rewinddir\",\n \"rindex\",\n \"rmdir\",\n \"say\",\n \"scalar\",\n \"seek\",\n \"seekdir\",\n \"select\",\n \"semctl\",\n \"semget\",\n \"semop\",\n \"send\",\n \"setgrent\",\n \"sethostent\",\n \"setnetent\",\n \"setpgrp\",\n \"setpriority\",\n \"setprotoent\",\n \"setpwent\",\n \"setservent\",\n \"setsockopt\",\n \"shift\",\n \"shmctl\",\n \"shmget\",\n \"shmread\",\n \"shmwrite\",\n \"shutdown\",\n \"sin\",\n \"sleep\",\n \"socket\",\n \"socketpair\",\n \"sort\",\n \"splice\",\n \"split\",\n \"sprintf\",\n \"sqrt\",\n \"srand\",\n \"stat\",\n \"state\",\n \"study\",\n \"sub\",\n \"substr\",\n \"symlink\",\n \"syscall\",\n \"sysopen\",\n \"sysread\",\n \"sysseek\",\n \"system\",\n \"syswrite\",\n \"tell\",\n \"telldir\",\n \"tie\",\n \"tied\",\n \"time\",\n \"times\",\n \"tr\",\n \"truncate\",\n \"uc\",\n \"ucfirst\",\n \"umask\",\n \"undef\",\n \"unless\",\n \"unlink\",\n \"unpack\",\n \"unshift\",\n \"untie\",\n \"until\",\n \"use\",\n \"utime\",\n \"values\",\n \"vec\",\n \"wait\",\n \"waitpid\",\n \"wantarray\",\n \"warn\",\n \"when\",\n \"while\",\n \"write\",\n \"x|0\",\n \"xor\",\n \"y|0\"\n ];\n // https://perldoc.perl.org/perlre#Modifiers\n const REGEX_MODIFIERS = /[dualxmsipngr]{0,12}/; // aa and xx are valid, making max length 12\n const PERL_KEYWORDS = {\n $pattern: /[\\w.]+/,\n keyword: KEYWORDS.join(\" \")\n };\n const SUBST = {\n className: \"subst\",\n begin: \"[$@]\\\\{\",\n end: \"\\\\}\",\n keywords: PERL_KEYWORDS\n };\n const METHOD = {\n begin: /->\\{/,\n end: /\\}/\n };\n const VAR = {\n variants: [\n {\n begin: /\\$\\d/\n },\n {\n begin: regex.concat(/[$%@](\\^\\w\\b|#\\w+(::\\w+)*|\\{\\w+\\}|\\w+(::\\w*)*)/, // negative look-ahead tries to avoid matching patterns that are not\n // Perl at all like $ident$, @ident@, etc.\n `(?![A-Za-z])(?![@$%])`)\n },\n {\n begin: /[$%@][^\\s\\w{]/,\n relevance: 0\n }\n ]\n };\n const STRING_CONTAINS = [\n hljs.BACKSLASH_ESCAPE,\n SUBST,\n VAR\n ];\n const REGEX_DELIMS = [\n /!/,\n /\\//,\n /\\|/,\n /\\?/,\n /'/,\n /\"/,\n /#/ // valid but infrequent and weird\n ];\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */ const PAIRED_DOUBLE_RE = (prefix, open, close = \"\\\\1\")=>{\n const middle = close === \"\\\\1\" ? close : regex.concat(close, open);\n return regex.concat(regex.concat(\"(?:\", prefix, \")\"), open, /(?:\\\\.|[^\\\\\\/])*?/, middle, /(?:\\\\.|[^\\\\\\/])*?/, close, REGEX_MODIFIERS);\n };\n /**\n * @param {string|RegExp} prefix\n * @param {string|RegExp} open\n * @param {string|RegExp} close\n */ const PAIRED_RE = (prefix, open, close)=>{\n return regex.concat(regex.concat(\"(?:\", prefix, \")\"), open, /(?:\\\\.|[^\\\\\\/])*?/, close, REGEX_MODIFIERS);\n };\n const PERL_DEFAULT_CONTAINS = [\n VAR,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(/^=\\w/, /=cut/, {\n endsWithParent: true\n }),\n METHOD,\n {\n className: \"string\",\n contains: STRING_CONTAINS,\n variants: [\n {\n begin: \"q[qwxr]?\\\\s*\\\\(\",\n end: \"\\\\)\",\n relevance: 5\n },\n {\n begin: \"q[qwxr]?\\\\s*\\\\[\",\n end: \"\\\\]\",\n relevance: 5\n },\n {\n begin: \"q[qwxr]?\\\\s*\\\\{\",\n end: \"\\\\}\",\n relevance: 5\n },\n {\n begin: \"q[qwxr]?\\\\s*\\\\|\",\n end: \"\\\\|\",\n relevance: 5\n },\n {\n begin: \"q[qwxr]?\\\\s*<\",\n end: \">\",\n relevance: 5\n },\n {\n begin: \"qw\\\\s+q\",\n end: \"q\",\n relevance: 5\n },\n {\n begin: \"'\",\n end: \"'\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n {\n begin: '\"',\n end: '\"'\n },\n {\n begin: \"`\",\n end: \"`\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n {\n begin: /\\{\\w+\\}/,\n relevance: 0\n },\n {\n begin: \"-?\\\\w+\\\\s*=>\",\n relevance: 0\n }\n ]\n },\n {\n className: \"number\",\n begin: \"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",\n relevance: 0\n },\n {\n begin: \"(\\\\/\\\\/|\" + hljs.RE_STARTERS_RE + \"|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*\",\n keywords: \"split return print reverse grep\",\n relevance: 0,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: \"regexp\",\n variants: [\n // allow matching common delimiters\n {\n begin: PAIRED_DOUBLE_RE(\"s|tr|y\", regex.either(...REGEX_DELIMS, {\n capture: true\n }))\n },\n // and then paired delmis\n {\n begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\(\", \"\\\\)\")\n },\n {\n begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\[\", \"\\\\]\")\n },\n {\n begin: PAIRED_DOUBLE_RE(\"s|tr|y\", \"\\\\{\", \"\\\\}\")\n }\n ],\n relevance: 2\n },\n {\n className: \"regexp\",\n variants: [\n {\n // could be a comment in many languages so do not count\n // as relevant\n begin: /(m|qr)\\/\\//,\n relevance: 0\n },\n // prefix is optional with /regex/\n {\n begin: PAIRED_RE(\"(?:m|qr)?\", /\\//, /\\//)\n },\n // allow matching common delimiters\n {\n begin: PAIRED_RE(\"m|qr\", regex.either(...REGEX_DELIMS, {\n capture: true\n }), /\\1/)\n },\n // allow common paired delmins\n {\n begin: PAIRED_RE(\"m|qr\", /\\(/, /\\)/)\n },\n {\n begin: PAIRED_RE(\"m|qr\", /\\[/, /\\]/)\n },\n {\n begin: PAIRED_RE(\"m|qr\", /\\{/, /\\}/)\n }\n ]\n }\n ]\n },\n {\n className: \"function\",\n beginKeywords: \"sub\",\n end: \"(\\\\s*\\\\(.*?\\\\))?[;{]\",\n excludeEnd: true,\n relevance: 5,\n contains: [\n hljs.TITLE_MODE\n ]\n },\n {\n begin: \"-\\\\w\\\\b\",\n relevance: 0\n },\n {\n begin: \"^__DATA__$\",\n end: \"^__END__$\",\n subLanguage: \"mojolicious\",\n contains: [\n {\n begin: \"^@@.*\",\n end: \"$\",\n className: \"comment\"\n }\n ]\n }\n ];\n SUBST.contains = PERL_DEFAULT_CONTAINS;\n METHOD.contains = PERL_DEFAULT_CONTAINS;\n return {\n name: \"Perl\",\n aliases: [\n \"pl\",\n \"pm\"\n ],\n keywords: PERL_KEYWORDS,\n contains: PERL_DEFAULT_CONTAINS\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9wZXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7QUFLQSxHQUVBLHFCQUFxQixHQUNyQixTQUFTQSxLQUFLQyxJQUFJO0lBQ2hCLE1BQU1DLFFBQVFELEtBQUtDLEtBQUs7SUFDeEIsTUFBTUMsV0FBVztRQUNmO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FB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U0FBUzs0QkFBSyxJQUFJO3dCQUFNO3dCQUNuRiw4QkFBOEI7d0JBQzlCOzRCQUFFeEIsT0FBT2dCLFVBQVUsUUFBUSxNQUFNO3dCQUFNO3dCQUN2Qzs0QkFBRWhCLE9BQU9nQixVQUFVLFFBQVEsTUFBTTt3QkFBTTt3QkFDdkM7NEJBQUVoQixPQUFPZ0IsVUFBVSxRQUFRLE1BQU07d0JBQU07cUJBQ3hDO2dCQUNIO2FBQ0Q7UUFDSDtRQUNBO1lBQ0VqQixXQUFXO1lBQ1gwQixlQUFlO1lBQ2Z4QixLQUFLO1lBQ0x5QixZQUFZO1lBQ1puQixXQUFXO1lBQ1hjLFVBQVU7Z0JBQUUvQixLQUFLcUMsVUFBVTthQUFFO1FBQy9CO1FBQ0E7WUFDRTNCLE9BQU87WUFDUE8sV0FBVztRQUNiO1FBQ0E7WUFDRVAsT0FBTztZQUNQQyxLQUFLO1lBQ0wyQixhQUFhO1lBQ2JQLFVBQVU7Z0JBQ1I7b0JBQ0VyQixPQUFPO29CQUNQQyxLQUFLO29CQUNMRixXQUFXO2dCQUNiO2FBQ0Q7UUFDSDtLQUNEO0lBQ0RELE1BQU11QixRQUFRLEdBQUdKO0lBQ2pCZCxPQUFPa0IsUUFBUSxHQUFHSjtJQUVsQixPQUFPO1FBQ0xZLE1BQU07UUFDTkMsU0FBUztZQUNQO1lBQ0E7U0FDRDtRQUNENUIsVUFBVVI7UUFDVjJCLFVBQVVKO0lBQ1o7QUFDRjtBQUUyQiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvcGVybC5qcz8wMmRkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogUGVybFxuQXV0aG9yOiBQZXRlciBMZW9ub3YgPGdvanBlZ0B5YW5kZXgucnU+XG5XZWJzaXRlOiBodHRwczovL3d3dy5wZXJsLm9yZ1xuQ2F0ZWdvcnk6IGNvbW1vblxuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIHBlcmwoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IEtFWVdPUkRTID0gW1xuICAgICdhYnMnLFxuICAgICdhY2NlcHQnLFxuICAgICdhbGFybScsXG4gICAgJ2FuZCcsXG4gICAgJ2F0YW4yJyxcbiAgICAnYmluZCcsXG4gICAgJ2Jpbm1vZGUnLFxuICAgICdibGVzcycsXG4gICAgJ2JyZWFrJyxcbiAgICAnY2FsbGVyJyxcbiAgICAnY2hkaXInLFxuICAgICdjaG1vZCcsXG4gICAgJ2Nob21wJyxcbiAgICAnY2hvcCcsXG4gICAgJ2Nob3duJyxcbiAgICAnY2hyJyxcbiAgICAnY2hyb290JyxcbiAgICAnY2xvc2UnLFxuICAgICdjbG9zZWRpcicsXG4gICAgJ2Nvbm5lY3QnLFxuICAgICdjb250aW51ZScsXG4gICAgJ2NvcycsXG4gICAgJ2NyeXB0JyxcbiAgICAnZGJtY2xvc2UnLFxuICAgICdkYm1vcGVuJyxcbiAgICAnZGVmaW5lZCcsXG4gICAgJ2RlbGV0ZScsXG4gICAgJ2RpZScsXG4gICAgJ2RvJyxcbiAgICAnZHVtcCcsXG4gICAgJ2VhY2gnLFxuICAgICdlbHNlJyxcbiAgICAnZWxzaWYnLFxuICAgICdlbmRncmVudCcsXG4gICAgJ2VuZGhvc3RlbnQnLFxuICAgICdlbmRuZXRlbnQnLFxuICAgICdlbmRwcm90b2VudCcsXG4gICAgJ2VuZHB3ZW50JyxcbiAgICAnZW5kc2VydmVudCcsXG4gICAgJ2VvZicsXG4gICAgJ2V2YWwnLFxuICAgICdleGVjJyxcbiAgICAnZXhpc3RzJyxcbiAgICAnZXhpdCcsXG4gICAgJ2V4cCcsXG4gICAgJ2ZjbnRsJyxcbiAgICAnZmlsZW5vJyxcbiAgICAnZmxvY2snLFxuICAgICdmb3InLFxuICAgICdmb3JlYWNoJyxcbiAgICAnZm9yaycsXG4gICAgJ2Zvcm1hdCcsXG4gICAgJ2Zvcm1saW5lJyxcbiAgICAnZ2V0YycsXG4gICAgJ2dldGdyZW50JyxcbiAgICAnZ2V0Z3JnaWQnLFxuICAgICdnZXRncm5hbScsXG4gICAgJ2dldGhvc3RieWFkZHInLFxuICAgICdnZXRob3N0YnluYW1lJyxcbiAgICAnZ2V0aG9zdGVudCcsXG4gICAgJ2dldGxvZ2luJyxcbiAgICAnZ2V0bmV0YnlhZGRyJyxcbiAgICAnZ2V0bmV0YnluYW1lJyxcbiAgICAnZ2V0bmV0ZW50JyxcbiAgICAnZ2V0cGVlcm5hbWUnLFxuICAgICdnZXRwZ3JwJyxcbiAgICAnZ2V0cHJpb3JpdHknLFxuICAgICdnZXRwcm90b2J5bmFtZScsXG4gICAgJ2dldHByb3RvYnludW1iZXInLFxuICAgICdnZXRwcm90b2VudCcsXG4gICAgJ2dldHB3ZW50JyxcbiAgICAnZ2V0cHduYW0nLFxuICAgICdnZXRwd3VpZCcsXG4gICAgJ2dldHNlcnZieW5hbWUnLFxuICAgICdnZXRzZXJ2Ynlwb3J0JyxcbiAgICAnZ2V0c2VydmVudCcsXG4gICAgJ2dldHNvY2tuYW1lJyxcbiAgICAnZ2V0c29ja29wdCcsXG4gICAgJ2dpdmVuJyxcbiAgICAnZ2xvYicsXG4gICAgJ2dtdGltZScsXG4gICAgJ2dvdG8nLFxuICAgICdncmVwJyxcbiAgICAnZ3QnLFxuICAgICdoZXgnLFxuICAgICdpZicsXG4gICAgJ2luZGV4JyxcbiAgICAnaW50JyxcbiAgICAnaW9jdGwnLFxuICAgICdqb2luJyxcbiAgICAna2V5cycsXG4gICAgJ2tpbGwnLFxuICAgICdsYXN0JyxcbiAgICAnbGMnLFxuICAgICdsY2ZpcnN0JyxcbiAgICAnbGVuZ3RoJyxcbiAgICAnbGluaycsXG4gICAgJ2xpc3RlbicsXG4gICAgJ2xvY2FsJyxcbiAgICAnbG9jYWx0aW1lJyxcbiAgICAnbG9nJyxcbiAgICAnbHN0YXQnLFxuICAgICdsdCcsXG4gICAgJ21hJyxcbiAgICAnbWFwJyxcbiAgICAnbWtkaXInLFxuICAgICdtc2djdGwnLFxuICAgICdtc2dnZXQnLFxuICAgICdtc2dyY3YnLFxuICAgICdtc2dzbmQnLFxuICAgICdteScsXG4gICAgJ25lJyxcbiAgICAnbmV4dCcsXG4gICAgJ25vJyxcbiAgICAnbm90JyxcbiAgICAnb2N0JyxcbiAgICAnb3BlbicsXG4gICAgJ29wZW5kaXInLFxuICAgICdvcicsXG4gICAgJ29yZCcsXG4gICAgJ291cicsXG4gICAgJ3BhY2snLFxuICAgICdwYWNrYWdlJyxcbiAgICAncGlwZScsXG4gICAgJ3BvcCcsXG4gICAgJ3BvcycsXG4gICAgJ3ByaW50JyxcbiAgICAncHJpbnRmJyxcbiAgICAncHJvdG90eXBlJyxcbiAgICAncHVzaCcsXG4gICAgJ3F8MCcsXG4gICAgJ3FxJyxcbiAgICAncXVvdGVtZXRhJyxcbiAgICAncXcnLFxuICAgICdxeCcsXG4gICAgJ3JhbmQnLFxuICAgICdyZWFkJyxcbiAgICAncmVhZGRpcicsXG4gICAgJ3JlYWRsaW5lJyxcbiAgICAncmVhZGxpbmsnLFxuICAgICdyZWFkcGlwZScsXG4gICAgJ3JlY3YnLFxuICAgICdyZWRvJyxcbiAgICAncmVmJyxcbiAgICAncmVuYW1lJyxcbiAgICAncmVxdWlyZScsXG4gICAgJ3Jlc2V0JyxcbiAgICAncmV0dXJuJyxcbiAgICAncmV2ZXJzZScsXG4gICAgJ3Jld2luZGRpcicsXG4gICAgJ3JpbmRleCcsXG4gICAgJ3JtZGlyJyxcbiAgICAnc2F5JyxcbiAgICAnc2NhbGFyJyxcbiAgICAnc2VlaycsXG4gICAgJ3NlZWtkaXInLFxuICAgICdzZWxlY3QnLFxuICAgICdzZW1jdGwnLFxuICAgICdzZW1nZXQnLFxuICAgICdzZW1vcCcsXG4gICAgJ3NlbmQnLFxuICAgICdzZXRncmVudCcsXG4gICAgJ3NldGhvc3RlbnQnLFxuICAgICdzZXRuZXRlbnQnLFxuICAgICdzZXRwZ3JwJyxcbiAgICAnc2V0cHJpb3JpdHknLFxuICAgICdzZXRwcm90b2VudCcsXG4gICAgJ3NldHB3ZW50JyxcbiAgICAnc2V0c2VydmVudCcsXG4gICAgJ3NldHNvY2tvcHQnLFxuICAgICdzaGlmdCcsXG4gICAgJ3NobWN0bCcsXG4gICAgJ3NobWdldCcsXG4gICAgJ3NobXJlYWQnLFxuICAgICdzaG13cml0ZScsXG4gICAgJ3NodXRkb3duJyxcbiAgICAnc2luJyxcbiAgICAnc2xlZXAnLFxuICAgICdzb2NrZXQnLFxuICAgICdzb2NrZXRwYWlyJyxcbiAgICAnc29ydCcsXG4gICAgJ3NwbGljZScsXG4gICAgJ3NwbGl0JyxcbiAgICAnc3ByaW50ZicsXG4gICAgJ3NxcnQnLFxuICAgICdzcmFuZCcsXG4gICAgJ3N0YXQnLFxuICAgICdzdGF0ZScsXG4gICAgJ3N0dWR5JyxcbiAgICAnc3ViJyxcbiAgICAnc3Vic3RyJyxcbiAgICAnc3ltbGluaycsXG4gICAgJ3N5c2NhbGwnLFxuICAgICdzeXNvcGVuJyxcbiAgICAnc3lzcmVhZCcsXG4gICAgJ3N5c3NlZWsnLFxuICAgICdzeXN0ZW0nLFxuICAgICdzeXN3cml0ZScsXG4gICAgJ3RlbGwnLFxuICAgICd0ZWxsZGlyJyxcbiAgICAndGllJyxcbiAgICAndGllZCcsXG4gICAgJ3RpbWUnLFxuICAgICd0aW1lcycsXG4gICAgJ3RyJyxcbiAgICAndHJ1bmNhdGUnLFxuICAgICd1YycsXG4gICAgJ3VjZmlyc3QnLFxuICAgICd1bWFzaycsXG4gICAgJ3VuZGVmJyxcbiAgICAndW5sZXNzJyxcbiAgICAndW5saW5rJyxcbiAgICAndW5wYWNrJyxcbiAgICAndW5zaGlmdCcsXG4gICAgJ3VudGllJyxcbiAgICAndW50aWwnLFxuICAgICd1c2UnLFxuICAgICd1dGltZScsXG4gICAgJ3ZhbHVlcycsXG4gICAgJ3ZlYycsXG4gICAgJ3dhaXQnLFxuICAgICd3YWl0cGlkJyxcbiAgICAnd2FudGFycmF5JyxcbiAgICAnd2FybicsXG4gICAgJ3doZW4nLFxuICAgICd3aGlsZScsXG4gICAgJ3dyaXRlJyxcbiAgICAneHwwJyxcbiAgICAneG9yJyxcbiAgICAneXwwJ1xuICBdO1xuXG4gIC8vIGh0dHBzOi8vcGVybGRvYy5wZXJsLm9yZy9wZXJscmUjTW9kaWZpZXJzXG4gIGNvbnN0IFJFR0VYX01PRElGSUVSUyA9IC9bZHVhbHhtc2lwbmdyXXswLDEyfS87IC8vIGFhIGFuZCB4eCBhcmUgdmFsaWQsIG1ha2luZyBtYXggbGVuZ3RoIDEyXG4gIGNvbnN0IFBFUkxfS0VZV09SRFMgPSB7XG4gICAgJHBhdHRlcm46IC9bXFx3Ll0rLyxcbiAgICBrZXl3b3JkOiBLRVlXT1JEUy5qb2luKFwiIFwiKVxuICB9O1xuICBjb25zdCBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdbJEBdXFxcXHsnLFxuICAgIGVuZDogJ1xcXFx9JyxcbiAgICBrZXl3b3JkczogUEVSTF9LRVlXT1JEU1xuICB9O1xuICBjb25zdCBNRVRIT0QgPSB7XG4gICAgYmVnaW46IC8tPlxcey8sXG4gICAgZW5kOiAvXFx9L1xuICAgIC8vIGNvbnRhaW5zIGRlZmluZWQgbGF0ZXJcbiAgfTtcbiAgY29uc3QgVkFSID0geyB2YXJpYW50czogW1xuICAgIHsgYmVnaW46IC9cXCRcXGQvIH0sXG4gICAgeyBiZWdpbjogcmVnZXguY29uY2F0KFxuICAgICAgL1skJUBdKFxcXlxcd1xcYnwjXFx3Kyg6OlxcdyspKnxcXHtcXHcrXFx9fFxcdysoOjpcXHcqKSopLyxcbiAgICAgIC8vIG5lZ2F0aXZlIGxvb2stYWhlYWQgdHJpZXMgdG8gYXZvaWQgbWF0Y2hpbmcgcGF0dGVybnMgdGhhdCBhcmUgbm90XG4gICAgICAvLyBQZXJsIGF0IGFsbCBsaWtlICRpZGVudCQsIEBpZGVudEAsIGV0Yy5cbiAgICAgIGAoPyFbQS1aYS16XSkoPyFbQCQlXSlgXG4gICAgKSB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiAvWyQlQF1bXlxcc1xcd3tdLyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH1cbiAgXSB9O1xuICBjb25zdCBTVFJJTkdfQ09OVEFJTlMgPSBbXG4gICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgIFNVQlNULFxuICAgIFZBUlxuICBdO1xuICBjb25zdCBSRUdFWF9ERUxJTVMgPSBbXG4gICAgLyEvLFxuICAgIC9cXC8vLFxuICAgIC9cXHwvLFxuICAgIC9cXD8vLFxuICAgIC8nLyxcbiAgICAvXCIvLCAvLyB2YWxpZCBidXQgaW5mcmVxdWVudCBhbmQgd2VpcmRcbiAgICAvIy8gLy8gdmFsaWQgYnV0IGluZnJlcXVlbnQgYW5kIHdlaXJkXG4gIF07XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IHByZWZpeFxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IG9wZW5cbiAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBjbG9zZVxuICAgKi9cbiAgY29uc3QgUEFJUkVEX0RPVUJMRV9SRSA9IChwcmVmaXgsIG9wZW4sIGNsb3NlID0gJ1xcXFwxJykgPT4ge1xuICAgIGNvbnN0IG1pZGRsZSA9IChjbG9zZSA9PT0gJ1xcXFwxJylcbiAgICAgID8gY2xvc2VcbiAgICAgIDogcmVnZXguY29uY2F0KGNsb3NlLCBvcGVuKTtcbiAgICByZXR1cm4gcmVnZXguY29uY2F0KFxuICAgICAgcmVnZXguY29uY2F0KFwiKD86XCIsIHByZWZpeCwgXCIpXCIpLFxuICAgICAgb3BlbixcbiAgICAgIC8oPzpcXFxcLnxbXlxcXFxcXC9dKSo/LyxcbiAgICAgIG1pZGRsZSxcbiAgICAgIC8oPzpcXFxcLnxbXlxcXFxcXC9dKSo/LyxcbiAgICAgIGNsb3NlLFxuICAgICAgUkVHRVhfTU9ESUZJRVJTXG4gICAgKTtcbiAgfTtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gcHJlZml4XG4gICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gb3BlblxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IGNsb3NlXG4gICAqL1xuICBjb25zdCBQQUlSRURfUkUgPSAocHJlZml4LCBvcGVuLCBjbG9zZSkgPT4ge1xuICAgIHJldHVybiByZWdleC5jb25jYXQoXG4gICAgICByZWdleC5jb25jYXQoXCIoPzpcIiwgcHJlZml4LCBcIilcIiksXG4gICAgICBvcGVuLFxuICAgICAgLyg/OlxcXFwufFteXFxcXFxcL10pKj8vLFxuICAgICAgY2xvc2UsXG4gICAgICBSRUdFWF9NT0RJRklFUlNcbiAgICApO1xuICB9O1xuICBjb25zdCBQRVJMX0RFRkFVTFRfQ09OVEFJTlMgPSBbXG4gICAgVkFSLFxuICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgL149XFx3LyxcbiAgICAgIC89Y3V0LyxcbiAgICAgIHsgZW5kc1dpdGhQYXJlbnQ6IHRydWUgfVxuICAgICksXG4gICAgTUVUSE9ELFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICBjb250YWluczogU1RSSU5HX0NPTlRBSU5TLFxuICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncVtxd3hyXT9cXFxccypcXFxcKCcsXG4gICAgICAgICAgZW5kOiAnXFxcXCknLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKlxcXFxbJyxcbiAgICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgICAgcmVsZXZhbmNlOiA1XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBiZWdpbjogJ3FbcXd4cl0/XFxcXHMqXFxcXHsnLFxuICAgICAgICAgIGVuZDogJ1xcXFx9JyxcbiAgICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAncVtxd3hyXT9cXFxccypcXFxcfCcsXG4gICAgICAgICAgZW5kOiAnXFxcXHwnLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxW3F3eHJdP1xcXFxzKjwnLFxuICAgICAgICAgIGVuZDogJz4nLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdxd1xcXFxzK3EnLFxuICAgICAgICAgIGVuZDogJ3EnLFxuICAgICAgICAgIHJlbGV2YW5jZTogNVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdcXCcnLFxuICAgICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnXCInLFxuICAgICAgICAgIGVuZDogJ1wiJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICdgJyxcbiAgICAgICAgICBlbmQ6ICdgJyxcbiAgICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46IC9cXHtcXHcrXFx9LyxcbiAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiAnLT9cXFxcdytcXFxccyo9PicsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgICBiZWdpbjogJyhcXFxcYjBbMC03X10rKXwoXFxcXGIweFswLTlhLWZBLUZfXSspfChcXFxcYlsxLTldWzAtOV9dKihcXFxcLlswLTlfXSspPyl8WzBfXVxcXFxiJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAgeyAvLyByZWdleHAgY29udGFpbmVyXG4gICAgICBiZWdpbjogJyhcXFxcL1xcXFwvfCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3xcXFxcYihzcGxpdHxyZXR1cm58cHJpbnR8cmV2ZXJzZXxncmVwKVxcXFxiKVxcXFxzKicsXG4gICAgICBrZXl3b3JkczogJ3NwbGl0IHJldHVybiBwcmludCByZXZlcnNlIGdyZXAnLFxuICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ3JlZ2V4cCcsXG4gICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIC8vIGFsbG93IG1hdGNoaW5nIGNvbW1vbiBkZWxpbWl0ZXJzXG4gICAgICAgICAgICB7IGJlZ2luOiBQQUlSRURfRE9VQkxFX1JFKFwic3x0cnx5XCIsIHJlZ2V4LmVpdGhlciguLi5SRUdFWF9ERUxJTVMsIHsgY2FwdHVyZTogdHJ1ZSB9KSkgfSxcbiAgICAgICAgICAgIC8vIGFuZCB0aGVuIHBhaXJlZCBkZWxtaXNcbiAgICAgICAgICAgIHsgYmVnaW46IFBBSVJFRF9ET1VCTEVfUkUoXCJzfHRyfHlcIiwgXCJcXFxcKFwiLCBcIlxcXFwpXCIpIH0sXG4gICAgICAgICAgICB7IGJlZ2luOiBQQUlSRURfRE9VQkxFX1JFKFwic3x0cnx5XCIsIFwiXFxcXFtcIiwgXCJcXFxcXVwiKSB9LFxuICAgICAgICAgICAgeyBiZWdpbjogUEFJUkVEX0RPVUJMRV9SRShcInN8dHJ8eVwiLCBcIlxcXFx7XCIsIFwiXFxcXH1cIikgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVsZXZhbmNlOiAyXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC8vIGNvdWxkIGJlIGEgY29tbWVudCBpbiBtYW55IGxhbmd1YWdlcyBzbyBkbyBub3QgY291bnRcbiAgICAgICAgICAgICAgLy8gYXMgcmVsZXZhbnRcbiAgICAgICAgICAgICAgYmVnaW46IC8obXxxcilcXC9cXC8vLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBwcmVmaXggaXMgb3B0aW9uYWwgd2l0aCAvcmVnZXgvXG4gICAgICAgICAgICB7IGJlZ2luOiBQQUlSRURfUkUoXCIoPzptfHFyKT9cIiwgL1xcLy8sIC9cXC8vKSB9LFxuICAgICAgICAgICAgLy8gYWxsb3cgbWF0Y2hpbmcgY29tbW9uIGRlbGltaXRlcnNcbiAgICAgICAgICAgIHsgYmVnaW46IFBBSVJFRF9SRShcIm18cXJcIiwgcmVnZXguZWl0aGVyKC4uLlJFR0VYX0RFTElNUywgeyBjYXB0dXJlOiB0cnVlIH0pLCAvXFwxLykgfSxcbiAgICAgICAgICAgIC8vIGFsbG93IGNvbW1vbiBwYWlyZWQgZGVsbWluc1xuICAgICAgICAgICAgeyBiZWdpbjogUEFJUkVEX1JFKFwibXxxclwiLCAvXFwoLywgL1xcKS8pIH0sXG4gICAgICAgICAgICB7IGJlZ2luOiBQQUlSRURfUkUoXCJtfHFyXCIsIC9cXFsvLCAvXFxdLykgfSxcbiAgICAgICAgICAgIHsgYmVnaW46IFBBSVJFRF9SRShcIm18cXJcIiwgL1xcey8sIC9cXH0vKSB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICBiZWdpbktleXdvcmRzOiAnc3ViJyxcbiAgICAgIGVuZDogJyhcXFxccypcXFxcKC4qP1xcXFwpKT9bO3tdJyxcbiAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICByZWxldmFuY2U6IDUsXG4gICAgICBjb250YWluczogWyBobGpzLlRJVExFX01PREUgXVxuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46ICctXFxcXHdcXFxcYicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGJlZ2luOiBcIl5fX0RBVEFfXyRcIixcbiAgICAgIGVuZDogXCJeX19FTkRfXyRcIixcbiAgICAgIHN1Ykxhbmd1YWdlOiAnbW9qb2xpY2lvdXMnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGJlZ2luOiBcIl5AQC4qXCIsXG4gICAgICAgICAgZW5kOiBcIiRcIixcbiAgICAgICAgICBjbGFzc05hbWU6IFwiY29tbWVudFwiXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9XG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gUEVSTF9ERUZBVUxUX0NPTlRBSU5TO1xuICBNRVRIT0QuY29udGFpbnMgPSBQRVJMX0RFRkFVTFRfQ09OVEFJTlM7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnUGVybCcsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ3BsJyxcbiAgICAgICdwbSdcbiAgICBdLFxuICAgIGtleXdvcmRzOiBQRVJMX0tFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBQRVJMX0RFRkFVTFRfQ09OVEFJTlNcbiAgfTtcbn1cblxuZXhwb3J0IHsgcGVybCBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsicGVybCIsImhsanMiLCJyZWdleCIsIktFWVdPUkRTIiwiUkVHRVhfTU9ESUZJRVJTIiwiUEVSTF9LRVlXT1JEUyIsIiRwYXR0ZXJuIiwia2V5d29yZCIsImpvaW4iLCJTVUJTVCIsImNsYXNzTmFtZSIsImJlZ2luIiwiZW5kIiwia2V5d29yZHMiLCJNRVRIT0QiLCJWQVIiLCJ2YXJpYW50cyIsImNvbmNhdCIsInJlbGV2YW5jZSIsIlNUUklOR19DT05UQUlOUyIsIkJBQ0tTTEFTSF9FU0NBUEUiLCJSRUdFWF9ERUxJTVMiLCJQQUlSRURfRE9VQkxFX1JFIiwicHJlZml4Iiwib3BlbiIsImNsb3NlIiwibWlkZGxlIiwiUEFJUkVEX1JFIiwiUEVSTF9ERUZBVUxUX0NPTlRBSU5TIiwiSEFTSF9DT01NRU5UX01PREUiLCJDT01NRU5UIiwiZW5kc1dpdGhQYXJlbnQiLCJjb250YWlucyIsIlJFX1NUQVJURVJTX1JFIiwiZWl0aGVyIiwiY2FwdHVyZSIsImJlZ2luS2V5d29yZHMiLCJleGNsdWRlRW5kIiwiVElUTEVfTU9ERSIsInN1Ykxhbmd1YWdlIiwibmFtZSIsImFsaWFzZXMiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/perl.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/php-template.js":
/*!****************************************************************!*\
!*** ./node_modules/highlight.js/es/languages/php-template.js ***!
\****************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ phpTemplate)\n/* harmony export */ });\n/*\nLanguage: PHP Template\nRequires: xml.js, php.js\nAuthor: Josh Goebel <hello@joshgoebel.com>\nWebsite: https://www.php.net\nCategory: common\n*/ function phpTemplate(hljs) {\n return {\n name: \"PHP template\",\n subLanguage: \"xml\",\n contains: [\n {\n begin: /<\\?(php|=)?/,\n end: /\\?>/,\n subLanguage: \"php\",\n contains: [\n // We don't want the php closing tag ?> to close the PHP block when\n // inside any of the following blocks:\n {\n begin: \"/\\\\*\",\n end: \"\\\\*/\",\n skip: true\n },\n {\n begin: 'b\"',\n end: '\"',\n skip: true\n },\n {\n begin: \"b'\",\n end: \"'\",\n skip: true\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n illegal: null,\n className: null,\n contains: null,\n skip: true\n })\n ]\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9waHAtdGVtcGxhdGUuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7QUFNQSxHQUVBLFNBQVNBLFlBQVlDLElBQUk7SUFDdkIsT0FBTztRQUNMQyxNQUFNO1FBQ05DLGFBQWE7UUFDYkMsVUFBVTtZQUNSO2dCQUNFQyxPQUFPO2dCQUNQQyxLQUFLO2dCQUNMSCxhQUFhO2dCQUNiQyxVQUFVO29CQUNSLG1FQUFtRTtvQkFDbkUsc0NBQXNDO29CQUN0Qzt3QkFDRUMsT0FBTzt3QkFDUEMsS0FBSzt3QkFDTEMsTUFBTTtvQkFDUjtvQkFDQTt3QkFDRUYsT0FBTzt3QkFDUEMsS0FBSzt3QkFDTEMsTUFBTTtvQkFDUjtvQkFDQTt3QkFDRUYsT0FBTzt3QkFDUEMsS0FBSzt3QkFDTEMsTUFBTTtvQkFDUjtvQkFDQU4sS0FBS08sT0FBTyxDQUFDUCxLQUFLUSxnQkFBZ0IsRUFBRTt3QkFDbENDLFNBQVM7d0JBQ1RDLFdBQVc7d0JBQ1hQLFVBQVU7d0JBQ1ZHLE1BQU07b0JBQ1I7b0JBQ0FOLEtBQUtPLE9BQU8sQ0FBQ1AsS0FBS1csaUJBQWlCLEVBQUU7d0JBQ25DRixTQUFTO3dCQUNUQyxXQUFXO3dCQUNYUCxVQUFVO3dCQUNWRyxNQUFNO29CQUNSO2lCQUNEO1lBQ0g7U0FDRDtJQUNIO0FBQ0Y7QUFFa0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL3BocC10ZW1wbGF0ZS5qcz8wMmE0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogUEhQIFRlbXBsYXRlXG5SZXF1aXJlczogeG1sLmpzLCBwaHAuanNcbkF1dGhvcjogSm9zaCBHb2ViZWwgPGhlbGxvQGpvc2hnb2ViZWwuY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly93d3cucGhwLm5ldFxuQ2F0ZWdvcnk6IGNvbW1vblxuKi9cblxuZnVuY3Rpb24gcGhwVGVtcGxhdGUoaGxqcykge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IFwiUEhQIHRlbXBsYXRlXCIsXG4gICAgc3ViTGFuZ3VhZ2U6ICd4bWwnLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvPFxcPyhwaHB8PSk/LyxcbiAgICAgICAgZW5kOiAvXFw/Pi8sXG4gICAgICAgIHN1Ykxhbmd1YWdlOiAncGhwJyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBwaHAgY2xvc2luZyB0YWcgPz4gdG8gY2xvc2UgdGhlIFBIUCBibG9jayB3aGVuXG4gICAgICAgICAgLy8gaW5zaWRlIGFueSBvZiB0aGUgZm9sbG93aW5nIGJsb2NrczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJy9cXFxcKicsXG4gICAgICAgICAgICBlbmQ6ICdcXFxcKi8nLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdiXCInLFxuICAgICAgICAgICAgZW5kOiAnXCInLFxuICAgICAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICdiXFwnJyxcbiAgICAgICAgICAgIGVuZDogJ1xcJycsXG4gICAgICAgICAgICBza2lwOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5BUE9TX1NUUklOR19NT0RFLCB7XG4gICAgICAgICAgICBpbGxlZ2FsOiBudWxsLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBudWxsLFxuICAgICAgICAgICAgY29udGFpbnM6IG51bGwsXG4gICAgICAgICAgICBza2lwOiB0cnVlXG4gICAgICAgICAgfSksXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuUVVPVEVfU1RSSU5HX01PREUsIHtcbiAgICAgICAgICAgIGlsbGVnYWw6IG51bGwsXG4gICAgICAgICAgICBjbGFzc05hbWU6IG51bGwsXG4gICAgICAgICAgICBjb250YWluczogbnVsbCxcbiAgICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xufVxuXG5leHBvcnQgeyBwaHBUZW1wbGF0ZSBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsicGhwVGVtcGxhdGUiLCJobGpzIiwibmFtZSIsInN1Ykxhbmd1YWdlIiwiY29udGFpbnMiLCJiZWdpbiIsImVuZCIsInNraXAiLCJpbmhlcml0IiwiQVBPU19TVFJJTkdfTU9ERSIsImlsbGVnYWwiLCJjbGFzc05hbWUiLCJRVU9URV9TVFJJTkdfTU9ERSIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/php-template.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/php.js":
/*!*******************************************************!*\
!*** ./node_modules/highlight.js/es/languages/php.js ***!
\*******************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ php)\n/* harmony export */ });\n/*\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 * @param {HLJSApi} hljs\n * @returns {LanguageDetail}\n * */ function 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 {\n begin: /<\\?php/,\n relevance: 10\n },\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 {\n begin: /\\?>/\n } // end php tag\n ]\n };\n const SUBST = {\n scope: \"subst\",\n variants: [\n {\n begin: /\\$\\w+/\n },\n {\n begin: /\\{\\$/,\n end: /\\}/\n }\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 = hljs.END_SAME_AS_BEGIN({\n begin: /<<<[ \\t]*(\\w+)\\n/,\n end: /[ \\t]*(\\w+)\\b/,\n contains: hljs.QUOTE_STRING_MODE.contains.concat(SUBST)\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 ]\n };\n const NUMBER = {\n scope: \"number\",\n variants: [\n {\n begin: `\\\\b0[bB][01]+(?:_[01]+)*\\\\b`\n },\n {\n begin: `\\\\b0[oO][0-7]+(?:_[0-7]+)*\\\\b`\n },\n {\n begin: `\\\\b0[xX][\\\\da-fA-F]+(?:_[\\\\da-fA-F]+)*\\\\b`\n },\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 ],\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 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 /** Dual-case keywords\n *\n * [\"then\",\"FILE\"] =>\n * [\"then\", \"THEN\", \"FILE\", \"file\"]\n *\n * @param {string[]} items */ const dualCase = (items)=>{\n /** @type string[] */ 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 * @param {string[]} items */ const normalizeKeywords = (items)=>{\n return items.map((item)=>{\n return item.replace(/\\|\\d+$/, \"\");\n });\n };\n const CONSTRUCTOR_CALL = {\n 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 const LEFT_AND_RIGHT_SIDE_OF_DOUBLE_COLON = {\n variants: [\n {\n match: [\n regex.concat(/::/, regex.lookahead(/(?!class\\b)/)),\n CONSTANT_REFERENCE\n ],\n scope: {\n 2: \"variable.constant\"\n }\n },\n {\n match: [\n /::/,\n /class/\n ],\n scope: {\n 2: \"variable.language\"\n }\n },\n {\n match: [\n PASCAL_CASE_CLASS_NAME_RE,\n regex.concat(/::/, regex.lookahead(/(?!class\\b)/)),\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(\"::\", regex.lookahead(/(?!class\\b)/))\n ],\n scope: {\n 1: \"title.class\"\n }\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: {\n 3: \"title.function.invoke\"\n },\n contains: [\n PARAMS_MODE\n ]\n };\n PARAMS_MODE.contains.push(FUNCTION_INVOKE);\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 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 return {\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n ATTRIBUTES,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\"//\", \"$\"),\n hljs.COMMENT(\"/\\\\*\", \"\\\\*/\", {\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 {\n beginKeywords: \"use\"\n },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin: \"=>\",\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 {\n beginKeywords: \"extends implements\"\n },\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: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {\n scope: \"title.class\"\n })\n ]\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\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9waHAuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7QUFNQSxHQUVBOzs7R0FHRyxHQUNILFNBQVNBLElBQUlDLElBQUk7SUFDZixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLG9FQUFvRTtJQUNwRSwwQ0FBMEM7SUFDMUMsTUFBTUMsZUFBZTtJQUNyQixNQUFNQyxXQUFXRixNQUFNRyxNQUFNLENBQzNCLDRDQUNBRjtJQUNGLG9DQUFvQztJQUNwQyxNQUFNRyw0QkFBNEJKLE1BQU1HLE1BQU0sQ0FDNUMsMEVBQ0FGO0lBQ0YsTUFBTUksV0FBVztRQUNmQyxPQUFPO1FBQ1BDLE9BQU8sU0FBU0w7SUFDbEI7SUFDQSxNQUFNTSxlQUFlO1FBQ25CRixPQUFPO1FBQ1BHLFVBQVU7WUFDUjtnQkFBRUMsT0FBTztnQkFBVUMsV0FBVztZQUFHO1lBQ2pDO2dCQUFFRCxPQUFPO1lBQU87WUFDaEIsMkRBQTJEO1lBQzNEO2dCQUFFQSxPQUFPO2dCQUFPQyxXQUFXO1lBQUk7WUFDL0I7Z0JBQUVELE9BQU87WUFBTSxFQUFFLGNBQWM7U0FDaEM7SUFDSDtJQUNBLE1BQU1FLFFBQVE7UUFDWk4sT0FBTztRQUNQRyxVQUFVO1lBQ1I7Z0JBQUVDLE9BQU87WUFBUTtZQUNqQjtnQkFDRUEsT0FBTztnQkFDUEcsS0FBSztZQUNQO1NBQ0Q7SUFDSDtJQUNBLE1BQU1DLGdCQUFnQmYsS0FBS2dCLE9BQU8sQ0FBQ2hCLEtBQUtpQixnQkFBZ0IsRUFBRTtRQUFFQyxTQUFTO0lBQU07SUFDM0UsTUFBTUMsZ0JBQWdCbkIsS0FBS2dCLE9BQU8sQ0FBQ2hCLEtBQUtvQixpQkFBaUIsRUFBRTtRQUN6REYsU0FBUztRQUNURyxVQUFVckIsS0FBS29CLGlCQUFpQixDQUFDQyxRQUFRLENBQUNqQixNQUFNLENBQUNTO0lBQ25EO0lBQ0EsTUFBTVMsVUFBVXRCLEtBQUt1QixpQkFBaUIsQ0FBQztRQUNy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S0FBS21FLHFCQUFxQjtvQkFDMUI7d0JBQ0V4RCxPQUFPO3dCQUNQcUQsWUFBWTtvQkFDZDtvQkFDQTt3QkFDRXpELE9BQU87d0JBQ1BJLE9BQU87d0JBQ1BHLEtBQUs7d0JBQ0xzRCxjQUFjO3dCQUNkRixZQUFZO3dCQUNaZCxVQUFVZDt3QkFDVmpCLFVBQVU7NEJBQ1I7NEJBQ0FmOzRCQUNBMEM7NEJBQ0FoRCxLQUFLcUQsb0JBQW9COzRCQUN6QjVCOzRCQUNBQzt5QkFDRDtvQkFDSDtpQkFDRDtZQUNIO1lBQ0E7Z0JBQ0VuQixPQUFPO2dCQUNQRyxVQUFVO29CQUNSO3dCQUNFdUQsZUFBZTt3QkFDZi9DLFNBQVM7b0JBQ1g7b0JBQ0E7d0JBQ0UrQyxlQUFlO3dCQUNmL0MsU0FBUztvQkFDWDtpQkFDRDtnQkFDRE4sV0FBVztnQkFDWEUsS0FBSztnQkFDTG9ELFlBQVk7Z0JBQ1o3QyxVQUFVO29CQUNSO3dCQUFFNEMsZUFBZTtvQkFBcUI7b0JBQ3RDakUsS0FBS21FLHFCQUFxQjtpQkFDM0I7WUFDSDtZQUNBLHNFQUFzRTtZQUN0RSxvRUFBb0U7WUFDcEUsc0RBQXNEO1lBQ3REO2dCQUNFRixlQUFlO2dCQUNmckQsV0FBVztnQkFDWEUsS0FBSztnQkFDTEksU0FBUztnQkFDVEcsVUFBVTtvQkFBRXJCLEtBQUtnQixPQUFPLENBQUNoQixLQUFLbUUscUJBQXFCLEVBQUU7d0JBQUU1RCxPQUFPO29CQUFjO2lCQUFJO1lBQ2xGO1lBQ0E7Z0JBQ0UwRCxlQUFlO2dCQUNmckQsV0FBVztnQkFDWEUsS0FBSztnQkFDTE8sVUFBVTtvQkFDUixzQ0FBc0M7b0JBQ3RDO3dCQUNFYixPQUFPO3dCQUNQRCxPQUFPO29CQUNUO29CQUNBLCtDQUErQztvQkFDL0NQLEtBQUttRSxxQkFBcUI7aUJBQzNCO1lBQ0g7WUFDQTFDO1lBQ0FDO1NBQ0Q7SUFDSDtBQUNGO0FBRTBCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9waHAuanM/ZjhmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IFBIUFxuQXV0aG9yOiBWaWN0b3IgS2FyYW16aW4gPFZpY3Rvci5LYXJhbXppbkBlbnRlcnJhLWluYy5jb20+XG5Db250cmlidXRvcnM6IEV2Z2VueSBTdGVwYW5pc2NoZXYgPGltYm9sa0BnbWFpbC5jb20+LCBJdmFuIFNhZ2FsYWV2IDxtYW5pYWNAc29mdHdhcmVtYW5pYWNzLm9yZz5cbldlYnNpdGU6IGh0dHBzOi8vd3d3LnBocC5uZXRcbkNhdGVnb3J5OiBjb21tb25cbiovXG5cbi8qKlxuICogQHBhcmFtIHtITEpTQXBpfSBobGpzXG4gKiBAcmV0dXJucyB7TGFuZ3VhZ2VEZXRhaWx9XG4gKiAqL1xuZnVuY3Rpb24gcGhwKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICAvLyBuZWdhdGl2ZSBsb29rLWFoZWFkIHRyaWVzIHRvIGF2b2lkIG1hdGNoaW5nIHBhdHRlcm5zIHRoYXQgYXJlIG5vdFxuICAvLyBQZXJsIGF0IGFsbCBsaWtlICRpZGVudCQsIEBpZGVudEAsIGV0Yy5cbiAgY29uc3QgTk9UX1BFUkxfRVRDID0gLyg/IVtBLVphLXowLTldKSg/IVskXSkvO1xuICBjb25zdCBJREVOVF9SRSA9IHJlZ2V4LmNvbmNhdChcbiAgICAvW2EtekEtWl9cXHg3Zi1cXHhmZl1bYS16QS1aMC05X1xceDdmLVxceGZmXSovLFxuICAgIE5PVF9QRVJMX0VUQyk7XG4gIC8vIFdpbGwgbm90IGRldGVjdCBjYW1lbENhc2UgY2xhc3Nlc1xuICBjb25zdCBQQVNDQUxfQ0FTRV9DTEFTU19OQU1FX1JFID0gcmVnZXguY29uY2F0KFxuICAgIC8oXFxcXD9bQS1aXVthLXowLTlfXFx4N2YtXFx4ZmZdK3xcXFxcP1tBLVpdKyg/PVtBLVpdW2EtejAtOV9cXHg3Zi1cXHhmZl0pKXsxLH0vLFxuICAgIE5PVF9QRVJMX0VUQyk7XG4gIGNvbnN0IFZBUklBQkxFID0ge1xuICAgIHNjb3BlOiAndmFyaWFibGUnLFxuICAgIG1hdGNoOiAnXFxcXCQrJyArIElERU5UX1JFLFxuICB9O1xuICBjb25zdCBQUkVQUk9DRVNTT1IgPSB7XG4gICAgc2NvcGU6ICdtZXRhJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogLzxcXD9waHAvLCByZWxldmFuY2U6IDEwIH0sIC8vIGJvb3N0IGZvciBvYnZpb3VzIFBIUFxuICAgICAgeyBiZWdpbjogLzxcXD89LyB9LFxuICAgICAgLy8gbGVzcyByZWxldmFudCBwZXIgUFNSLTEgd2hpY2ggc2F5cyBub3QgdG8gdXNlIHNob3J0LXRhZ3NcbiAgICAgIHsgYmVnaW46IC88XFw/LywgcmVsZXZhbmNlOiAwLjEgfSxcbiAgICAgIHsgYmVnaW46IC9cXD8+LyB9IC8vIGVuZCBwaHAgdGFnXG4gICAgXVxuICB9O1xuICBjb25zdCBTVUJTVCA9IHtcbiAgICBzY29wZTogJ3N1YnN0JyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogL1xcJFxcdysvIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFx7XFwkLyxcbiAgICAgICAgZW5kOiAvXFx9L1xuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgY29uc3QgU0lOR0xFX1FVT1RFRCA9IGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHsgaWxsZWdhbDogbnVsbCwgfSk7XG4gIGNvbnN0IERPVUJMRV9RVU9URUQgPSBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge1xuICAgIGlsbGVnYWw6IG51bGwsXG4gICAgY29udGFpbnM6IGhsanMuUVVPVEVfU1RSSU5HX01PREUuY29udGFpbnMuY29uY2F0KFNVQlNUKSxcbiAgfSk7XG4gIGNvbnN0IEhFUkVET0MgPSBobGpzLkVORF9TQU1FX0FTX0JFR0lOKHtcbiAgICBiZWdpbjogLzw8PFsgXFx0XSooXFx3KylcXG4vLFxuICAgIGVuZDogL1sgXFx0XSooXFx3KylcXGIvLFxuICAgIGNvbnRhaW5zOiBobGpzLlFVT1RFX1NUUklOR19NT0RFLmNvbnRhaW5zLmNvbmNhdChTVUJTVCksXG4gIH0pO1xuICAvLyBsaXN0IG9mIHZhbGlkIHdoaXRlc3BhY2VzIGJlY2F1c2Ugbm9uLWJyZWFraW5nIHNwYWNlIG1pZ2h0IGJlIHBhcnQgb2YgYSBJREVOVF9SRVxuICBjb25zdCBXSElURVNQQUNFID0gJ1sgXFx0XFxuXSc7XG4gIGNvbnN0IFNUUklORyA9IHtcbiAgICBzY29wZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIERPVUJMRV9RVU9URUQsXG4gICAgICBTSU5HTEVfUVVPVEVELFxuICAgICAgSEVSRURPQ1xuICAgIF1cbiAgfTtcbiAgY29uc3QgTlVNQkVSID0ge1xuICAgIHNjb3BlOiAnbnVtYmVyJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyBiZWdpbjogYFxcXFxiMFtiQl1bMDFdKyg/Ol9bMDFdKykqXFxcXGJgIH0sIC8vIEJpbmFyeSB3LyB1bmRlcnNjb3JlIHN1cHBvcnRcbiAgICAgIHsgYmVnaW46IGBcXFxcYjBbb09dWzAtN10rKD86X1swLTddKykqXFxcXGJgIH0sIC8vIE9jdGFscyB3LyB1bmRlcnNjb3JlIHN1cHBvcnRcbiAgICAgIHsgYmVnaW46IGBcXFxcYjBbeFhdW1xcXFxkYS1mQS1GXSsoPzpfW1xcXFxkYS1mQS1GXSspKlxcXFxiYCB9LCAvLyBIZXggdy8gdW5kZXJzY29yZSBzdXBwb3J0XG4gICAgICAvLyBEZWNpbWFscyB3LyB1bmRlcnNjb3JlIHN1cHBvcnQsIHdpdGggb3B0aW9uYWwgZnJhZ21lbnRzIGFuZCBzY2llbnRpZmljIGV4cG9uZW50IChlKSBzdWZmaXguXG4gICAgICB7IGJlZ2luOiBgKD86XFxcXGJcXFxcZCsoPzpfXFxcXGQrKSooXFxcXC4oPzpcXFxcZCsoPzpfXFxcXGQrKSopKT98XFxcXEJcXFxcLlxcXFxkKykoPzpbZUVdWystXT9cXFxcZCspP2AgfVxuICAgIF0sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGNvbnN0IExJVEVSQUxTID0gW1xuICAgIFwiZmFsc2VcIixcbiAgICBcIm51bGxcIixcbiAgICBcInRydWVcIlxuICBdO1xuICBjb25zdCBLV1MgPSBbXG4gICAgLy8gTWFnaWMgY29uc3RhbnRzOlxuICAgIC8vIDxodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9sYW5ndWFnZS5jb25zdGFudHMucHJlZGVmaW5lZC5waHA+XG4gICAgXCJfX0NMQVNTX19cIixcbiAgICBcIl9fRElSX19cIixcbiAgICBcIl9fRklMRV9fXCIsXG4gICAgXCJfX0ZVTkNUSU9OX19cIixcbiAgICBcIl9fQ09NUElMRVJfSEFMVF9PRkZTRVRfX1wiLFxuICAgIFwiX19MSU5FX19cIixcbiAgICBcIl9fTUVUSE9EX19cIixcbiAgICBcIl9fTkFNRVNQQUNFX19cIixcbiAgICBcIl9fVFJBSVRfX1wiLFxuICAgIC8vIEZ1bmN0aW9uIHRoYXQgbG9vayBsaWtlIGxhbmd1YWdlIGNvbnN0cnVjdCBvciBsYW5ndWFnZSBjb25zdHJ1Y3QgdGhhdCBsb29rIGxpa2UgZnVuY3Rpb246XG4gICAgLy8gTGlzdCBvZiBrZXl3b3JkcyB0aGF0IG1heSBub3QgcmVxdWlyZSBwYXJlbnRoZXNpc1xuICAgIFwiZGllXCIsXG4gICAgXCJlY2hvXCIsXG4gICAgXCJleGl0XCIsXG4gICAgXCJpbmNsdWRlXCIsXG4gICAgXCJpbmNsdWRlX29uY2VcIixcbiAgICBcInByaW50XCIsXG4gICAgXCJyZXF1aXJlXCIsXG4gICAgXCJyZXF1aXJlX29uY2VcIixcbiAgICAvLyBUaGVzZSBhcmUgbm90IGxhbmd1YWdlIGNvbnN0cnVjdCAoZnVuY3Rpb24pIGJ1dCBvcGVyYXRlIG9uIHRoZSBjdXJyZW50bHktZXhlY3V0aW5nIGZ1bmN0aW9uIGFuZCBjYW4gYWNjZXNzIHRoZSBjdXJyZW50IHN5bWJvbCB0YWJsZVxuICAgIC8vICdjb21wYWN0IGV4dHJhY3QgZnVuY19nZXRfYXJnIGZ1bmNfZ2V0X2FyZ3MgZnVuY19udW1fYXJncyBnZXRfY2FsbGVkX2NsYXNzIGdldF9wYXJlbnRfY2xhc3MgJyArXG4gICAgLy8gT3RoZXIga2V5d29yZHM6XG4gICAgLy8gPGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLnBocD5cbiAgICAvLyA8aHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2UudHlwZXMudHlwZS1qdWdnbGluZy5waHA+XG4gICAgXCJhcnJheVwiLFxuICAgIFwiYWJzdHJhY3RcIixcbiAgICBcImFuZFwiLFxuICAgIFwiYXNcIixcbiAgICBcImJpbmFyeVwiLFxuICAgIFwiYm9vbFwiLFxuICAgIFwiYm9vbGVhblwiLFxuICAgIFwiYnJlYWtcIixcbiAgICBcImNhbGxhYmxlXCIsXG4gICAgXCJjYXNlXCIsXG4gICAgXCJjYXRjaFwiLFxuICAgIFwiY2xhc3NcIixcbiAgICBcImNsb25lXCIsXG4gICAgXCJjb25zdFwiLFxuICAgIFwiY29udGludWVcIixcbiAgICBcImRlY2xhcmVcIixcbiAgICBcImRlZmF1bHRcIixcbiAgICBcImRvXCIsXG4gICAgXCJkb3VibGVcIixcbiAgICBcImVsc2VcIixcbiAgICBcImVsc2VpZlwiLFxuICAgIFwiZW1wdHlcIixcbiAgICBcImVuZGRlY2xhcmVcIixcbiAgICBcImVuZGZvclwiLFxuICAgIFwiZW5kZm9yZWFjaFwiLFxuICAgIFwiZW5kaWZcIixcbiAgICBcImVuZHN3aXRjaFwiLFxuICAgIFwiZW5kd2hpbGVcIixcbiAgICBcImVudW1cIixcbiAgICBcImV2YWxcIixcbiAgICBcImV4dGVuZHNcIixcbiAgICBcImZpbmFsXCIsXG4gICAgXCJmaW5hbGx5XCIsXG4gICAgXCJmbG9hdFwiLFxuICAgIFwiZm9yXCIsXG4gICAgXCJmb3JlYWNoXCIsXG4gICAgXCJmcm9tXCIsXG4gICAgXCJnbG9iYWxcIixcbiAgICBcImdvdG9cIixcbiAgICBcImlmXCIsXG4gICAgXCJpbXBsZW1lbnRzXCIsXG4gICAgXCJpbnN0YW5jZW9mXCIsXG4gICAgXCJpbnN0ZWFkb2ZcIixcbiAgICBcImludFwiLFxuICAgIFwiaW50ZWdlclwiLFxuICAgIFwiaW50ZXJmYWNlXCIsXG4gICAgXCJpc3NldFwiLFxuICAgIFwiaXRlcmFibGVcIixcbiAgICBcImxpc3RcIixcbiAgICBcIm1hdGNofDBcIixcbiAgICBcIm1peGVkXCIsXG4gICAgXCJuZXdcIixcbiAgICBcIm5ldmVyXCIsXG4gICAgXCJvYmplY3RcIixcbiAgICBcIm9yXCIsXG4gICAgXCJwcml2YXRlXCIsXG4gICAgXCJwcm90ZWN0ZWRcIixcbiAgICBcInB1YmxpY1wiLFxuICAgIFwicmVhZG9ubHlcIixcbiAgICBcInJlYWxcIixcbiAgICBcInJldHVyblwiLFxuICAgIFwic3RyaW5nXCIsXG4gICAgXCJzd2l0Y2hcIixcbiAgICBcInRocm93XCIsXG4gICAgXCJ0cmFpdFwiLFxuICAgIFwidHJ5XCIsXG4gICAgXCJ1bnNldFwiLFxuICAgIFwidXNlXCIsXG4gICAgXCJ2YXJcIixcbiAgICBcInZvaWRcIixcbiAgICBcIndoaWxlXCIsXG4gICAgXCJ4b3JcIixcbiAgICBcInlpZWxkXCJcbiAgXTtcblxuICBjb25zdCBCVUlMVF9JTlMgPSBbXG4gICAgLy8gU3RhbmRhcmQgUEhQIGxpYnJhcnk6XG4gICAgLy8gPGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Jvb2suc3BsLnBocD5cbiAgICBcIkVycm9yfDBcIixcbiAgICBcIkFwcGVuZEl0ZXJhdG9yXCIsXG4gICAgXCJBcmd1bWVudENvdW50RXJyb3JcIixcbiAgICBcIkFyaXRobWV0aWNFcnJvclwiLFxuICAgIFwiQXJyYXlJdGVyYXRvclwiLFxuICAgIFwiQXJyYXlPYmplY3RcIixcbiAgICBcIkFzc2VydGlvbkVycm9yXCIsXG4gICAgXCJCYWRGdW5jdGlvbkNhbGxFeGNlcHRpb25cIixcbiAgICBcIkJhZE1ldGhvZENhbGxFeGNlcHRpb25cIixcbiAgICBcIkNhY2hpbmdJdGVyYXRvclwiLFxuICAgIFwiQ2FsbGJhY2tGaWx0ZXJJdGVyYXRvclwiLFxuICAgIFwiQ29tcGlsZUVycm9yXCIsXG4gICAgXCJDb3VudGFibGVcIixcbiAgICBcIkRpcmVjdG9yeUl0ZXJhdG9yXCIsXG4gICAgXCJEaXZpc2lvbkJ5WmVyb0Vycm9yXCIsXG4gICAgXCJEb21haW5FeGNlcHRpb25cIixcbiAgICBcIkVtcHR5SXRlcmF0b3JcIixcbiAgICBcIkVycm9yRXhjZXB0aW9uXCIsXG4gICAgXCJFeGNlcHRpb25cIixcbiAgICBcIkZpbGVzeXN0ZW1JdGVyYXRvclwiLFxuICAgIFwiRmlsdGVySXRlcmF0b3JcIixcbiAgICBcIkdsb2JJdGVyYXRvclwiLFxuICAgIFwiSW5maW5pdGVJdGVyYXRvclwiLFxuICAgIFwiSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uXCIsXG4gICAgXCJJdGVyYXRvckl0ZXJhdG9yXCIsXG4gICAgXCJMZW5ndGhFeGNlcHRpb25cIixcbiAgICBcIkxpbWl0SXRlcmF0b3JcIixcbiAgICBcIkxvZ2ljRXhjZXB0aW9uXCIsXG4gICAgXCJNdWx0aXBsZUl0ZXJhdG9yXCIsXG4gICAgXCJOb1Jld2luZEl0ZXJhdG9yXCIsXG4gICAgXCJPdXRPZkJvdW5kc0V4Y2VwdGlvblwiLFxuICAgIFwiT3V0T2ZSYW5nZUV4Y2VwdGlvblwiLFxuICAgIFwiT3V0ZXJJdGVyYXRvclwiLFxuICAgIFwiT3ZlcmZsb3dFeGNlcHRpb25cIixcbiAgICBcIlBhcmVudEl0ZXJhdG9yXCIsXG4gICAgXCJQYXJzZUVycm9yXCIsXG4gICAgXCJSYW5nZUV4Y2VwdGlvblwiLFxuICAgIFwiUmVjdXJzaXZlQXJyYXlJdGVyYXRvclwiLFxuICAgIFwiUmVjdXJzaXZlQ2FjaGluZ0l0ZXJhdG9yXCIsXG4gICAgXCJSZWN1cnNpdmVDYWxsYmFja0ZpbHRlckl0ZXJhdG9yXCIsXG4gICAgXCJSZWN1cnNpdmVEaXJlY3RvcnlJdGVyYXRvclwiLFxuICAgIFwiUmVjdXJzaXZlRmlsdGVySXRlcmF0b3JcIixcbiAgICBcIlJlY3Vyc2l2ZUl0ZXJhdG9yXCIsXG4gICAgXCJSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yXCIsXG4gICAgXCJSZWN1cnNpdmVSZWdleEl0ZXJhdG9yXCIsXG4gICAgXCJSZWN1cnNpdmVUcmVlSXRlcmF0b3JcIixcbiAgICBcIlJlZ2V4SXRlcmF0b3JcIixcbiAgICBcIlJ1bnRpbWVFeGNlcHRpb25cIixcbiAgICBcIlNlZWthYmxlSXRlcmF0b3JcIixcbiAgICBcIlNwbERvdWJseUxpbmtlZExpc3RcIixcbiAgICBcIlNwbEZpbGVJbmZvXCIsXG4gICAgXCJTcGxGaWxlT2JqZWN0XCIsXG4gICAgXCJTcGxGaXhlZEFycmF5XCIsXG4gICAgXCJTcGxIZWFwXCIsXG4gICAgXCJTcGxNYXhIZWFwXCIsXG4gICAgXCJTcGxNaW5IZWFwXCIsXG4gICAgXCJTcGxPYmplY3RTdG9yYWdlXCIsXG4gICAgXCJTcGxPYnNlcnZlclwiLFxuICAgIFwiU3BsUHJpb3JpdHlRdWV1ZVwiLFxuICAgIFwiU3BsUXVldWVcIixcbiAgICBcIlNwbFN0YWNrXCIsXG4gICAgXCJTcGxTdWJqZWN0XCIsXG4gICAgXCJTcGxUZW1wRmlsZU9iamVjdFwiLFxuICAgIFwiVHlwZUVycm9yXCIsXG4gICAgXCJVbmRlcmZsb3dFeGNlcHRpb25cIixcbiAgICBcIlVuZXhwZWN0ZWRWYWx1ZUV4Y2VwdGlvblwiLFxuICAgIFwiVW5oYW5kbGVkTWF0Y2hFcnJvclwiLFxuICAgIC8vIFJlc2VydmVkIGludGVyZmFjZXM6XG4gICAgLy8gPGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLmludGVyZmFjZXMucGhwPlxuICAgIFwiQXJyYXlBY2Nlc3NcIixcbiAgICBcIkJhY2tlZEVudW1cIixcbiAgICBcIkNsb3N1cmVcIixcbiAgICBcIkZpYmVyXCIsXG4gICAgXCJHZW5lcmF0b3JcIixcbiAgICBcIkl0ZXJhdG9yXCIsXG4gICAgXCJJdGVyYXRvckFnZ3JlZ2F0ZVwiLFxuICAgIFwiU2VyaWFsaXphYmxlXCIsXG4gICAgXCJTdHJpbmdhYmxlXCIsXG4gICAgXCJUaHJvd2FibGVcIixcbiAgICBcIlRyYXZlcnNhYmxlXCIsXG4gICAgXCJVbml0RW51bVwiLFxuICAgIFwiV2Vha1JlZmVyZW5jZVwiLFxuICAgIFwiV2Vha01hcFwiLFxuICAgIC8vIFJlc2VydmVkIGNsYXNzZXM6XG4gICAgLy8gPGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLmNsYXNzZXMucGhwPlxuICAgIFwiRGlyZWN0b3J5XCIsXG4gICAgXCJfX1BIUF9JbmNvbXBsZXRlX0NsYXNzXCIsXG4gICAgXCJwYXJlbnRcIixcbiAgICBcInBocF91c2VyX2ZpbHRlclwiLFxuICAgIFwic2VsZlwiLFxuICAgIFwic3RhdGljXCIsXG4gICAgXCJzdGRDbGFzc1wiXG4gIF07XG5cbiAgLyoqIER1YWwtY2FzZSBrZXl3b3Jkc1xuICAgKlxuICAgKiBbXCJ0aGVuXCIsXCJGSUxFXCJdID0+XG4gICAqICAgICBbXCJ0aGVuXCIsIFwiVEhFTlwiLCBcIkZJTEVcIiwgXCJmaWxlXCJdXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGl0ZW1zICovXG4gIGNvbnN0IGR1YWxDYXNlID0gKGl0ZW1zKSA9PiB7XG4gICAgLyoqIEB0eXBlIHN0cmluZ1tdICovXG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xuICAgICAgaWYgKGl0ZW0udG9Mb3dlckNhc2UoKSA9PT0gaXRlbSkge1xuICAgICAgICByZXN1bHQucHVzaChpdGVtLnRvVXBwZXJDYXNlKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LnB1c2goaXRlbS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGNvbnN0IEtFWVdPUkRTID0ge1xuICAgIGtleXdvcmQ6IEtXUyxcbiAgICBsaXRlcmFsOiBkdWFsQ2FzZShMSVRFUkFMUyksXG4gICAgYnVpbHRfaW46IEJVSUxUX0lOUyxcbiAgfTtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gaXRlbXMgKi9cbiAgY29uc3Qgbm9ybWFsaXplS2V5d29yZHMgPSAoaXRlbXMpID0+IHtcbiAgICByZXR1cm4gaXRlbXMubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIGl0ZW0ucmVwbGFjZSgvXFx8XFxkKyQvLCBcIlwiKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBDT05TVFJVQ1RPUl9DQUxMID0geyB2YXJpYW50czogW1xuICAgIHtcbiAgICAgIG1hdGNoOiBbXG4gICAgICAgIC9uZXcvLFxuICAgICAgICByZWdleC5jb25jYXQoV0hJVEVTUEFDRSwgXCIrXCIpLFxuICAgICAgICAvLyB0byBwcmV2ZW50IGJ1aWx0IGlucyBmcm9tIGJlaW5nIGNvbmZ1c2VkIGFzIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBjYWxsXG4gICAgICAgIHJlZ2V4LmNvbmNhdChcIig/IVwiLCBub3JtYWxpemVLZXl3b3JkcyhCVUlMVF9JTlMpLmpvaW4oXCJcXFxcYnxcIiksIFwiXFxcXGIpXCIpLFxuICAgICAgICBQQVNDQUxfQ0FTRV9DTEFTU19OQU1FX1JFLFxuICAgICAgXSxcbiAgICAgIHNjb3BlOiB7XG4gICAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgICA0OiBcInRpdGxlLmNsYXNzXCIsXG4gICAgICB9LFxuICAgIH1cbiAgXSB9O1xuXG4gIGNvbnN0IENPTlNUQU5UX1JFRkVSRU5DRSA9IHJlZ2V4LmNvbmNhdChJREVOVF9SRSwgXCJcXFxcYig/IVxcXFwoKVwiKTtcblxuICBjb25zdCBMRUZUX0FORF9SSUdIVF9TSURFX09GX0RPVUJMRV9DT0xPTiA9IHsgdmFyaWFudHM6IFtcbiAgICB7XG4gICAgICBtYXRjaDogW1xuICAgICAgICByZWdleC5jb25jYXQoXG4gICAgICAgICAgLzo6LyxcbiAgICAgICAgICByZWdleC5sb29rYWhlYWQoLyg/IWNsYXNzXFxiKS8pXG4gICAgICAgICksXG4gICAgICAgIENPTlNUQU5UX1JFRkVSRU5DRSxcbiAgICAgIF0sXG4gICAgICBzY29wZTogeyAyOiBcInZhcmlhYmxlLmNvbnN0YW50XCIsIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBtYXRjaDogW1xuICAgICAgICAvOjovLFxuICAgICAgICAvY2xhc3MvLFxuICAgICAgXSxcbiAgICAgIHNjb3BlOiB7IDI6IFwidmFyaWFibGUubGFuZ3VhZ2VcIiwgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG1hdGNoOiBbXG4gICAgICAgIFBBU0NBTF9DQVNFX0NMQVNTX05BTUVfUkUsXG4gICAgICAgIHJlZ2V4LmNvbmNhdChcbiAgICAgICAgICAvOjovLFxuICAgICAgICAgIHJlZ2V4Lmxvb2thaGVhZCgvKD8hY2xhc3NcXGIpLylcbiAgICAgICAgKSxcbiAgICAgICAgQ09OU1RBTlRfUkVGRVJFTkNFLFxuICAgICAgXSxcbiAgICAgIHNjb3BlOiB7XG4gICAgICAgIDE6IFwidGl0bGUuY2xhc3NcIixcbiAgICAgICAgMzogXCJ2YXJpYWJsZS5jb25zdGFudFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG1hdGNoOiBbXG4gICAgICAgIFBBU0NBTF9DQVNFX0NMQVNTX05BTUVfUkUsXG4gICAgICAgIHJlZ2V4LmNvbmNhdChcbiAgICAgICAgICBcIjo6XCIsXG4gICAgICAgICAgcmVnZXgubG9va2FoZWFkKC8oPyFjbGFzc1xcYikvKVxuICAgICAgICApLFxuICAgICAgXSxcbiAgICAgIHNjb3BlOiB7IDE6IFwidGl0bGUuY2xhc3NcIiwgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG1hdGNoOiBbXG4gICAgICAgIFBBU0NBTF9DQVNFX0NMQVNTX05BTUVfUkUsXG4gICAgICAgIC86Oi8sXG4gICAgICAgIC9jbGFzcy8sXG4gICAgICBdLFxuICAgICAgc2NvcGU6IHtcbiAgICAgICAgMTogXCJ0aXRsZS5jbGFzc1wiLFxuICAgICAgICAzOiBcInZhcmlhYmxlLmxhbmd1YWdlXCIsXG4gICAgICB9LFxuICAgIH1cbiAgXSB9O1xuXG4gIGNvbnN0IE5BTUVEX0FSR1VNRU5UID0ge1xuICAgIHNjb3BlOiAnYXR0cicsXG4gICAgbWF0Y2g6IHJlZ2V4LmNvbmNhdChJREVOVF9SRSwgcmVnZXgubG9va2FoZWFkKCc6JyksIHJlZ2V4Lmxvb2thaGVhZCgvKD8hOjopLykpLFxuICB9O1xuICBjb25zdCBQQVJBTVNfTU9ERSA9IHtcbiAgICByZWxldmFuY2U6IDAsXG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBOQU1FRF9BUkdVTUVOVCxcbiAgICAgIFZBUklBQkxFLFxuICAgICAgTEVGVF9BTkRfUklHSFRfU0lERV9PRl9ET1VCTEVfQ09MT04sXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgU1RSSU5HLFxuICAgICAgTlVNQkVSLFxuICAgICAgQ09OU1RSVUNUT1JfQ0FMTCxcbiAgICBdLFxuICB9O1xuICBjb25zdCBGVU5DVElPTl9JTlZPS0UgPSB7XG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIG1hdGNoOiBbXG4gICAgICAvXFxiLyxcbiAgICAgIC8vIHRvIHByZXZlbnQga2V5d29yZHMgZnJvbSBiZWluZyBjb25mdXNlZCBhcyB0aGUgZnVuY3Rpb24gdGl0bGVcbiAgICAgIHJlZ2V4LmNvbmNhdChcIig/IWZuXFxcXGJ8ZnVuY3Rpb25cXFxcYnxcIiwgbm9ybWFsaXplS2V5d29yZHMoS1dTKS5qb2luKFwiXFxcXGJ8XCIpLCBcInxcIiwgbm9ybWFsaXplS2V5d29yZHMoQlVJTFRfSU5TKS5qb2luKFwiXFxcXGJ8XCIpLCBcIlxcXFxiKVwiKSxcbiAgICAgIElERU5UX1JFLFxuICAgICAgcmVnZXguY29uY2F0KFdISVRFU1BBQ0UsIFwiKlwiKSxcbiAgICAgIHJlZ2V4Lmxvb2thaGVhZCgvKD89XFwoKS8pXG4gICAgXSxcbiAgICBzY29wZTogeyAzOiBcInRpdGxlLmZ1bmN0aW9uLmludm9rZVwiLCB9LFxuICAgIGNvbnRhaW5zOiBbIFBBUkFNU19NT0RFIF1cbiAgfTtcbiAgUEFSQU1TX01PREUuY29udGFpbnMucHVzaChGVU5DVElPTl9JTlZPS0UpO1xuXG4gIGNvbnN0IEFUVFJJQlVURV9DT05UQUlOUyA9IFtcbiAgICBOQU1FRF9BUkdVTUVOVCxcbiAgICBMRUZUX0FORF9SSUdIVF9TSURFX09GX0RPVUJMRV9DT0xPTixcbiAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgIFNUUklORyxcbiAgICBOVU1CRVIsXG4gICAgQ09OU1RSVUNUT1JfQ0FMTCxcbiAgXTtcblxuICBjb25zdCBBVFRSSUJVVEVTID0ge1xuICAgIGJlZ2luOiByZWdleC5jb25jYXQoLyNcXFtcXHMqLywgUEFTQ0FMX0NBU0VfQ0xBU1NfTkFNRV9SRSksXG4gICAgYmVnaW5TY29wZTogXCJtZXRhXCIsXG4gICAgZW5kOiAvXS8sXG4gICAgZW5kU2NvcGU6IFwibWV0YVwiLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICAgIGtleXdvcmQ6IFtcbiAgICAgICAgJ25ldycsXG4gICAgICAgICdhcnJheScsXG4gICAgICBdXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcWy8sXG4gICAgICAgIGVuZDogL10vLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgICAgICAgIGtleXdvcmQ6IFtcbiAgICAgICAgICAgICduZXcnLFxuICAgICAgICAgICAgJ2FycmF5JyxcbiAgICAgICAgICBdXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgJ3NlbGYnLFxuICAgICAgICAgIC4uLkFUVFJJQlVURV9DT05UQUlOUyxcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC4uLkFUVFJJQlVURV9DT05UQUlOUyxcbiAgICAgIHtcbiAgICAgICAgc2NvcGU6ICdtZXRhJyxcbiAgICAgICAgbWF0Y2g6IFBBU0NBTF9DQVNFX0NMQVNTX05BTUVfUkVcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjYXNlX2luc2Vuc2l0aXZlOiBmYWxzZSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEFUVFJJQlVURVMsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DT01NRU5UKCcvLycsICckJyksXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgICcvXFxcXConLFxuICAgICAgICAnXFxcXCovJyxcbiAgICAgICAgeyBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNjb3BlOiAnZG9jdGFnJyxcbiAgICAgICAgICAgIG1hdGNoOiAnQFtBLVphLXpdKydcbiAgICAgICAgICB9XG4gICAgICAgIF0gfVxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IC9fX2hhbHRfY29tcGlsZXJcXChcXCk7LyxcbiAgICAgICAga2V5d29yZHM6ICdfX2hhbHRfY29tcGlsZXInLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBzY29wZTogXCJjb21tZW50XCIsXG4gICAgICAgICAgZW5kOiBobGpzLk1BVENIX05PVEhJTkdfUkUsXG4gICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWF0Y2g6IC9cXD8+LyxcbiAgICAgICAgICAgICAgc2NvcGU6IFwibWV0YVwiLFxuICAgICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgUFJFUFJPQ0VTU09SLFxuICAgICAge1xuICAgICAgICBzY29wZTogJ3ZhcmlhYmxlLmxhbmd1YWdlJyxcbiAgICAgICAgbWF0Y2g6IC9cXCR0aGlzXFxiL1xuICAgICAgfSxcbiAgICAgIFZBUklBQkxFLFxuICAgICAgRlVOQ1RJT05fSU5WT0tFLFxuICAgICAgTEVGVF9BTkRfUklHSFRfU0lERV9PRl9ET1VCTEVfQ09MT04sXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL2NvbnN0LyxcbiAgICAgICAgICAvXFxzLyxcbiAgICAgICAgICBJREVOVF9SRSxcbiAgICAgICAgXSxcbiAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgICAgICAzOiBcInZhcmlhYmxlLmNvbnN0YW50XCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgQ09OU1RSVUNUT1JfQ0FMTCxcbiAgICAgIHtcbiAgICAgICAgc2NvcGU6ICdmdW5jdGlvbicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgYmVnaW5LZXl3b3JkczogJ2ZuIGZ1bmN0aW9uJyxcbiAgICAgICAgZW5kOiAvWzt7XS8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGlsbGVnYWw6ICdbJCVcXFxcW10nLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHsgYmVnaW5LZXl3b3JkczogJ3VzZScsIH0sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX1RJVExFX01PREUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46ICc9PicsIC8vIE5vIG1hcmt1cCwganVzdCBhIHJlbGV2YW5jZSBib29zdGVyXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzY29wZTogJ3BhcmFtcycsXG4gICAgICAgICAgICBiZWdpbjogJ1xcXFwoJyxcbiAgICAgICAgICAgIGVuZDogJ1xcXFwpJyxcbiAgICAgICAgICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgICAgIFZBUklBQkxFLFxuICAgICAgICAgICAgICBMRUZUX0FORF9SSUdIVF9TSURFX09GX0RPVUJMRV9DT0xPTixcbiAgICAgICAgICAgICAgaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICAgICAgICAgICAgU1RSSU5HLFxuICAgICAgICAgICAgICBOVU1CRVJcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzY29wZTogJ2NsYXNzJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiBcImVudW1cIixcbiAgICAgICAgICAgIGlsbGVnYWw6IC9bKCRcIl0vXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbktleXdvcmRzOiBcImNsYXNzIGludGVyZmFjZSB0cmFpdFwiLFxuICAgICAgICAgICAgaWxsZWdhbDogL1s6KCRcIl0vXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGVuZDogL1xcey8sXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgeyBiZWdpbktleXdvcmRzOiAnZXh0ZW5kcyBpbXBsZW1lbnRzJyB9LFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9USVRMRV9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBib3RoIHVzZSBhbmQgbmFtZXNwYWNlIHN0aWxsIHVzZSBcIm9sZCBzdHlsZVwiIHJ1bGVzICh2cyBtdWx0aS1tYXRjaClcbiAgICAgIC8vIGJlY2F1c2UgdGhlIG5hbWVzcGFjZSBuYW1lIGNhbiBpbmNsdWRlIGBcXGAgYW5kIHdlIHN0aWxsIHdhbnQgZWFjaFxuICAgICAgLy8gZWxlbWVudCB0byBiZSB0cmVhdGVkIGFzIGl0cyBvd24gKmluZGl2aWR1YWwqIHRpdGxlXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICduYW1lc3BhY2UnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGVuZDogJzsnLFxuICAgICAgICBpbGxlZ2FsOiAvWy4nXS8sXG4gICAgICAgIGNvbnRhaW5zOiBbIGhsanMuaW5oZXJpdChobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERSwgeyBzY29wZTogXCJ0aXRsZS5jbGFzc1wiIH0pIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICd1c2UnLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGVuZDogJzsnLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIC8vIFRPRE86IHRpdGxlLmZ1bmN0aW9uIHZzIHRpdGxlLmNsYXNzXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWF0Y2g6IC9cXGIoYXN8Y29uc3R8ZnVuY3Rpb24pXFxiLyxcbiAgICAgICAgICAgIHNjb3BlOiBcImtleXdvcmRcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgLy8gVE9ETzogY291bGQgYmUgdGl0bGUuY2xhc3Mgb3IgdGl0bGUuZnVuY3Rpb25cbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfVElUTEVfTU9ERVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgU1RSSU5HLFxuICAgICAgTlVNQkVSLFxuICAgIF1cbiAgfTtcbn1cblxuZXhwb3J0IHsgcGhwIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJwaHAiLCJobGpzIiwicmVnZXgiLCJOT1RfUEVSTF9FVEMiLCJJREVOVF9SRSIsImNvbmNhdCIsIlBBU0NBTF9DQVNFX0NMQVNTX05BTUVfUkUiLCJWQVJJQUJMRSIsInNjb3BlIiwibWF0Y2giLCJQUkVQUk9DRVNTT1IiLCJ2YXJpYW50cyIsImJlZ2luIiwicmVsZXZhbmNlIiwiU1VCU1QiLCJlbmQiLCJTSU5HTEVfUVVPVEVEIiwiaW5oZXJpdCIsIkFQT1NfU1RSSU5HX01PREUiLCJpbGxlZ2FsIiwiRE9VQkxFX1FVT1RFRCIsIlFVT1RFX1NUUklOR19NT0RFIiwiY29udGFpbnMiLCJIRVJFRE9DIiwiRU5EX1NBTUVfQVNfQkVHSU4iLCJXSElURVNQQUNFIiwiU1RSSU5HIiwiTlVNQkVSIiwiTElURVJBTFMiLCJLV1MiLCJCVUlMVF9JTlMiLCJkdWFsQ2FzZSIsIml0ZW1zIiwicmVzdWx0IiwiZm9yRWFjaCIsIml0ZW0iLCJwdXNoIiwidG9Mb3dlckNhc2UiLCJ0b1VwcGVyQ2FzZSIsIktFWVdPUkRTIiwia2V5d29yZCIsImxpdGVyYWwiLCJidWlsdF9pbiIsIm5vcm1hbGl6ZUtleXdvcmRzIiwibWFwIiwicmVwbGFjZSIsIkNPTlNUUlVDVE9SX0NBTEwiLCJqb2luIiwiQ09OU1RBTlRfUkVGRVJFTkNFIiwiTEVGVF9BTkRfUklHSFRfU0lERV9PRl9ET1VCTEVfQ09MT04iLCJsb29rYWhlYWQiLCJOQU1FRF9BUkdVTUVOVCIsIlBBUkFNU19NT0RFIiwia2V5d29yZHMiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkZVTkNUSU9OX0lOVk9LRSIsIkFUVFJJQlVURV9DT05UQUlOUyIsIkFUVFJJQlVURVMiLCJiZWdpblNjb3BlIiwiZW5kU2NvcGUiLCJjYXNlX2luc2Vuc2l0aXZlIiwiSEFTSF9DT01NRU5UX01PREUiLCJDT01NRU5UIiwic3RhcnRzIiwiTUFUQ0hfTk9USElOR19SRSIsImVuZHNQYXJlbnQiLCJiZWdpbktleXdvcmRzIiwiZXhjbHVkZUVuZCIsIlVOREVSU0NPUkVfVElUTEVfTU9ERSIsImV4Y2x1ZGVCZWdpbiIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/php.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/plaintext.js":
/*!*************************************************************!*\
!*** ./node_modules/highlight.js/es/languages/plaintext.js ***!
\*************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ plaintext)\n/* harmony export */ });\n/*\nLanguage: Plain text\nAuthor: Egor Rogov (e.rogov@postgrespro.ru)\nDescription: Plain text without any highlighting.\nCategory: common\n*/ function plaintext(hljs) {\n return {\n name: \"Plain text\",\n aliases: [\n \"text\",\n \"txt\"\n ],\n disableAutodetect: true\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9wbGFpbnRleHQuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7OztBQUtBLEdBRUEsU0FBU0EsVUFBVUMsSUFBSTtJQUNyQixPQUFPO1FBQ0xDLE1BQU07UUFDTkMsU0FBUztZQUNQO1lBQ0E7U0FDRDtRQUNEQyxtQkFBbUI7SUFDckI7QUFDRjtBQUVnQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvcGxhaW50ZXh0LmpzP2Q5Y2UiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBQbGFpbiB0ZXh0XG5BdXRob3I6IEVnb3IgUm9nb3YgKGUucm9nb3ZAcG9zdGdyZXNwcm8ucnUpXG5EZXNjcmlwdGlvbjogUGxhaW4gdGV4dCB3aXRob3V0IGFueSBoaWdobGlnaHRpbmcuXG5DYXRlZ29yeTogY29tbW9uXG4qL1xuXG5mdW5jdGlvbiBwbGFpbnRleHQoaGxqcykge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdQbGFpbiB0ZXh0JyxcbiAgICBhbGlhc2VzOiBbXG4gICAgICAndGV4dCcsXG4gICAgICAndHh0J1xuICAgIF0sXG4gICAgZGlzYWJsZUF1dG9kZXRlY3Q6IHRydWVcbiAgfTtcbn1cblxuZXhwb3J0IHsgcGxhaW50ZXh0IGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJwbGFpbnRleHQiLCJobGpzIiwibmFtZSIsImFsaWFzZXMiLCJkaXNhYmxlQXV0b2RldGVjdCIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/plaintext.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/python-repl.js":
/*!***************************************************************!*\
!*** ./node_modules/highlight.js/es/languages/python-repl.js ***!
\***************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ pythonRepl)\n/* harmony export */ });\n/*\nLanguage: Python REPL\nRequires: python.js\nAuthor: Josh Goebel <hello@joshgoebel.com>\nCategory: common\n*/ function pythonRepl(hljs) {\n return {\n aliases: [\n \"pycon\"\n ],\n contains: [\n {\n className: \"meta.prompt\",\n starts: {\n // a space separates the REPL prefix from the actual code\n // this is purely for cleaner HTML output\n end: / |$/,\n starts: {\n end: \"$\",\n subLanguage: \"python\"\n }\n },\n variants: [\n {\n begin: /^>>>(?=[ ]|$)/\n },\n {\n begin: /^\\.\\.\\.(?=[ ]|$)/\n }\n ]\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9weXRob24tcmVwbC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7O0FBS0EsR0FFQSxTQUFTQSxXQUFXQyxJQUFJO0lBQ3RCLE9BQU87UUFDTEMsU0FBUztZQUFFO1NBQVM7UUFDcEJDLFVBQVU7WUFDUjtnQkFDRUMsV0FBVztnQkFDWEMsUUFBUTtvQkFDTix5REFBeUQ7b0JBQ3pELHlDQUF5QztvQkFDekNDLEtBQUs7b0JBQ0xELFFBQVE7d0JBQ05DLEtBQUs7d0JBQ0xDLGFBQWE7b0JBQ2Y7Z0JBQ0Y7Z0JBQ0FDLFVBQVU7b0JBQ1I7d0JBQUVDLE9BQU87b0JBQWdCO29CQUN6Qjt3QkFBRUEsT0FBTztvQkFBbUI7aUJBQzdCO1lBQ0g7U0FDRDtJQUNIO0FBQ0Y7QUFFaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL3B5dGhvbi1yZXBsLmpzPzcxNDgiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBQeXRob24gUkVQTFxuUmVxdWlyZXM6IHB5dGhvbi5qc1xuQXV0aG9yOiBKb3NoIEdvZWJlbCA8aGVsbG9Aam9zaGdvZWJlbC5jb20+XG5DYXRlZ29yeTogY29tbW9uXG4qL1xuXG5mdW5jdGlvbiBweXRob25SZXBsKGhsanMpIHtcbiAgcmV0dXJuIHtcbiAgICBhbGlhc2VzOiBbICdweWNvbicgXSxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhLnByb21wdCcsXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIC8vIGEgc3BhY2Ugc2VwYXJhdGVzIHRoZSBSRVBMIHByZWZpeCBmcm9tIHRoZSBhY3R1YWwgY29kZVxuICAgICAgICAgIC8vIHRoaXMgaXMgcHVyZWx5IGZvciBjbGVhbmVyIEhUTUwgb3V0cHV0XG4gICAgICAgICAgZW5kOiAvIHwkLyxcbiAgICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICAgIGVuZDogJyQnLFxuICAgICAgICAgICAgc3ViTGFuZ3VhZ2U6ICdweXRob24nXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46IC9ePj4+KD89WyBdfCQpLyB9LFxuICAgICAgICAgIHsgYmVnaW46IC9eXFwuXFwuXFwuKD89WyBdfCQpLyB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IHB5dGhvblJlcGwgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbInB5dGhvblJlcGwiLCJobGpzIiwiYWxpYXNlcyIsImNvbnRhaW5zIiwiY2xhc3NOYW1lIiwic3RhcnRzIiwiZW5kIiwic3ViTGFuZ3VhZ2UiLCJ2YXJpYW50cyIsImJlZ2luIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/python-repl.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/python.js":
/*!**********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/python.js ***!
\**********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ python)\n/* harmony export */ });\n/*\nLanguage: Python\nDescription: Python is an interpreted, object-oriented, high-level programming language with dynamic semantics.\nWebsite: https://www.python.org\nCategory: common\n*/ function python(hljs) {\n const regex = hljs.regex;\n const IDENT_RE = /[\\p{XID_Start}_]\\p{XID_Continue}*/u;\n const RESERVED_WORDS = [\n \"and\",\n \"as\",\n \"assert\",\n \"async\",\n \"await\",\n \"break\",\n \"case\",\n \"class\",\n \"continue\",\n \"def\",\n \"del\",\n \"elif\",\n \"else\",\n \"except\",\n \"finally\",\n \"for\",\n \"from\",\n \"global\",\n \"if\",\n \"import\",\n \"in\",\n \"is\",\n \"lambda\",\n \"match\",\n \"nonlocal|10\",\n \"not\",\n \"or\",\n \"pass\",\n \"raise\",\n \"return\",\n \"try\",\n \"while\",\n \"with\",\n \"yield\"\n ];\n const BUILT_INS = [\n \"__import__\",\n \"abs\",\n \"all\",\n \"any\",\n \"ascii\",\n \"bin\",\n \"bool\",\n \"breakpoint\",\n \"bytearray\",\n \"bytes\",\n \"callable\",\n \"chr\",\n \"classmethod\",\n \"compile\",\n \"complex\",\n \"delattr\",\n \"dict\",\n \"dir\",\n \"divmod\",\n \"enumerate\",\n \"eval\",\n \"exec\",\n \"filter\",\n \"float\",\n \"format\",\n \"frozenset\",\n \"getattr\",\n \"globals\",\n \"hasattr\",\n \"hash\",\n \"help\",\n \"hex\",\n \"id\",\n \"input\",\n \"int\",\n \"isinstance\",\n \"issubclass\",\n \"iter\",\n \"len\",\n \"list\",\n \"locals\",\n \"map\",\n \"max\",\n \"memoryview\",\n \"min\",\n \"next\",\n \"object\",\n \"oct\",\n \"open\",\n \"ord\",\n \"pow\",\n \"print\",\n \"property\",\n \"range\",\n \"repr\",\n \"reversed\",\n \"round\",\n \"set\",\n \"setattr\",\n \"slice\",\n \"sorted\",\n \"staticmethod\",\n \"str\",\n \"sum\",\n \"super\",\n \"tuple\",\n \"type\",\n \"vars\",\n \"zip\"\n ];\n const LITERALS = [\n \"__debug__\",\n \"Ellipsis\",\n \"False\",\n \"None\",\n \"NotImplemented\",\n \"True\"\n ];\n // https://docs.python.org/3/library/typing.html\n // TODO: Could these be supplemented by a CamelCase matcher in certain\n // contexts, leaving these remaining only for relevance hinting?\n const TYPES = [\n \"Any\",\n \"Callable\",\n \"Coroutine\",\n \"Dict\",\n \"List\",\n \"Literal\",\n \"Generic\",\n \"Optional\",\n \"Sequence\",\n \"Set\",\n \"Tuple\",\n \"Type\",\n \"Union\"\n ];\n const KEYWORDS = {\n $pattern: /[A-Za-z]\\w+|__\\w+__/,\n keyword: RESERVED_WORDS,\n built_in: BUILT_INS,\n literal: LITERALS,\n type: TYPES\n };\n const PROMPT = {\n className: \"meta\",\n begin: /^(>>>|\\.\\.\\.) /\n };\n const SUBST = {\n className: \"subst\",\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n const LITERAL_BRACKET = {\n begin: /\\{\\{/,\n relevance: 0\n };\n const STRING = {\n className: \"string\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ],\n variants: [\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT\n ],\n relevance: 10\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'''/,\n end: /'''/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"\"\"/,\n end: /\"\"\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n PROMPT,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([uU]|[rR])'/,\n end: /'/,\n relevance: 10\n },\n {\n begin: /([uU]|[rR])\"/,\n end: /\"/,\n relevance: 10\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])'/,\n end: /'/\n },\n {\n begin: /([bB]|[bB][rR]|[rR][bB])\"/,\n end: /\"/\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])'/,\n end: /'/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n {\n begin: /([fF][rR]|[rR][fF]|[fF])\"/,\n end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n LITERAL_BRACKET,\n SUBST\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n // https://docs.python.org/3.9/reference/lexical_analysis.html#numeric-literals\n const digitpart = \"[0-9](_?[0-9])*\";\n const pointfloat = `(\\\\b(${digitpart}))?\\\\.(${digitpart})|\\\\b(${digitpart})\\\\.`;\n // Whitespace after a number (or any lexical token) is needed only if its absence\n // would change the tokenization\n // https://docs.python.org/3.9/reference/lexical_analysis.html#whitespace-between-tokens\n // We deviate slightly, requiring a word boundary or a keyword\n // to avoid accidentally recognizing *prefixes* (e.g., `0` in `0x41` or `08` or `0__1`)\n const lookahead = `\\\\b|${RESERVED_WORDS.join(\"|\")}`;\n const NUMBER = {\n className: \"number\",\n relevance: 0,\n variants: [\n // exponentfloat, pointfloat\n // https://docs.python.org/3.9/reference/lexical_analysis.html#floating-point-literals\n // optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n // Note: no leading \\b because floats can start with a decimal point\n // and we don't want to mishandle e.g. `fn(.5)`,\n // no trailing \\b for pointfloat because it can end with a decimal point\n // and we don't want to mishandle e.g. `0..hex()`; this should be safe\n // because both MUST contain a decimal point and so cannot be confused with\n // the interior part of an identifier\n {\n begin: `(\\\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?(?=${lookahead})`\n },\n {\n begin: `(${pointfloat})[jJ]?`\n },\n // decinteger, bininteger, octinteger, hexinteger\n // https://docs.python.org/3.9/reference/lexical_analysis.html#integer-literals\n // optionally \"long\" in Python 2\n // https://docs.python.org/2.7/reference/lexical_analysis.html#integer-and-long-integer-literals\n // decinteger is optionally imaginary\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[bB](_?[01])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[oO](_?[0-7])+[lL]?(?=${lookahead})`\n },\n {\n begin: `\\\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${lookahead})`\n },\n // imagnumber (digitpart-based)\n // https://docs.python.org/3.9/reference/lexical_analysis.html#imaginary-literals\n {\n begin: `\\\\b(${digitpart})[jJ](?=${lookahead})`\n }\n ]\n };\n const COMMENT_TYPE = {\n className: \"comment\",\n begin: regex.lookahead(/# type:/),\n end: /$/,\n keywords: KEYWORDS,\n contains: [\n {\n begin: /# type:/\n },\n // comment within a datatype comment includes no keywords\n {\n begin: /#/,\n end: /\\b\\B/,\n endsWithParent: true\n }\n ]\n };\n const PARAMS = {\n className: \"params\",\n variants: [\n // Exclude params in functions without params\n {\n className: \"\",\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n \"self\",\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE\n ]\n }\n ]\n };\n SUBST.contains = [\n STRING,\n NUMBER,\n PROMPT\n ];\n return {\n name: \"Python\",\n aliases: [\n \"py\",\n \"gyp\",\n \"ipython\"\n ],\n unicodeRegex: true,\n keywords: KEYWORDS,\n illegal: /(<\\/|->|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n {\n // very common convention\n begin: /\\bself\\b/\n },\n {\n // eat \"if\" prior to string so that it won't accidentally be\n // labeled as an f-string\n beginKeywords: \"if\",\n relevance: 0\n },\n STRING,\n COMMENT_TYPE,\n hljs.HASH_COMMENT_MODE,\n {\n match: [\n /\\bdef/,\n /\\s+/,\n IDENT_RE\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n },\n {\n variants: [\n {\n match: [\n /\\bclass/,\n /\\s+/,\n IDENT_RE,\n /\\s*/,\n /\\(\\s*/,\n IDENT_RE,\n /\\s*\\)/\n ]\n },\n {\n match: [\n /\\bclass/,\n /\\s+/,\n IDENT_RE\n ]\n }\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 6: \"title.class.inherited\"\n }\n },\n {\n className: \"meta\",\n begin: /^[\\t ]*@/,\n end: /(?=#)|$/,\n contains: [\n NUMBER,\n PARAMS,\n STRING\n ]\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9weXRob24uanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7OztBQUtBLEdBRUEsU0FBU0EsT0FBT0MsSUFBSTtJQUNsQixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLE1BQU1DLFdBQVc7SUFDakIsTUFBTUMsaUJBQWlCO1FBQ3JCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxNQUFNQyxZQUFZO1FBQ2hCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsTUFBTUMsV0FBVztRQUNmO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsZ0RBQWdEO0lBQ2hELHNFQUFzRTtJQUN0RSxnRUFBZ0U7SUFDaEUsTUFBTUMsUUFBUTtRQUNaO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7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LHlCQUF5QjtnQkFDekJqQixPQUFPO1lBQ1Q7WUFDQTtnQkFDRSw0REFBNEQ7Z0JBQzVELHlCQUF5QjtnQkFDekI0QixlQUFlO2dCQUNmdEIsV0FBVztZQUNiO1lBQ0FDO1lBQ0FXO1lBQ0FqQyxLQUFLdUMsaUJBQWlCO1lBQ3RCO2dCQUNFSyxPQUFPO29CQUNMO29CQUFTO29CQUNUMUM7aUJBQ0Q7Z0JBQ0QyQyxPQUFPO29CQUNMLEdBQUc7b0JBQ0gsR0FBRztnQkFDTDtnQkFDQXRCLFVBQVU7b0JBQUVZO2lCQUFRO1lBQ3RCO1lBQ0E7Z0JBQ0VWLFVBQVU7b0JBQ1I7d0JBQ0VtQixPQUFPOzRCQUNMOzRCQUFXOzRCQUNYMUM7NEJBQVU7NEJBQ1Y7NEJBQVNBOzRCQUFTO3lCQUNuQjtvQkFDSDtvQkFDQTt3QkFDRTBDLE9BQU87NEJBQ0w7NEJBQVc7NEJBQ1gxQzt5QkFDRDtvQkFDSDtpQkFDRDtnQkFDRDJDLE9BQU87b0JBQ0wsR0FBRztvQkFDSCxHQUFHO29CQUNILEdBQUc7Z0JBQ0w7WUFDRjtZQUNBO2dCQUNFL0IsV0FBVztnQkFDWEMsT0FBTztnQkFDUEUsS0FBSztnQkFDTE0sVUFBVTtvQkFDUlM7b0JBQ0FHO29CQUNBYjtpQkFDRDtZQUNIO1NBQ0Q7SUFDSDtBQUNGO0FBRTZCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9weXRob24uanM/NWFhMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IFB5dGhvblxuRGVzY3JpcHRpb246IFB5dGhvbiBpcyBhbiBpbnRlcnByZXRlZCwgb2JqZWN0LW9yaWVudGVkLCBoaWdoLWxldmVsIHByb2dyYW1taW5nIGxhbmd1YWdlIHdpdGggZHluYW1pYyBzZW1hbnRpY3MuXG5XZWJzaXRlOiBodHRwczovL3d3dy5weXRob24ub3JnXG5DYXRlZ29yeTogY29tbW9uXG4qL1xuXG5mdW5jdGlvbiBweXRob24oaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IElERU5UX1JFID0gL1tcXHB7WElEX1N0YXJ0fV9dXFxwe1hJRF9Db250aW51ZX0qL3U7XG4gIGNvbnN0IFJFU0VSVkVEX1dPUkRTID0gW1xuICAgICdhbmQnLFxuICAgICdhcycsXG4gICAgJ2Fzc2VydCcsXG4gICAgJ2FzeW5jJyxcbiAgICAnYXdhaXQnLFxuICAgICdicmVhaycsXG4gICAgJ2Nhc2UnLFxuICAgICdjbGFzcycsXG4gICAgJ2NvbnRpbnVlJyxcbiAgICAnZGVmJyxcbiAgICAnZGVsJyxcbiAgICAnZWxpZicsXG4gICAgJ2Vsc2UnLFxuICAgICdleGNlcHQnLFxuICAgICdmaW5hbGx5JyxcbiAgICAnZm9yJyxcbiAgICAnZnJvbScsXG4gICAgJ2dsb2JhbCcsXG4gICAgJ2lmJyxcbiAgICAnaW1wb3J0JyxcbiAgICAnaW4nLFxuICAgICdpcycsXG4gICAgJ2xhbWJkYScsXG4gICAgJ21hdGNoJyxcbiAgICAnbm9ubG9jYWx8MTAnLFxuICAgICdub3QnLFxuICAgICdvcicsXG4gICAgJ3Bhc3MnLFxuICAgICdyYWlzZScsXG4gICAgJ3JldHVybicsXG4gICAgJ3RyeScsXG4gICAgJ3doaWxlJyxcbiAgICAnd2l0aCcsXG4gICAgJ3lpZWxkJ1xuICBdO1xuXG4gIGNvbnN0IEJVSUxUX0lOUyA9IFtcbiAgICAnX19pbXBvcnRfXycsXG4gICAgJ2FicycsXG4gICAgJ2FsbCcsXG4gICAgJ2FueScsXG4gICAgJ2FzY2lpJyxcbiAgICAnYmluJyxcbiAgICAnYm9vbCcsXG4gICAgJ2JyZWFrcG9pbnQnLFxuICAgICdieXRlYXJyYXknLFxuICAgICdieXRlcycsXG4gICAgJ2NhbGxhYmxlJyxcbiAgICAnY2hyJyxcbiAgICAnY2xhc3NtZXRob2QnLFxuICAgICdjb21waWxlJyxcbiAgICAnY29tcGxleCcsXG4gICAgJ2RlbGF0dHInLFxuICAgICdkaWN0JyxcbiAgICAnZGlyJyxcbiAgICAnZGl2bW9kJyxcbiAgICAnZW51bWVyYXRlJyxcbiAgICAnZXZhbCcsXG4gICAgJ2V4ZWMnLFxuICAgICdmaWx0ZXInLFxuICAgICdmbG9hdCcsXG4gICAgJ2Zvcm1hdCcsXG4gICAgJ2Zyb3plbnNldCcsXG4gICAgJ2dldGF0dHInLFxuICAgICdnbG9iYWxzJyxcbiAgICAnaGFzYXR0cicsXG4gICAgJ2hhc2gnLFxuICAgICdoZWxwJyxcbiAgICAnaGV4JyxcbiAgICAnaWQnLFxuICAgICdpbnB1dCcsXG4gICAgJ2ludCcsXG4gICAgJ2lzaW5zdGFuY2UnLFxuICAgICdpc3N1YmNsYXNzJyxcbiAgICAnaXRlcicsXG4gICAgJ2xlbicsXG4gICAgJ2xpc3QnLFxuICAgICdsb2NhbHMnLFxuICAgICdtYXAnLFxuICAgICdtYXgnLFxuICAgICdtZW1vcnl2aWV3JyxcbiAgICAnbWluJyxcbiAgICAnbmV4dCcsXG4gICAgJ29iamVjdCcsXG4gICAgJ29jdCcsXG4gICAgJ29wZW4nLFxuICAgICdvcmQnLFxuICAgICdwb3cnLFxuICAgICdwcmludCcsXG4gICAgJ3Byb3BlcnR5JyxcbiAgICAncmFuZ2UnLFxuICAgICdyZXByJyxcbiAgICAncmV2ZXJzZWQnLFxuICAgICdyb3VuZCcsXG4gICAgJ3NldCcsXG4gICAgJ3NldGF0dHInLFxuICAgICdzbGljZScsXG4gICAgJ3NvcnRlZCcsXG4gICAgJ3N0YXRpY21ldGhvZCcsXG4gICAgJ3N0cicsXG4gICAgJ3N1bScsXG4gICAgJ3N1cGVyJyxcbiAgICAndHVwbGUnLFxuICAgICd0eXBlJyxcbiAgICAndmFycycsXG4gICAgJ3ppcCdcbiAgXTtcblxuICBjb25zdCBMSVRFUkFMUyA9IFtcbiAgICAnX19kZWJ1Z19fJyxcbiAgICAnRWxsaXBzaXMnLFxuICAgICdGYWxzZScsXG4gICAgJ05vbmUnLFxuICAgICdOb3RJbXBsZW1lbnRlZCcsXG4gICAgJ1RydWUnXG4gIF07XG5cbiAgLy8gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3R5cGluZy5odG1sXG4gIC8vIFRPRE86IENvdWxkIHRoZXNlIGJlIHN1cHBsZW1lbnRlZCBieSBhIENhbWVsQ2FzZSBtYXRjaGVyIGluIGNlcnRhaW5cbiAgLy8gY29udGV4dHMsIGxlYXZpbmcgdGhlc2UgcmVtYWluaW5nIG9ubHkgZm9yIHJlbGV2YW5jZSBoaW50aW5nP1xuICBjb25zdCBUWVBFUyA9IFtcbiAgICBcIkFueVwiLFxuICAgIFwiQ2FsbGFibGVcIixcbiAgICBcIkNvcm91dGluZVwiLFxuICAgIFwiRGljdFwiLFxuICAgIFwiTGlzdFwiLFxuICAgIFwiTGl0ZXJhbFwiLFxuICAgIFwiR2VuZXJpY1wiLFxuICAgIFwiT3B0aW9uYWxcIixcbiAgICBcIlNlcXVlbmNlXCIsXG4gICAgXCJTZXRcIixcbiAgICBcIlR1cGxlXCIsXG4gICAgXCJUeXBlXCIsXG4gICAgXCJVbmlvblwiXG4gIF07XG5cbiAgY29uc3QgS0VZV09SRFMgPSB7XG4gICAgJHBhdHRlcm46IC9bQS1aYS16XVxcdyt8X19cXHcrX18vLFxuICAgIGtleXdvcmQ6IFJFU0VSVkVEX1dPUkRTLFxuICAgIGJ1aWx0X2luOiBCVUlMVF9JTlMsXG4gICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgdHlwZTogVFlQRVNcbiAgfTtcblxuICBjb25zdCBQUk9NUFQgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgYmVnaW46IC9eKD4+PnxcXC5cXC5cXC4pIC9cbiAgfTtcblxuICBjb25zdCBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46IC9cXHsvLFxuICAgIGVuZDogL1xcfS8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC8jL1xuICB9O1xuXG4gIGNvbnN0IExJVEVSQUxfQlJBQ0tFVCA9IHtcbiAgICBiZWdpbjogL1xce1xcey8sXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgY29udGFpbnM6IFsgaGxqcy5CQUNLU0xBU0hfRVNDQVBFIF0sXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oW3VVXXxbYkJdfFtyUl18W2JCXVtyUl18W3JSXVtiQl0pPycnJy8sXG4gICAgICAgIGVuZDogLycnJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIFBST01QVFxuICAgICAgICBdLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhbdVVdfFtiQl18W3JSXXxbYkJdW3JSXXxbclJdW2JCXSk/XCJcIlwiLyxcbiAgICAgICAgZW5kOiAvXCJcIlwiLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAgUFJPTVBUXG4gICAgICAgIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMTBcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvKFtmRl1bclJdfFtyUl1bZkZdfFtmRl0pJycnLyxcbiAgICAgICAgZW5kOiAvJycnLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAgUFJPTVBULFxuICAgICAgICAgIExJVEVSQUxfQlJBQ0tFVCxcbiAgICAgICAgICBTVUJTVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhbZkZdW3JSXXxbclJdW2ZGXXxbZkZdKVwiXCJcIi8sXG4gICAgICAgIGVuZDogL1wiXCJcIi8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIFBST01QVCxcbiAgICAgICAgICBMSVRFUkFMX0JSQUNLRVQsXG4gICAgICAgICAgU1VCU1RcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oW3VVXXxbclJdKScvLFxuICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oW3VVXXxbclJdKVwiLyxcbiAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICByZWxldmFuY2U6IDEwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhbYkJdfFtiQl1bclJdfFtyUl1bYkJdKScvLFxuICAgICAgICBlbmQ6IC8nL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oW2JCXXxbYkJdW3JSXXxbclJdW2JCXSlcIi8sXG4gICAgICAgIGVuZDogL1wiL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8oW2ZGXVtyUl18W3JSXVtmRl18W2ZGXSknLyxcbiAgICAgICAgZW5kOiAvJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgIExJVEVSQUxfQlJBQ0tFVCxcbiAgICAgICAgICBTVUJTVFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyhbZkZdW3JSXXxbclJdW2ZGXXxbZkZdKVwiLyxcbiAgICAgICAgZW5kOiAvXCIvLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgICBMSVRFUkFMX0JSQUNLRVQsXG4gICAgICAgICAgU1VCU1RcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREVcbiAgICBdXG4gIH07XG5cbiAgLy8gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy45L3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLmh0bWwjbnVtZXJpYy1saXRlcmFsc1xuICBjb25zdCBkaWdpdHBhcnQgPSAnWzAtOV0oXz9bMC05XSkqJztcbiAgY29uc3QgcG9pbnRmbG9hdCA9IGAoXFxcXGIoJHtkaWdpdHBhcnR9KSk/XFxcXC4oJHtkaWdpdHBhcnR9KXxcXFxcYigke2RpZ2l0cGFydH0pXFxcXC5gO1xuICAvLyBXaGl0ZXNwYWNlIGFmdGVyIGEgbnVtYmVyIChvciBhbnkgbGV4aWNhbCB0b2tlbikgaXMgbmVlZGVkIG9ubHkgaWYgaXRzIGFic2VuY2VcbiAgLy8gd291bGQgY2hhbmdlIHRoZSB0b2tlbml6YXRpb25cbiAgLy8gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy45L3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLmh0bWwjd2hpdGVzcGFjZS1iZXR3ZWVuLXRva2Vuc1xuICAvLyBXZSBkZXZpYXRlIHNsaWdodGx5LCByZXF1aXJpbmcgYSB3b3JkIGJvdW5kYXJ5IG9yIGEga2V5d29yZFxuICAvLyB0byBhdm9pZCBhY2NpZGVudGFsbHkgcmVjb2duaXppbmcgKnByZWZpeGVzKiAoZS5nLiwgYDBgIGluIGAweDQxYCBvciBgMDhgIG9yIGAwX18xYClcbiAgY29uc3QgbG9va2FoZWFkID0gYFxcXFxifCR7UkVTRVJWRURfV09SRFMuam9pbignfCcpfWA7XG4gIGNvbnN0IE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICB2YXJpYW50czogW1xuICAgICAgLy8gZXhwb25lbnRmbG9hdCwgcG9pbnRmbG9hdFxuICAgICAgLy8gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy45L3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLmh0bWwjZmxvYXRpbmctcG9pbnQtbGl0ZXJhbHNcbiAgICAgIC8vIG9wdGlvbmFsbHkgaW1hZ2luYXJ5XG4gICAgICAvLyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjkvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMuaHRtbCNpbWFnaW5hcnktbGl0ZXJhbHNcbiAgICAgIC8vIE5vdGU6IG5vIGxlYWRpbmcgXFxiIGJlY2F1c2UgZmxvYXRzIGNhbiBzdGFydCB3aXRoIGEgZGVjaW1hbCBwb2ludFxuICAgICAgLy8gYW5kIHdlIGRvbid0IHdhbnQgdG8gbWlzaGFuZGxlIGUuZy4gYGZuKC41KWAsXG4gICAgICAvLyBubyB0cmFpbGluZyBcXGIgZm9yIHBvaW50ZmxvYXQgYmVjYXVzZSBpdCBjYW4gZW5kIHdpdGggYSBkZWNpbWFsIHBvaW50XG4gICAgICAvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBtaXNoYW5kbGUgZS5nLiBgMC4uaGV4KClgOyB0aGlzIHNob3VsZCBiZSBzYWZlXG4gICAgICAvLyBiZWNhdXNlIGJvdGggTVVTVCBjb250YWluIGEgZGVjaW1hbCBwb2ludCBhbmQgc28gY2Fubm90IGJlIGNvbmZ1c2VkIHdpdGhcbiAgICAgIC8vIHRoZSBpbnRlcmlvciBwYXJ0IG9mIGFuIGlkZW50aWZpZXJcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGAoXFxcXGIoJHtkaWdpdHBhcnR9KXwoJHtwb2ludGZsb2F0fSkpW2VFXVsrLV0/KCR7ZGlnaXRwYXJ0fSlbakpdPyg/PSR7bG9va2FoZWFkfSlgXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogYCgke3BvaW50ZmxvYXR9KVtqSl0/YFxuICAgICAgfSxcblxuICAgICAgLy8gZGVjaW50ZWdlciwgYmluaW50ZWdlciwgb2N0aW50ZWdlciwgaGV4aW50ZWdlclxuICAgICAgLy8gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy45L3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLmh0bWwjaW50ZWdlci1saXRlcmFsc1xuICAgICAgLy8gb3B0aW9uYWxseSBcImxvbmdcIiBpbiBQeXRob24gMlxuICAgICAgLy8gaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMi43L3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLmh0bWwjaW50ZWdlci1hbmQtbG9uZy1pbnRlZ2VyLWxpdGVyYWxzXG4gICAgICAvLyBkZWNpbnRlZ2VyIGlzIG9wdGlvbmFsbHkgaW1hZ2luYXJ5XG4gICAgICAvLyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjkvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMuaHRtbCNpbWFnaW5hcnktbGl0ZXJhbHNcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGBcXFxcYihbMS05XShfP1swLTldKSp8MCsoXz8wKSopW2xMakpdPyg/PSR7bG9va2FoZWFkfSlgXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogYFxcXFxiMFtiQl0oXz9bMDFdKStbbExdPyg/PSR7bG9va2FoZWFkfSlgXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogYFxcXFxiMFtvT10oXz9bMC03XSkrW2xMXT8oPz0ke2xvb2thaGVhZH0pYFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IGBcXFxcYjBbeFhdKF8/WzAtOWEtZkEtRl0pK1tsTF0/KD89JHtsb29rYWhlYWR9KWBcbiAgICAgIH0sXG5cbiAgICAgIC8vIGltYWdudW1iZXIgKGRpZ2l0cGFydC1iYXNlZClcbiAgICAgIC8vIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuOS9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5odG1sI2ltYWdpbmFyeS1saXRlcmFsc1xuICAgICAge1xuICAgICAgICBiZWdpbjogYFxcXFxiKCR7ZGlnaXRwYXJ0fSlbakpdKD89JHtsb29rYWhlYWR9KWBcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGNvbnN0IENPTU1FTlRfVFlQRSA9IHtcbiAgICBjbGFzc05hbWU6IFwiY29tbWVudFwiLFxuICAgIGJlZ2luOiByZWdleC5sb29rYWhlYWQoLyMgdHlwZTovKSxcbiAgICBlbmQ6IC8kLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHsgLy8gcHJldmVudCBrZXl3b3JkcyBmcm9tIGNvbG9yaW5nIGB0eXBlYFxuICAgICAgICBiZWdpbjogLyMgdHlwZTovXG4gICAgICB9LFxuICAgICAgLy8gY29tbWVudCB3aXRoaW4gYSBkYXRhdHlwZSBjb21tZW50IGluY2x1ZGVzIG5vIGtleXdvcmRzXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvIy8sXG4gICAgICAgIGVuZDogL1xcYlxcQi8sXG4gICAgICAgIGVuZHNXaXRoUGFyZW50OiB0cnVlXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBjb25zdCBQQVJBTVMgPSB7XG4gICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgLy8gRXhjbHVkZSBwYXJhbXMgaW4gZnVuY3Rpb25zIHdpdGhvdXQgcGFyYW1zXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIixcbiAgICAgICAgYmVnaW46IC9cXChcXHMqXFwpLyxcbiAgICAgICAgc2tpcDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgUFJPTVBULFxuICAgICAgICAgIE5VTUJFUixcbiAgICAgICAgICBTVFJJTkcsXG4gICAgICAgICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBTVUJTVC5jb250YWlucyA9IFtcbiAgICBTVFJJTkcsXG4gICAgTlVNQkVSLFxuICAgIFBST01QVFxuICBdO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1B5dGhvbicsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ3B5JyxcbiAgICAgICdneXAnLFxuICAgICAgJ2lweXRob24nXG4gICAgXSxcbiAgICB1bmljb2RlUmVnZXg6IHRydWUsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGlsbGVnYWw6IC8oPFxcL3wtPnxcXD8pfD0+LyxcbiAgICBjb250YWluczogW1xuICAgICAgUFJPTVBULFxuICAgICAgTlVNQkVSLFxuICAgICAge1xuICAgICAgICAvLyB2ZXJ5IGNvbW1vbiBjb252ZW50aW9uXG4gICAgICAgIGJlZ2luOiAvXFxic2VsZlxcYi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGVhdCBcImlmXCIgcHJpb3IgdG8gc3RyaW5nIHNvIHRoYXQgaXQgd29uJ3QgYWNjaWRlbnRhbGx5IGJlXG4gICAgICAgIC8vIGxhYmVsZWQgYXMgYW4gZi1zdHJpbmdcbiAgICAgICAgYmVnaW5LZXl3b3JkczogXCJpZlwiLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBTVFJJTkcsXG4gICAgICBDT01NRU5UX1RZUEUsXG4gICAgICBobGpzLkhBU0hfQ09NTUVOVF9NT0RFLFxuICAgICAge1xuICAgICAgICBtYXRjaDogW1xuICAgICAgICAgIC9cXGJkZWYvLCAvXFxzKy8sXG4gICAgICAgICAgSURFTlRfUkUsXG4gICAgICAgIF0sXG4gICAgICAgIHNjb3BlOiB7XG4gICAgICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAgICAgMzogXCJ0aXRsZS5mdW5jdGlvblwiXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbIFBBUkFNUyBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgICAgIC9cXGJjbGFzcy8sIC9cXHMrLyxcbiAgICAgICAgICAgICAgSURFTlRfUkUsIC9cXHMqLyxcbiAgICAgICAgICAgICAgL1xcKFxccyovLCBJREVOVF9SRSwvXFxzKlxcKS9cbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtYXRjaDogW1xuICAgICAgICAgICAgICAvXFxiY2xhc3MvLCAvXFxzKy8sXG4gICAgICAgICAgICAgIElERU5UX1JFXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgICAgICAzOiBcInRpdGxlLmNsYXNzXCIsXG4gICAgICAgICAgNjogXCJ0aXRsZS5jbGFzcy5pbmhlcml0ZWRcIixcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAvXltcXHQgXSpALyxcbiAgICAgICAgZW5kOiAvKD89Iyl8JC8sXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgTlVNQkVSLFxuICAgICAgICAgIFBBUkFNUyxcbiAgICAgICAgICBTVFJJTkdcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn1cblxuZXhwb3J0IHsgcHl0aG9uIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJweXRob24iLCJobGpzIiwicmVnZXgiLCJJREVOVF9SRSIsIlJFU0VSVkVEX1dPUkRTIiwiQlVJTFRfSU5TIiwiTElURVJBTFMiLCJUWVBFUyIsIktFWVdPUkRTIiwiJHBhdHRlcm4iLCJrZXl3b3JkIiwiYnVpbHRfaW4iLCJsaXRlcmFsIiwidHlwZSIsIlBST01QVCIsImNsYXNzTmFtZSIsImJlZ2luIiwiU1VCU1QiLCJlbmQiLCJrZXl3b3JkcyIsImlsbGVnYWwiLCJMSVRFUkFMX0JSQUNLRVQiLCJyZWxldmFuY2UiLCJTVFJJTkciLCJjb250YWlucyIsIkJBQ0tTTEFTSF9FU0NBUEUiLCJ2YXJpYW50cyIsIkFQT1NfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsImRpZ2l0cGFydCIsInBvaW50ZmxvYXQiLCJsb29rYWhlYWQiLCJqb2luIiwiTlVNQkVSIiwiQ09NTUVOVF9UWVBFIiwiZW5kc1dpdGhQYXJlbnQiLCJQQVJBTVMiLCJza2lwIiwiZXhjbHVkZUJlZ2luIiwiZXhjbHVkZUVuZCIsIkhBU0hfQ09NTUVOVF9NT0RFIiwibmFtZSIsImFsaWFzZXMiLCJ1bmljb2RlUmVnZXgiLCJiZWdpbktleXdvcmRzIiwibWF0Y2giLCJzY29wZSIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/python.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/r.js":
/*!*****************************************************!*\
!*** ./node_modules/highlight.js/es/languages/r.js ***!
\*****************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ r)\n/* harmony export */ });\n/*\nLanguage: R\nDescription: R is a free software environment for statistical computing and graphics.\nAuthor: Joe Cheng <joe@rstudio.org>\nContributors: Konrad Rudolph <konrad.rudolph@gmail.com>\nWebsite: https://www.r-project.org\nCategory: common,scientific\n*/ /** @type LanguageFn */ function r(hljs) {\n const regex = hljs.regex;\n // Identifiers in R cannot start with `_`, but they can start with `.` if it\n // is not immediately followed by a digit.\n // R also supports quoted identifiers, which are near-arbitrary sequences\n // delimited by backticks (`…`), which may contain escape sequences. These are\n // handled in a separate mode. See `test/markup/r/names.txt` for examples.\n // FIXME: Support Unicode identifiers.\n const IDENT_RE = /(?:(?:[a-zA-Z]|\\.[._a-zA-Z])[._a-zA-Z0-9]*)|\\.(?!\\d)/;\n const NUMBER_TYPES_RE = regex.either(// Special case: only hexadecimal binary powers can contain fractions\n /0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/, // Hexadecimal numbers without fraction and optional binary power\n /0[xX][0-9a-fA-F]+(?:[pP][+-]?\\d+)?[Li]?/, // Decimal numbers\n /(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?[Li]?/);\n const OPERATORS_RE = /[=!<>:]=|\\|\\||&&|:::?|<-|<<-|->>|->|\\|>|[-+*\\/?!$&|:<=>@^~]|\\*\\*/;\n const PUNCTUATION_RE = regex.either(/[()]/, /[{}]/, /\\[\\[/, /[[\\]]/, /\\\\/, /,/);\n return {\n name: \"R\",\n keywords: {\n $pattern: IDENT_RE,\n keyword: \"function if in break next repeat else for while\",\n literal: \"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 \" + \"NA_character_|10 NA_complex_|10\",\n built_in: // Builtin constants\n \"LETTERS letters month.abb month.name pi T F \" + \"abs acos acosh all any anyNA Arg as.call as.character \" + \"as.complex as.double as.environment as.integer as.logical \" + \"as.null.default as.numeric as.raw asin asinh atan atanh attr \" + \"attributes baseenv browser c call ceiling class Conj cos cosh \" + \"cospi cummax cummin cumprod cumsum digamma dim dimnames \" + \"emptyenv exp expression floor forceAndCall gamma gc.time \" + \"globalenv Im interactive invisible is.array is.atomic is.call \" + \"is.character is.complex is.double is.environment is.expression \" + \"is.finite is.function is.infinite is.integer is.language \" + \"is.list is.logical is.matrix is.na is.name is.nan is.null \" + \"is.numeric is.object is.pairlist is.raw is.recursive is.single \" + \"is.symbol lazyLoadDBfetch length lgamma list log max min \" + \"missing Mod names nargs nzchar oldClass on.exit pos.to.env \" + \"proc.time prod quote range Re rep retracemem return round \" + \"seq_along seq_len seq.int sign signif sin sinh sinpi sqrt \" + \"standardGeneric substitute sum switch tan tanh tanpi tracemem \" + \"trigamma trunc unclass untracemem UseMethod xtfrm\"\n },\n contains: [\n // Roxygen comments\n hljs.COMMENT(/#'/, /$/, {\n contains: [\n {\n // Handle `@examples` separately to cause all subsequent code\n // until the next `@`-tag on its own line to be kept as-is,\n // preventing highlighting. This code is example R code, so nested\n // doctags shouldnt be treated as such. See\n // `test/markup/r/roxygen.txt` for an example.\n scope: \"doctag\",\n match: /@examples/,\n starts: {\n end: regex.lookahead(regex.either(// end if another doc comment\n /\\n^#'\\s*(?=@[a-zA-Z]+)/, // or a line with no comment\n /\\n^(?!#')/)),\n endsParent: true\n }\n },\n {\n // Handle `@param` to highlight the parameter name following\n // after.\n scope: \"doctag\",\n begin: \"@param\",\n end: /$/,\n contains: [\n {\n scope: \"variable\",\n variants: [\n {\n match: IDENT_RE\n },\n {\n match: /`(?:\\\\.|[^`\\\\])+`/\n }\n ],\n endsParent: true\n }\n ]\n },\n {\n scope: \"doctag\",\n match: /@[a-zA-Z]+/\n },\n {\n scope: \"keyword\",\n match: /\\\\[a-zA-Z]+/\n }\n ]\n }),\n hljs.HASH_COMMENT_MODE,\n {\n scope: \"string\",\n contains: [\n hljs.BACKSLASH_ESCAPE\n ],\n variants: [\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\(/,\n end: /\\)(-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\{/,\n end: /\\}(-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]\"(-*)\\[/,\n end: /\\](-*)\"/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\(/,\n end: /\\)(-*)'/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\{/,\n end: /\\}(-*)'/\n }),\n hljs.END_SAME_AS_BEGIN({\n begin: /[rR]'(-*)\\[/,\n end: /\\](-*)'/\n }),\n {\n begin: '\"',\n end: '\"',\n relevance: 0\n },\n {\n begin: \"'\",\n end: \"'\",\n relevance: 0\n }\n ]\n },\n // Matching numbers immediately following punctuation and operators is\n // tricky since we need to look at the character ahead of a number to\n // ensure the number is not part of an identifier, and we cannot use\n // negative look-behind assertions. So instead we explicitly handle all\n // possible combinations of (operator|punctuation), number.\n // TODO: replace with negative look-behind when available\n // { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+\\.[0-9a-fA-F]*[pP][+-]?\\d+i?/ },\n // { begin: /(?<![a-zA-Z0-9._])0[xX][0-9a-fA-F]+([pP][+-]?\\d+)?[Li]?/ },\n // { begin: /(?<![a-zA-Z0-9._])(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?[Li]?/ }\n {\n relevance: 0,\n variants: [\n {\n scope: {\n 1: \"operator\",\n 2: \"number\"\n },\n match: [\n OPERATORS_RE,\n NUMBER_TYPES_RE\n ]\n },\n {\n scope: {\n 1: \"operator\",\n 2: \"number\"\n },\n match: [\n /%[^%]*%/,\n NUMBER_TYPES_RE\n ]\n },\n {\n scope: {\n 1: \"punctuation\",\n 2: \"number\"\n },\n match: [\n PUNCTUATION_RE,\n NUMBER_TYPES_RE\n ]\n },\n {\n scope: {\n 2: \"number\"\n },\n match: [\n /[^a-zA-Z0-9._]|^/,\n NUMBER_TYPES_RE\n ]\n }\n ]\n },\n // Operators/punctuation when they're not directly followed by numbers\n {\n // Relevance boost for the most common assignment form.\n scope: {\n 3: \"operator\"\n },\n match: [\n IDENT_RE,\n /\\s+/,\n /<-/,\n /\\s+/\n ]\n },\n {\n scope: \"operator\",\n relevance: 0,\n variants: [\n {\n match: OPERATORS_RE\n },\n {\n match: /%[^%]*%/\n }\n ]\n },\n {\n scope: \"punctuation\",\n relevance: 0,\n match: PUNCTUATION_RE\n },\n {\n // Escaped identifier\n begin: \"`\",\n end: \"`\",\n contains: [\n {\n begin: /\\\\./\n }\n ]\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7OztBQU9BLEdBRUEscUJBQXFCLEdBQ3JCLFNBQVNBLEVBQUVDLElBQUk7SUFDYixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLDRFQUE0RTtJQUM1RSwwQ0FBMEM7SUFDMUMseUVBQXlFO0lBQ3pFLDhFQUE4RTtJQUM5RSwwRUFBMEU7SUFDMUUsc0NBQXNDO0lBQ3RDLE1BQU1DLFdBQVc7SUFDakIsTUFBTUMsa0JBQWtCRixNQUFNRyxNQUFNLENBQ2xDLHFFQUFxRTtJQUNyRSxpREFDQSxpRUFBaUU7SUFDakUsMkNBQ0Esa0JBQWtCO0lBQ2xCO0lBRUYsTUFBTUMsZUFBZTtJQUNyQixNQUFNQyxpQkFBaUJMLE1BQU1HLE1BQU0sQ0FDakMsUUFDQSxRQUNBLFFBQ0EsU0FDQSxNQUNBO0lBR0YsT0FBTztRQUNMRyxNQUFNO1FBRU5DLFVBQVU7WUFDUkMsVUFBVVA7WUFDVlEsU0FDRTtZQUNGQyxTQUNFLDJEQUNFO1lBQ0pDLFVBQ0Usb0JBQW9CO1lBQ3BCLGlEQUlFLDJEQUNBLCtEQUNBLGtFQUNBLG1FQUNBLDZEQUNBLDhEQUNBLG1FQUNBLG9FQUNBLDhEQUNBLCtEQUNBLG9FQUNBLDhEQUNBLGdFQUNBLCtEQUNBLCtEQUNBLG1FQUNBO1FBQ047UUFFQUMsVUFBVTtZQUNSLG1CQUFtQjtZQUNuQmIsS0FBS2MsT0FBTyxDQUNWLE1BQ0EsS0FDQTtnQkFBRUQsVUFBVTtvQkFDVjt3QkFDRSw2REFBNkQ7d0JBQzdELDJEQUEyRDt3QkFDM0Qsa0VBQWtFO3dCQUNsRSw0Q0FBNEM7d0JBQzVDLDhDQUE4Qzt3QkFDOUNFLE9BQU87d0JBQ1BDLE9BQU87d0JBQ1BDLFFBQVE7NEJBQ05DLEtBQUtqQixNQUFNa0IsU0FBUyxDQUFDbEIsTUFBTUcsTUFBTSxDQUMvQiw2QkFBNkI7NEJBQzdCLDBCQUNBLDRCQUE0Qjs0QkFDNUI7NEJBRUZnQixZQUFZO3dCQUNkO29CQUNGO29CQUNBO3dCQUNFLDREQUE0RDt3QkFDNUQsU0FBUzt3QkFDVEwsT0FBTzt3QkFDUE0sT0FBTzt3QkFDUEgsS0FBSzt3QkFDTEwsVUFBVTs0QkFDUjtnQ0FDRUUsT0FBTztnQ0FDUE8sVUFBVTtvQ0FDUjt3Q0FBRU4sT0FBT2Q7b0NBQVM7b0NBQ2xCO3dDQUFFYyxPQUFPO29DQUFvQjtpQ0FDOUI7Z0NBQ0RJLFlBQVk7NEJBQ2Q7eUJBQ0Q7b0JBQ0g7b0JBQ0E7d0JBQ0VMLE9BQU87d0JBQ1BDLE9BQU87b0JBQ1Q7b0JBQ0E7d0JBQ0VELE9BQU87d0JBQ1BDLE9BQU87b0JBQ1Q7aUJBQ0Q7WUFBQztZQUdKaEIsS0FBS3VCLGlCQUFpQjtZQUV0QjtnQkFDRVIsT0FBTztnQkFDUEYsVUFBVTtvQkFBRWIsS0FBS3dCLGdCQUFnQjtpQkFBRTtnQkFDbkNGLFVBQVU7b0JBQ1J0QixLQUFLeUIsaUJBQWlCLENBQUM7d0JBQ3JCSixPQUFPO3dCQUNQSCxLQUFLO29CQUNQO29CQUNBbEIsS0FBS3lCLGlCQUFpQixDQUFDO3dCQUNyQkosT0FBTzt3QkFDUEgsS0FBSztvQkFDUDtvQkFDQWxCLEtBQUt5QixpQkFBaUIsQ0FBQzt3QkFDckJKLE9BQU87d0JBQ1BILEtBQUs7b0JBQ1A7b0JBQ0FsQixLQUFLeUIsaUJBQWlCLENBQUM7d0JBQ3JCSixPQUFPO3dCQUNQSCxLQUFLO29CQUNQO29CQUNBbEIsS0FBS3lCLGlCQUFpQixDQUFDO3dCQUNyQkosT0FBTzt3QkFDUEgsS0FBSztvQkFDUDtvQkFDQWxCLEtBQUt5QixpQkFBaUIsQ0FBQzt3QkFDckJKLE9BQU87d0JBQ1BILEtBQUs7b0JBQ1A7b0JBQ0E7d0JBQ0VHLE9BQU87d0JBQ1BILEtBQUs7d0JBQ0xRLFdBQVc7b0JBQ2I7b0JBQ0E7d0JBQ0VMLE9BQU87d0JBQ1BILEtBQUs7d0JBQ0xRLFdBQVc7b0JBQ2I7aUJBQ0Q7WUFDSDtZQUVBLHNFQUFzRTtZQUN0RSxxRUFBcUU7WUFDckUsb0VBQW9FO1lBQ3BFLHVFQUF1RTtZQUN2RSwyREFBMkQ7WUFDM0QseURBQXlEO1lBQ3pELGdGQUFnRjtZQUNoRix3RUFBd0U7WUFDeEUseUVBQXlFO1lBQ3pFO2dCQUNFQSxXQUFXO2dCQUNYSixVQUFVO29CQUNSO3dCQUNFUCxPQUFPOzRCQUNMLEdBQUc7NEJBQ0gsR0FBRzt3QkFDTDt3QkFDQUMsT0FBTzs0QkFDTFg7NEJBQ0FGO3lCQUNEO29CQUNIO29CQUNBO3dCQUNFWSxPQUFPOzRCQUNMLEdBQUc7NEJBQ0gsR0FBRzt3QkFDTDt3QkFDQUMsT0FBTzs0QkFDTDs0QkFDQWI7eUJBQ0Q7b0JBQ0g7b0JBQ0E7d0JBQ0VZLE9BQU87NEJBQ0wsR0FBRzs0QkFDSCxHQUFHO3dCQUNMO3dCQUNBQyxPQUFPOzRCQUNMVjs0QkFDQUg7eUJBQ0Q7b0JBQ0g7b0JBQ0E7d0JBQ0VZLE9BQU87NEJBQUUsR0FBRzt3QkFBUzt3QkFDckJDLE9BQU87NEJBQ0w7NEJBQ0FiO3lCQUNEO29CQUNIO2lCQUNEO1lBQ0g7WUFFQSxzRUFBc0U7WUFDdEU7Z0JBQ0UsdURBQXVEO2dCQUN2RFksT0FBTztvQkFBRSxHQUFHO2dCQUFXO2dCQUN2QkMsT0FBTztvQkFDTGQ7b0JBQ0E7b0JBQ0E7b0JBQ0E7aUJBQ0Q7WUFDSDtZQUVBO2dCQUNFYSxPQUFPO2dCQUNQVyxXQUFXO2dCQUNYSixVQUFVO29CQUNSO3dCQUFFTixPQUFPWDtvQkFBYTtvQkFDdEI7d0JBQUVXLE9BQU87b0JBQVU7aUJBQ3BCO1lBQ0g7WUFFQTtnQkFDRUQsT0FBTztnQkFDUFcsV0FBVztnQkFDWFYsT0FBT1Y7WUFDVDtZQUVBO2dCQUNFLHFCQUFxQjtnQkFDckJlLE9BQU87Z0JBQ1BILEtBQUs7Z0JBQ0xMLFVBQVU7b0JBQUU7d0JBQUVRLE9BQU87b0JBQU07aUJBQUc7WUFDaEM7U0FDRDtJQUNIO0FBQ0Y7QUFFd0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL3IuanM/NzM2ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IFJcbkRlc2NyaXB0aW9uOiBSIGlzIGEgZnJlZSBzb2Z0d2FyZSBlbnZpcm9ubWVudCBmb3Igc3RhdGlzdGljYWwgY29tcHV0aW5nIGFuZCBncmFwaGljcy5cbkF1dGhvcjogSm9lIENoZW5nIDxqb2VAcnN0dWRpby5vcmc+XG5Db250cmlidXRvcnM6IEtvbnJhZCBSdWRvbHBoIDxrb25yYWQucnVkb2xwaEBnbWFpbC5jb20+XG5XZWJzaXRlOiBodHRwczovL3d3dy5yLXByb2plY3Qub3JnXG5DYXRlZ29yeTogY29tbW9uLHNjaWVudGlmaWNcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiByKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICAvLyBJZGVudGlmaWVycyBpbiBSIGNhbm5vdCBzdGFydCB3aXRoIGBfYCwgYnV0IHRoZXkgY2FuIHN0YXJ0IHdpdGggYC5gIGlmIGl0XG4gIC8vIGlzIG5vdCBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIGRpZ2l0LlxuICAvLyBSIGFsc28gc3VwcG9ydHMgcXVvdGVkIGlkZW50aWZpZXJzLCB3aGljaCBhcmUgbmVhci1hcmJpdHJhcnkgc2VxdWVuY2VzXG4gIC8vIGRlbGltaXRlZCBieSBiYWNrdGlja3MgKGDigKZgKSwgd2hpY2ggbWF5IGNvbnRhaW4gZXNjYXBlIHNlcXVlbmNlcy4gVGhlc2UgYXJlXG4gIC8vIGhhbmRsZWQgaW4gYSBzZXBhcmF0ZSBtb2RlLiBTZWUgYHRlc3QvbWFya3VwL3IvbmFtZXMudHh0YCBmb3IgZXhhbXBsZXMuXG4gIC8vIEZJWE1FOiBTdXBwb3J0IFVuaWNvZGUgaWRlbnRpZmllcnMuXG4gIGNvbnN0IElERU5UX1JFID0gLyg/Oig/OlthLXpBLVpdfFxcLlsuX2EtekEtWl0pWy5fYS16QS1aMC05XSopfFxcLig/IVxcZCkvO1xuICBjb25zdCBOVU1CRVJfVFlQRVNfUkUgPSByZWdleC5laXRoZXIoXG4gICAgLy8gU3BlY2lhbCBjYXNlOiBvbmx5IGhleGFkZWNpbWFsIGJpbmFyeSBwb3dlcnMgY2FuIGNvbnRhaW4gZnJhY3Rpb25zXG4gICAgLzBbeFhdWzAtOWEtZkEtRl0rXFwuWzAtOWEtZkEtRl0qW3BQXVsrLV0/XFxkK2k/LyxcbiAgICAvLyBIZXhhZGVjaW1hbCBudW1iZXJzIHdpdGhvdXQgZnJhY3Rpb24gYW5kIG9wdGlvbmFsIGJpbmFyeSBwb3dlclxuICAgIC8wW3hYXVswLTlhLWZBLUZdKyg/OltwUF1bKy1dP1xcZCspP1tMaV0/LyxcbiAgICAvLyBEZWNpbWFsIG51bWJlcnNcbiAgICAvKD86XFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSg/OltlRV1bKy1dP1xcZCspP1tMaV0/L1xuICApO1xuICBjb25zdCBPUEVSQVRPUlNfUkUgPSAvWz0hPD46XT18XFx8XFx8fCYmfDo6Oj98PC18PDwtfC0+PnwtPnxcXHw+fFstKypcXC8/ISQmfDo8PT5AXn5dfFxcKlxcKi87XG4gIGNvbnN0IFBVTkNUVUFUSU9OX1JFID0gcmVnZXguZWl0aGVyKFxuICAgIC9bKCldLyxcbiAgICAvW3t9XS8sXG4gICAgL1xcW1xcWy8sXG4gICAgL1tbXFxdXS8sXG4gICAgL1xcXFwvLFxuICAgIC8sL1xuICApO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1InLFxuXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiBJREVOVF9SRSxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgICdmdW5jdGlvbiBpZiBpbiBicmVhayBuZXh0IHJlcGVhdCBlbHNlIGZvciB3aGlsZScsXG4gICAgICBsaXRlcmFsOlxuICAgICAgICAnTlVMTCBOQSBUUlVFIEZBTFNFIEluZiBOYU4gTkFfaW50ZWdlcl98MTAgTkFfcmVhbF98MTAgJ1xuICAgICAgICArICdOQV9jaGFyYWN0ZXJffDEwIE5BX2NvbXBsZXhffDEwJyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAvLyBCdWlsdGluIGNvbnN0YW50c1xuICAgICAgICAnTEVUVEVSUyBsZXR0ZXJzIG1vbnRoLmFiYiBtb250aC5uYW1lIHBpIFQgRiAnXG4gICAgICAgIC8vIFByaW1pdGl2ZSBmdW5jdGlvbnNcbiAgICAgICAgLy8gVGhlc2UgYXJlIGFsbCB0aGUgZnVuY3Rpb25zIGluIGBiYXNlYCB0aGF0IGFyZSBpbXBsZW1lbnRlZCBhcyBhXG4gICAgICAgIC8vIGAuUHJpbWl0aXZlYCwgbWludXMgdGhvc2UgZnVuY3Rpb25zIHRoYXQgYXJlIGFsc28ga2V5d29yZHMuXG4gICAgICAgICsgJ2FicyBhY29zIGFjb3NoIGFsbCBhbnkgYW55TkEgQXJnIGFzLmNhbGwgYXMuY2hhcmFjdGVyICdcbiAgICAgICAgKyAnYXMuY29tcGxleCBhcy5kb3VibGUgYXMuZW52aXJvbm1lbnQgYXMuaW50ZWdlciBhcy5sb2dpY2FsICdcbiAgICAgICAgKyAnYXMubnVsbC5kZWZhdWx0IGFzLm51bWVyaWMgYXMucmF3IGFzaW4gYXNpbmggYXRhbiBhdGFuaCBhdHRyICdcbiAgICAgICAgKyAnYXR0cmlidXRlcyBiYXNlZW52IGJyb3dzZXIgYyBjYWxsIGNlaWxpbmcgY2xhc3MgQ29uaiBjb3MgY29zaCAnXG4gICAgICAgICsgJ2Nvc3BpIGN1bW1heCBjdW1taW4gY3VtcHJvZCBjdW1zdW0gZGlnYW1tYSBkaW0gZGltbmFtZXMgJ1xuICAgICAgICArICdlbXB0eWVudiBleHAgZXhwcmVzc2lvbiBmbG9vciBmb3JjZUFuZENhbGwgZ2FtbWEgZ2MudGltZSAnXG4gICAgICAgICsgJ2dsb2JhbGVudiBJbSBpbnRlcmFjdGl2ZSBpbnZpc2libGUgaXMuYXJyYXkgaXMuYXRvbWljIGlzLmNhbGwgJ1xuICAgICAgICArICdpcy5jaGFyYWN0ZXIgaXMuY29tcGxleCBpcy5kb3VibGUgaXMuZW52aXJvbm1lbnQgaXMuZXhwcmVzc2lvbiAnXG4gICAgICAgICsgJ2lzLmZpbml0ZSBpcy5mdW5jdGlvbiBpcy5pbmZpbml0ZSBpcy5pbnRlZ2VyIGlzLmxhbmd1YWdlICdcbiAgICAgICAgKyAnaXMubGlzdCBpcy5sb2dpY2FsIGlzLm1hdHJpeCBpcy5uYSBpcy5uYW1lIGlzLm5hbiBpcy5udWxsICdcbiAgICAgICAgKyAnaXMubnVtZXJpYyBpcy5vYmplY3QgaXMucGFpcmxpc3QgaXMucmF3IGlzLnJlY3Vyc2l2ZSBpcy5zaW5nbGUgJ1xuICAgICAgICArICdpcy5zeW1ib2wgbGF6eUxvYWREQmZldGNoIGxlbmd0aCBsZ2FtbWEgbGlzdCBsb2cgbWF4IG1pbiAnXG4gICAgICAgICsgJ21pc3NpbmcgTW9kIG5hbWVzIG5hcmdzIG56Y2hhciBvbGRDbGFzcyBvbi5leGl0IHBvcy50by5lbnYgJ1xuICAgICAgICArICdwcm9jLnRpbWUgcHJvZCBxdW90ZSByYW5nZSBSZSByZXAgcmV0cmFjZW1lbSByZXR1cm4gcm91bmQgJ1xuICAgICAgICArICdzZXFfYWxvbmcgc2VxX2xlbiBzZXEuaW50IHNpZ24gc2lnbmlmIHNpbiBzaW5oIHNpbnBpIHNxcnQgJ1xuICAgICAgICArICdzdGFuZGFyZEdlbmVyaWMgc3Vic3RpdHV0ZSBzdW0gc3dpdGNoIHRhbiB0YW5oIHRhbnBpIHRyYWNlbWVtICdcbiAgICAgICAgKyAndHJpZ2FtbWEgdHJ1bmMgdW5jbGFzcyB1bnRyYWNlbWVtIFVzZU1ldGhvZCB4dGZybScsXG4gICAgfSxcblxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAvLyBSb3h5Z2VuIGNvbW1lbnRzXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgIC8jJy8sXG4gICAgICAgIC8kLyxcbiAgICAgICAgeyBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSBgQGV4YW1wbGVzYCBzZXBhcmF0ZWx5IHRvIGNhdXNlIGFsbCBzdWJzZXF1ZW50IGNvZGVcbiAgICAgICAgICAgIC8vIHVudGlsIHRoZSBuZXh0IGBAYC10YWcgb24gaXRzIG93biBsaW5lIHRvIGJlIGtlcHQgYXMtaXMsXG4gICAgICAgICAgICAvLyBwcmV2ZW50aW5nIGhpZ2hsaWdodGluZy4gVGhpcyBjb2RlIGlzIGV4YW1wbGUgUiBjb2RlLCBzbyBuZXN0ZWRcbiAgICAgICAgICAgIC8vIGRvY3RhZ3Mgc2hvdWxkbuKAmXQgYmUgdHJlYXRlZCBhcyBzdWNoLiBTZWVcbiAgICAgICAgICAgIC8vIGB0ZXN0L21hcmt1cC9yL3JveHlnZW4udHh0YCBmb3IgYW4gZXhhbXBsZS5cbiAgICAgICAgICAgIHNjb3BlOiAnZG9jdGFnJyxcbiAgICAgICAgICAgIG1hdGNoOiAvQGV4YW1wbGVzLyxcbiAgICAgICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgICAgICBlbmQ6IHJlZ2V4Lmxvb2thaGVhZChyZWdleC5laXRoZXIoXG4gICAgICAgICAgICAgICAgLy8gZW5kIGlmIGFub3RoZXIgZG9jIGNvbW1lbnRcbiAgICAgICAgICAgICAgICAvXFxuXiMnXFxzKig/PUBbYS16QS1aXSspLyxcbiAgICAgICAgICAgICAgICAvLyBvciBhIGxpbmUgd2l0aCBubyBjb21tZW50XG4gICAgICAgICAgICAgICAgL1xcbl4oPyEjJykvXG4gICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgYEBwYXJhbWAgdG8gaGlnaGxpZ2h0IHRoZSBwYXJhbWV0ZXIgbmFtZSBmb2xsb3dpbmdcbiAgICAgICAgICAgIC8vIGFmdGVyLlxuICAgICAgICAgICAgc2NvcGU6ICdkb2N0YWcnLFxuICAgICAgICAgICAgYmVnaW46ICdAcGFyYW0nLFxuICAgICAgICAgICAgZW5kOiAvJC8sXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2NvcGU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgIHsgbWF0Y2g6IElERU5UX1JFIH0sXG4gICAgICAgICAgICAgICAgICB7IG1hdGNoOiAvYCg/OlxcXFwufFteYFxcXFxdKStgLyB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNjb3BlOiAnZG9jdGFnJyxcbiAgICAgICAgICAgIG1hdGNoOiAvQFthLXpBLVpdKy9cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNjb3BlOiAna2V5d29yZCcsXG4gICAgICAgICAgICBtYXRjaDogL1xcXFxbYS16QS1aXSsvXG4gICAgICAgICAgfVxuICAgICAgICBdIH1cbiAgICAgICksXG5cbiAgICAgIGhsanMuSEFTSF9DT01NRU5UX01PREUsXG5cbiAgICAgIHtcbiAgICAgICAgc2NvcGU6ICdzdHJpbmcnLFxuICAgICAgICBjb250YWluczogWyBobGpzLkJBQ0tTTEFTSF9FU0NBUEUgXSxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICBobGpzLkVORF9TQU1FX0FTX0JFR0lOKHtcbiAgICAgICAgICAgIGJlZ2luOiAvW3JSXVwiKC0qKVxcKC8sXG4gICAgICAgICAgICBlbmQ6IC9cXCkoLSopXCIvXG4gICAgICAgICAgfSksXG4gICAgICAgICAgaGxqcy5FTkRfU0FNRV9BU19CRUdJTih7XG4gICAgICAgICAgICBiZWdpbjogL1tyUl1cIigtKilcXHsvLFxuICAgICAgICAgICAgZW5kOiAvXFx9KC0qKVwiL1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGhsanMuRU5EX1NBTUVfQVNfQkVHSU4oe1xuICAgICAgICAgICAgYmVnaW46IC9bclJdXCIoLSopXFxbLyxcbiAgICAgICAgICAgIGVuZDogL1xcXSgtKilcIi9cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBobGpzLkVORF9TQU1FX0FTX0JFR0lOKHtcbiAgICAgICAgICAgIGJlZ2luOiAvW3JSXScoLSopXFwoLyxcbiAgICAgICAgICAgIGVuZDogL1xcKSgtKiknL1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGhsanMuRU5EX1NBTUVfQVNfQkVHSU4oe1xuICAgICAgICAgICAgYmVnaW46IC9bclJdJygtKilcXHsvLFxuICAgICAgICAgICAgZW5kOiAvXFx9KC0qKScvXG4gICAgICAgICAgfSksXG4gICAgICAgICAgaGxqcy5FTkRfU0FNRV9BU19CRUdJTih7XG4gICAgICAgICAgICBiZWdpbjogL1tyUl0nKC0qKVxcWy8sXG4gICAgICAgICAgICBlbmQ6IC9cXF0oLSopJy9cbiAgICAgICAgICB9KSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogJ1wiJyxcbiAgICAgICAgICAgIGVuZDogJ1wiJyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IFwiJ1wiLFxuICAgICAgICAgICAgZW5kOiBcIidcIixcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgIH0sXG5cbiAgICAgIC8vIE1hdGNoaW5nIG51bWJlcnMgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHB1bmN0dWF0aW9uIGFuZCBvcGVyYXRvcnMgaXNcbiAgICAgIC8vIHRyaWNreSBzaW5jZSB3ZSBuZWVkIHRvIGxvb2sgYXQgdGhlIGNoYXJhY3RlciBhaGVhZCBvZiBhIG51bWJlciB0b1xuICAgICAgLy8gZW5zdXJlIHRoZSBudW1iZXIgaXMgbm90IHBhcnQgb2YgYW4gaWRlbnRpZmllciwgYW5kIHdlIGNhbm5vdCB1c2VcbiAgICAgIC8vIG5lZ2F0aXZlIGxvb2stYmVoaW5kIGFzc2VydGlvbnMuIFNvIGluc3RlYWQgd2UgZXhwbGljaXRseSBoYW5kbGUgYWxsXG4gICAgICAvLyBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2YgKG9wZXJhdG9yfHB1bmN0dWF0aW9uKSwgbnVtYmVyLlxuICAgICAgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG5lZ2F0aXZlIGxvb2stYmVoaW5kIHdoZW4gYXZhaWxhYmxlXG4gICAgICAvLyB7IGJlZ2luOiAvKD88IVthLXpBLVowLTkuX10pMFt4WF1bMC05YS1mQS1GXStcXC5bMC05YS1mQS1GXSpbcFBdWystXT9cXGQraT8vIH0sXG4gICAgICAvLyB7IGJlZ2luOiAvKD88IVthLXpBLVowLTkuX10pMFt4WF1bMC05YS1mQS1GXSsoW3BQXVsrLV0/XFxkKyk/W0xpXT8vIH0sXG4gICAgICAvLyB7IGJlZ2luOiAvKD88IVthLXpBLVowLTkuX10pKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspKFtlRV1bKy1dP1xcZCspP1tMaV0/LyB9XG4gICAgICB7XG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzY29wZToge1xuICAgICAgICAgICAgICAxOiAnb3BlcmF0b3InLFxuICAgICAgICAgICAgICAyOiAnbnVtYmVyJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgICAgIE9QRVJBVE9SU19SRSxcbiAgICAgICAgICAgICAgTlVNQkVSX1RZUEVTX1JFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzY29wZToge1xuICAgICAgICAgICAgICAxOiAnb3BlcmF0b3InLFxuICAgICAgICAgICAgICAyOiAnbnVtYmVyJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgICAgIC8lW14lXSolLyxcbiAgICAgICAgICAgICAgTlVNQkVSX1RZUEVTX1JFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzY29wZToge1xuICAgICAgICAgICAgICAxOiAncHVuY3R1YXRpb24nLFxuICAgICAgICAgICAgICAyOiAnbnVtYmVyJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgICAgIFBVTkNUVUFUSU9OX1JFLFxuICAgICAgICAgICAgICBOVU1CRVJfVFlQRVNfUkVcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNjb3BlOiB7IDI6ICdudW1iZXInIH0sXG4gICAgICAgICAgICBtYXRjaDogW1xuICAgICAgICAgICAgICAvW15hLXpBLVowLTkuX118Xi8sIC8vIG5vdCBwYXJ0IG9mIGFuIGlkZW50aWZpZXIsIG9yIHN0YXJ0IG9mIGRvY3VtZW50XG4gICAgICAgICAgICAgIE5VTUJFUl9UWVBFU19SRVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAgLy8gT3BlcmF0b3JzL3B1bmN0dWF0aW9uIHdoZW4gdGhleSdyZSBub3QgZGlyZWN0bHkgZm9sbG93ZWQgYnkgbnVtYmVyc1xuICAgICAge1xuICAgICAgICAvLyBSZWxldmFuY2UgYm9vc3QgZm9yIHRoZSBtb3N0IGNvbW1vbiBhc3NpZ25tZW50IGZvcm0uXG4gICAgICAgIHNjb3BlOiB7IDM6ICdvcGVyYXRvcicgfSxcbiAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICBJREVOVF9SRSxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgLzwtLyxcbiAgICAgICAgICAvXFxzKy9cbiAgICAgICAgXVxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBzY29wZTogJ29wZXJhdG9yJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgbWF0Y2g6IE9QRVJBVE9SU19SRSB9LFxuICAgICAgICAgIHsgbWF0Y2g6IC8lW14lXSolLyB9XG4gICAgICAgIF1cbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgc2NvcGU6ICdwdW5jdHVhdGlvbicsXG4gICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgbWF0Y2g6IFBVTkNUVUFUSU9OX1JFXG4gICAgICB9LFxuXG4gICAgICB7XG4gICAgICAgIC8vIEVzY2FwZWQgaWRlbnRpZmllclxuICAgICAgICBiZWdpbjogJ2AnLFxuICAgICAgICBlbmQ6ICdgJyxcbiAgICAgICAgY29udGFpbnM6IFsgeyBiZWdpbjogL1xcXFwuLyB9IF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IHIgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbInIiLCJobGpzIiwicmVnZXgiLCJJREVOVF9SRSIsIk5VTUJFUl9UWVBFU19SRSIsImVpdGhlciIsIk9QRVJBVE9SU19SRSIsIlBVTkNUVUFUSU9OX1JFIiwibmFtZSIsImtleXdvcmRzIiwiJHBhdHRlcm4iLCJrZXl3b3JkIiwibGl0ZXJhbCIsImJ1aWx0X2luIiwiY29udGFpbnMiLCJDT01NRU5UIiwic2NvcGUiLCJtYXRjaCIsInN0YXJ0cyIsImVuZCIsImxvb2thaGVhZCIsImVuZHNQYXJlbnQiLCJiZWdpbiIsInZhcmlhbnRzIiwiSEFTSF9DT01NRU5UX01PREUiLCJCQUNLU0xBU0hfRVNDQVBFIiwiRU5EX1NBTUVfQVNfQkVHSU4iLCJyZWxldmFuY2UiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/r.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/ruby.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/ruby.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ruby)\n/* harmony export */ });\n/*\nLanguage: Ruby\nDescription: Ruby is a dynamic, open source programming language with a focus on simplicity and productivity.\nWebsite: https://www.ruby-lang.org/\nAuthor: Anton Kovalyov <anton@kovalyov.net>\nContributors: Peter Leonov <gojpeg@yandex.ru>, Vasily Polovnyov <vast@whiteants.net>, Loren Segal <lsegal@soen.ca>, Pascal Hurni <phi@ruby-reactive.org>, Cedric Sohrauer <sohrauer@googlemail.com>\nCategory: common\n*/ function ruby(hljs) {\n const regex = hljs.regex;\n const RUBY_METHOD_RE = \"([a-zA-Z_]\\\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?)\";\n // TODO: move concepts like CAMEL_CASE into `modes.js`\n const CLASS_NAME_RE = regex.either(/\\b([A-Z]+[a-z0-9]+)+/, // ends in caps\n /\\b([A-Z]+[a-z0-9]+)+[A-Z]+/);\n const CLASS_NAME_WITH_NAMESPACE_RE = regex.concat(CLASS_NAME_RE, /(::\\w+)*/);\n // very popular ruby built-ins that one might even assume\n // are actual keywords (despite that not being the case)\n const PSEUDO_KWS = [\n \"include\",\n \"extend\",\n \"prepend\",\n \"public\",\n \"private\",\n \"protected\",\n \"raise\",\n \"throw\"\n ];\n const RUBY_KEYWORDS = {\n \"variable.constant\": [\n \"__FILE__\",\n \"__LINE__\",\n \"__ENCODING__\"\n ],\n \"variable.language\": [\n \"self\",\n \"super\"\n ],\n keyword: [\n \"alias\",\n \"and\",\n \"begin\",\n \"BEGIN\",\n \"break\",\n \"case\",\n \"class\",\n \"defined\",\n \"do\",\n \"else\",\n \"elsif\",\n \"end\",\n \"END\",\n \"ensure\",\n \"for\",\n \"if\",\n \"in\",\n \"module\",\n \"next\",\n \"not\",\n \"or\",\n \"redo\",\n \"require\",\n \"rescue\",\n \"retry\",\n \"return\",\n \"then\",\n \"undef\",\n \"unless\",\n \"until\",\n \"when\",\n \"while\",\n \"yield\",\n ...PSEUDO_KWS\n ],\n built_in: [\n \"proc\",\n \"lambda\",\n \"attr_accessor\",\n \"attr_reader\",\n \"attr_writer\",\n \"define_method\",\n \"private_constant\",\n \"module_function\"\n ],\n literal: [\n \"true\",\n \"false\",\n \"nil\"\n ]\n };\n const YARDOCTAG = {\n className: \"doctag\",\n begin: \"@[A-Za-z]+\"\n };\n const IRB_OBJECT = {\n begin: \"#<\",\n end: \">\"\n };\n const COMMENT_MODES = [\n hljs.COMMENT(\"#\", \"$\", {\n contains: [\n YARDOCTAG\n ]\n }),\n hljs.COMMENT(\"^=begin\", \"^=end\", {\n contains: [\n YARDOCTAG\n ],\n relevance: 10\n }),\n hljs.COMMENT(\"^__END__\", hljs.MATCH_NOTHING_RE)\n ];\n const SUBST = {\n className: \"subst\",\n begin: /#\\{/,\n end: /\\}/,\n keywords: RUBY_KEYWORDS\n };\n const STRING = {\n className: \"string\",\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /`/,\n end: /`/\n },\n {\n begin: /%[qQwWx]?\\(/,\n end: /\\)/\n },\n {\n begin: /%[qQwWx]?\\[/,\n end: /\\]/\n },\n {\n begin: /%[qQwWx]?\\{/,\n end: /\\}/\n },\n {\n begin: /%[qQwWx]?</,\n end: />/\n },\n {\n begin: /%[qQwWx]?\\//,\n end: /\\//\n },\n {\n begin: /%[qQwWx]?%/,\n end: /%/\n },\n {\n begin: /%[qQwWx]?-/,\n end: /-/\n },\n {\n begin: /%[qQwWx]?\\|/,\n end: /\\|/\n },\n // in the following expressions, \\B in the beginning suppresses recognition of ?-sequences\n // where ? is the last character of a preceding identifier, as in: `func?4`\n {\n begin: /\\B\\?(\\\\\\d{1,3})/\n },\n {\n begin: /\\B\\?(\\\\x[A-Fa-f0-9]{1,2})/\n },\n {\n begin: /\\B\\?(\\\\u\\{?[A-Fa-f0-9]{1,6}\\}?)/\n },\n {\n begin: /\\B\\?(\\\\M-\\\\C-|\\\\M-\\\\c|\\\\c\\\\M-|\\\\M-|\\\\C-\\\\M-)[\\x20-\\x7e]/\n },\n {\n begin: /\\B\\?\\\\(c|C-)[\\x20-\\x7e]/\n },\n {\n begin: /\\B\\?\\\\?\\S/\n },\n // heredocs\n {\n // this guard makes sure that we have an entire heredoc and not a false\n // positive (auto-detect, etc.)\n begin: regex.concat(/<<[-~]?'?/, regex.lookahead(/(\\w+)(?=\\W)[^\\n]*\\n(?:[^\\n]*\\n)*?\\s*\\1\\b/)),\n contains: [\n hljs.END_SAME_AS_BEGIN({\n begin: /(\\w+)/,\n end: /(\\w+)/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n })\n ]\n }\n ]\n };\n // Ruby syntax is underdocumented, but this grammar seems to be accurate\n // as of version 2.7.2 (confirmed with (irb and `Ripper.sexp(...)`)\n // https://docs.ruby-lang.org/en/2.7.0/doc/syntax/literals_rdoc.html#label-Numbers\n const decimal = \"[1-9](_?[0-9])*|0\";\n const digits = \"[0-9](_?[0-9])*\";\n const NUMBER = {\n className: \"number\",\n relevance: 0,\n variants: [\n // decimal integer/float, optionally exponential or rational, optionally imaginary\n {\n begin: `\\\\b(${decimal})(\\\\.(${digits}))?([eE][+-]?(${digits})|r)?i?\\\\b`\n },\n // explicit decimal/binary/octal/hexadecimal integer,\n // optionally rational and/or imaginary\n {\n begin: \"\\\\b0[dD][0-9](_?[0-9])*r?i?\\\\b\"\n },\n {\n begin: \"\\\\b0[bB][0-1](_?[0-1])*r?i?\\\\b\"\n },\n {\n begin: \"\\\\b0[oO][0-7](_?[0-7])*r?i?\\\\b\"\n },\n {\n begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\\\b\"\n },\n // 0-prefixed implicit octal integer, optionally rational and/or imaginary\n {\n begin: \"\\\\b0(_?[0-7])+r?i?\\\\b\"\n }\n ]\n };\n const PARAMS = {\n variants: [\n {\n match: /\\(\\)/\n },\n {\n className: \"params\",\n begin: /\\(/,\n end: /(?=\\))/,\n excludeBegin: true,\n endsParent: true,\n keywords: RUBY_KEYWORDS\n }\n ]\n };\n const INCLUDE_EXTEND = {\n match: [\n /(include|extend)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ],\n scope: {\n 2: \"title.class\"\n },\n keywords: RUBY_KEYWORDS\n };\n const CLASS_DEFINITION = {\n variants: [\n {\n match: [\n /class\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\s+<\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n },\n {\n match: [\n /\\b(class|module)\\s+/,\n CLASS_NAME_WITH_NAMESPACE_RE\n ]\n }\n ],\n scope: {\n 2: \"title.class\",\n 4: \"title.class.inherited\"\n },\n keywords: RUBY_KEYWORDS\n };\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n const METHOD_DEFINITION = {\n match: [\n /def/,\n /\\s+/,\n RUBY_METHOD_RE\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n const OBJECT_CREATION = {\n relevance: 0,\n match: [\n CLASS_NAME_WITH_NAMESPACE_RE,\n /\\.new[. (]/\n ],\n scope: {\n 1: \"title.class\"\n }\n };\n // CamelCase\n const CLASS_REFERENCE = {\n relevance: 0,\n match: CLASS_NAME_RE,\n scope: \"title.class\"\n };\n const RUBY_DEFAULT_CONTAINS = [\n STRING,\n CLASS_DEFINITION,\n INCLUDE_EXTEND,\n OBJECT_CREATION,\n UPPER_CASE_CONSTANT,\n CLASS_REFERENCE,\n METHOD_DEFINITION,\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + \"::\"\n },\n {\n className: \"symbol\",\n begin: hljs.UNDERSCORE_IDENT_RE + \"(!|\\\\?)?:\",\n relevance: 0\n },\n {\n className: \"symbol\",\n begin: \":(?!\\\\s)\",\n contains: [\n STRING,\n {\n begin: RUBY_METHOD_RE\n }\n ],\n relevance: 0\n },\n NUMBER,\n {\n // negative-look forward attempts to prevent false matches like:\n // @ident@ or $ident$ that might indicate this is not ruby at all\n className: \"variable\",\n begin: \"(\\\\$\\\\W)|((\\\\$|@@?)(\\\\w+))(?=[^@$?])\" + `(?![A-Za-z])(?![@$?'])`\n },\n {\n className: \"params\",\n begin: /\\|/,\n end: /\\|/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n keywords: RUBY_KEYWORDS\n },\n {\n begin: \"(\" + hljs.RE_STARTERS_RE + \"|unless)\\\\s*\",\n keywords: \"unless\",\n contains: [\n {\n className: \"regexp\",\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n illegal: /\\n/,\n variants: [\n {\n begin: \"/\",\n end: \"/[a-z]*\"\n },\n {\n begin: /%r\\{/,\n end: /\\}[a-z]*/\n },\n {\n begin: \"%r\\\\(\",\n end: \"\\\\)[a-z]*\"\n },\n {\n begin: \"%r!\",\n end: \"![a-z]*\"\n },\n {\n begin: \"%r\\\\[\",\n end: \"\\\\][a-z]*\"\n }\n ]\n }\n ].concat(IRB_OBJECT, COMMENT_MODES),\n relevance: 0\n }\n ].concat(IRB_OBJECT, COMMENT_MODES);\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n // >>\n // ?>\n const SIMPLE_PROMPT = \"[>?]>\";\n // irb(main):001:0>\n const DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+[>*]\";\n const RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d+(p\\\\d+)?[^\\\\d][^>]+>\";\n const IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: \"$\",\n contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: \"meta.prompt\",\n begin: \"^(\" + SIMPLE_PROMPT + \"|\" + DEFAULT_PROMPT + \"|\" + RVM_PROMPT + \")(?=[ ])\",\n starts: {\n end: \"$\",\n keywords: RUBY_KEYWORDS,\n contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n COMMENT_MODES.unshift(IRB_OBJECT);\n return {\n name: \"Ruby\",\n aliases: [\n \"rb\",\n \"gemspec\",\n \"podspec\",\n \"thor\",\n \"irb\"\n ],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.SHEBANG({\n binary: \"ruby\"\n })\n ].concat(IRB_DEFAULT).concat(COMMENT_MODES).concat(RUBY_DEFAULT_CONTAINS)\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9ydWJ5LmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7OztBQU9BLEdBRUEsU0FBU0EsS0FBS0MsSUFBSTtJQUNoQixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLE1BQU1DLGlCQUFpQjtJQUN2QixzREFBc0Q7SUFDdEQsTUFBTUMsZ0JBQWdCRixNQUFNRyxNQUFNLENBQ2hDLHdCQUNBLGVBQWU7SUFDZjtJQUdGLE1BQU1DLCtCQUErQkosTUFBTUssTUFBTSxDQUFDSCxlQUFlO0lBQ2pFLHlEQUF5RDtJQUN6RCx3REFBd0Q7SUFDeEQsTUFBTUksYUFBYTtRQUNqQjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFDRCxNQUFNQyxnQkFBZ0I7UUFDcEIscUJBQXFCO1lBQ25CO1lBQ0E7WUFDQTtTQUNEO1FBQ0QscUJBQXFCO1lBQ25CO1lBQ0E7U0FDRDtRQUNEQyxTQUFTO1lBQ1A7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO2VBQ0dGO1NBQ0o7UUFDREcsVUFBVTtZQUNSO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO1lBQ0E7U0FDRDtRQUNEQyxTQUFTO1lBQ1A7WUFDQTtZQUNBO1NBQ0Q7SUFDSDtJQUNBLE1BQU1DLFlBQVk7UUFDaEJDLFdBQVc7UUFDWEMsT0FBTztJQUNUO0lBQ0EsTUFBTUMsYUFBYTtRQUNqQkQsT0FBTztRQUNQRSxLQUFLO0lBQ1A7SUFDQSxNQUFNQyxnQkFBZ0I7UUFDcEJqQixLQUFLa0IsT0FBTyxDQUNWLEtBQ0EsS0FDQTtZQUFFQyxVQUFVO2dCQUFFUDthQUFXO1FB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UUFBUTtZQUFPO1NBQUksQ0FDM0NwRCxNQUFNLENBQUM4QyxhQUNQOUMsTUFBTSxDQUFDVyxlQUNQWCxNQUFNLENBQUNxQztJQUNaO0FBQ0Y7QUFFMkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL3J1YnkuanM/N2RjOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IFJ1YnlcbkRlc2NyaXB0aW9uOiBSdWJ5IGlzIGEgZHluYW1pYywgb3BlbiBzb3VyY2UgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Ugd2l0aCBhIGZvY3VzIG9uIHNpbXBsaWNpdHkgYW5kIHByb2R1Y3Rpdml0eS5cbldlYnNpdGU6IGh0dHBzOi8vd3d3LnJ1YnktbGFuZy5vcmcvXG5BdXRob3I6IEFudG9uIEtvdmFseW92IDxhbnRvbkBrb3ZhbHlvdi5uZXQ+XG5Db250cmlidXRvcnM6IFBldGVyIExlb25vdiA8Z29qcGVnQHlhbmRleC5ydT4sIFZhc2lseSBQb2xvdm55b3YgPHZhc3RAd2hpdGVhbnRzLm5ldD4sIExvcmVuIFNlZ2FsIDxsc2VnYWxAc29lbi5jYT4sIFBhc2NhbCBIdXJuaSA8cGhpQHJ1YnktcmVhY3RpdmUub3JnPiwgQ2VkcmljIFNvaHJhdWVyIDxzb2hyYXVlckBnb29nbGVtYWlsLmNvbT5cbkNhdGVnb3J5OiBjb21tb25cbiovXG5cbmZ1bmN0aW9uIHJ1YnkoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IFJVQllfTUVUSE9EX1JFID0gJyhbYS16QS1aX11cXFxcdypbIT89XT98Wy0rfl1AfDw8fD4+fD1+fD09PT98PD0+fFs8Pl09P3xcXFxcKlxcXFwqfFstLyslXiYqfmB8XXxcXFxcW1xcXFxdPT8pJztcbiAgLy8gVE9ETzogbW92ZSBjb25jZXB0cyBsaWtlIENBTUVMX0NBU0UgaW50byBgbW9kZXMuanNgXG4gIGNvbnN0IENMQVNTX05BTUVfUkUgPSByZWdleC5laXRoZXIoXG4gICAgL1xcYihbQS1aXStbYS16MC05XSspKy8sXG4gICAgLy8gZW5kcyBpbiBjYXBzXG4gICAgL1xcYihbQS1aXStbYS16MC05XSspK1tBLVpdKy8sXG4gIClcbiAgO1xuICBjb25zdCBDTEFTU19OQU1FX1dJVEhfTkFNRVNQQUNFX1JFID0gcmVnZXguY29uY2F0KENMQVNTX05BTUVfUkUsIC8oOjpcXHcrKSovKTtcbiAgLy8gdmVyeSBwb3B1bGFyIHJ1YnkgYnVpbHQtaW5zIHRoYXQgb25lIG1pZ2h0IGV2ZW4gYXNzdW1lXG4gIC8vIGFyZSBhY3R1YWwga2V5d29yZHMgKGRlc3BpdGUgdGhhdCBub3QgYmVpbmcgdGhlIGNhc2UpXG4gIGNvbnN0IFBTRVVET19LV1MgPSBbXG4gICAgXCJpbmNsdWRlXCIsXG4gICAgXCJleHRlbmRcIixcbiAgICBcInByZXBlbmRcIixcbiAgICBcInB1YmxpY1wiLFxuICAgIFwicHJpdmF0ZVwiLFxuICAgIFwicHJvdGVjdGVkXCIsXG4gICAgXCJyYWlzZVwiLFxuICAgIFwidGhyb3dcIlxuICBdO1xuICBjb25zdCBSVUJZX0tFWVdPUkRTID0ge1xuICAgIFwidmFyaWFibGUuY29uc3RhbnRcIjogW1xuICAgICAgXCJfX0ZJTEVfX1wiLFxuICAgICAgXCJfX0xJTkVfX1wiLFxuICAgICAgXCJfX0VOQ09ESU5HX19cIlxuICAgIF0sXG4gICAgXCJ2YXJpYWJsZS5sYW5ndWFnZVwiOiBbXG4gICAgICBcInNlbGZcIixcbiAgICAgIFwic3VwZXJcIixcbiAgICBdLFxuICAgIGtleXdvcmQ6IFtcbiAgICAgIFwiYWxpYXNcIixcbiAgICAgIFwiYW5kXCIsXG4gICAgICBcImJlZ2luXCIsXG4gICAgICBcIkJFR0lOXCIsXG4gICAgICBcImJyZWFrXCIsXG4gICAgICBcImNhc2VcIixcbiAgICAgIFwiY2xhc3NcIixcbiAgICAgIFwiZGVmaW5lZFwiLFxuICAgICAgXCJkb1wiLFxuICAgICAgXCJlbHNlXCIsXG4gICAgICBcImVsc2lmXCIsXG4gICAgICBcImVuZFwiLFxuICAgICAgXCJFTkRcIixcbiAgICAgIFwiZW5zdXJlXCIsXG4gICAgICBcImZvclwiLFxuICAgICAgXCJpZlwiLFxuICAgICAgXCJpblwiLFxuICAgICAgXCJtb2R1bGVcIixcbiAgICAgIFwibmV4dFwiLFxuICAgICAgXCJub3RcIixcbiAgICAgIFwib3JcIixcbiAgICAgIFwicmVkb1wiLFxuICAgICAgXCJyZXF1aXJlXCIsXG4gICAgICBcInJlc2N1ZVwiLFxuICAgICAgXCJyZXRyeVwiLFxuICAgICAgXCJyZXR1cm5cIixcbiAgICAgIFwidGhlblwiLFxuICAgICAgXCJ1bmRlZlwiLFxuICAgICAgXCJ1bmxlc3NcIixcbiAgICAgIFwidW50aWxcIixcbiAgICAgIFwid2hlblwiLFxuICAgICAgXCJ3aGlsZVwiLFxuICAgICAgXCJ5aWVsZFwiLFxuICAgICAgLi4uUFNFVURPX0tXU1xuICAgIF0sXG4gICAgYnVpbHRfaW46IFtcbiAgICAgIFwicHJvY1wiLFxuICAgICAgXCJsYW1iZGFcIixcbiAgICAgIFwiYXR0cl9hY2Nlc3NvclwiLFxuICAgICAgXCJhdHRyX3JlYWRlclwiLFxuICAgICAgXCJhdHRyX3dyaXRlclwiLFxuICAgICAgXCJkZWZpbmVfbWV0aG9kXCIsXG4gICAgICBcInByaXZhdGVfY29uc3RhbnRcIixcbiAgICAgIFwibW9kdWxlX2Z1bmN0aW9uXCJcbiAgICBdLFxuICAgIGxpdGVyYWw6IFtcbiAgICAgIFwidHJ1ZVwiLFxuICAgICAgXCJmYWxzZVwiLFxuICAgICAgXCJuaWxcIlxuICAgIF1cbiAgfTtcbiAgY29uc3QgWUFSRE9DVEFHID0ge1xuICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgYmVnaW46ICdAW0EtWmEtel0rJ1xuICB9O1xuICBjb25zdCBJUkJfT0JKRUNUID0ge1xuICAgIGJlZ2luOiAnIzwnLFxuICAgIGVuZDogJz4nXG4gIH07XG4gIGNvbnN0IENPTU1FTlRfTU9ERVMgPSBbXG4gICAgaGxqcy5DT01NRU5UKFxuICAgICAgJyMnLFxuICAgICAgJyQnLFxuICAgICAgeyBjb250YWluczogWyBZQVJET0NUQUcgXSB9XG4gICAgKSxcbiAgICBobGpzLkNPTU1FTlQoXG4gICAgICAnXj1iZWdpbicsXG4gICAgICAnXj1lbmQnLFxuICAgICAge1xuICAgICAgICBjb250YWluczogWyBZQVJET0NUQUcgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfVxuICAgICksXG4gICAgaGxqcy5DT01NRU5UKCdeX19FTkRfXycsIGhsanMuTUFUQ0hfTk9USElOR19SRSlcbiAgXTtcbiAgY29uc3QgU1VCU1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIGJlZ2luOiAvI1xcey8sXG4gICAgZW5kOiAvXFx9LyxcbiAgICBrZXl3b3JkczogUlVCWV9LRVlXT1JEU1xuICB9O1xuICBjb25zdCBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgU1VCU1RcbiAgICBdLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvJy8sXG4gICAgICAgIGVuZDogLycvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL1wiLyxcbiAgICAgICAgZW5kOiAvXCIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogL2AvLFxuICAgICAgICBlbmQ6IC9gL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8lW3FRd1d4XT9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyVbcVF3V3hdP1xcWy8sXG4gICAgICAgIGVuZDogL1xcXS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvJVtxUXdXeF0/XFx7LyxcbiAgICAgICAgZW5kOiAvXFx9L1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8lW3FRd1d4XT88LyxcbiAgICAgICAgZW5kOiAvPi9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvJVtxUXdXeF0/XFwvLyxcbiAgICAgICAgZW5kOiAvXFwvL1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8lW3FRd1d4XT8lLyxcbiAgICAgICAgZW5kOiAvJS9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvJVtxUXdXeF0/LS8sXG4gICAgICAgIGVuZDogLy0vXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLyVbcVF3V3hdP1xcfC8sXG4gICAgICAgIGVuZDogL1xcfC9cbiAgICAgIH0sXG4gICAgICAvLyBpbiB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zLCBcXEIgaW4gdGhlIGJlZ2lubmluZyBzdXBwcmVzc2VzIHJlY29nbml0aW9uIG9mID8tc2VxdWVuY2VzXG4gICAgICAvLyB3aGVyZSA/IGlzIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBhIHByZWNlZGluZyBpZGVudGlmaWVyLCBhcyBpbjogYGZ1bmM/NGBcbiAgICAgIHsgYmVnaW46IC9cXEJcXD8oXFxcXFxcZHsxLDN9KS8gfSxcbiAgICAgIHsgYmVnaW46IC9cXEJcXD8oXFxcXHhbQS1GYS1mMC05XXsxLDJ9KS8gfSxcbiAgICAgIHsgYmVnaW46IC9cXEJcXD8oXFxcXHVcXHs/W0EtRmEtZjAtOV17MSw2fVxcfT8pLyB9LFxuICAgICAgeyBiZWdpbjogL1xcQlxcPyhcXFxcTS1cXFxcQy18XFxcXE0tXFxcXGN8XFxcXGNcXFxcTS18XFxcXE0tfFxcXFxDLVxcXFxNLSlbXFx4MjAtXFx4N2VdLyB9LFxuICAgICAgeyBiZWdpbjogL1xcQlxcP1xcXFwoY3xDLSlbXFx4MjAtXFx4N2VdLyB9LFxuICAgICAgeyBiZWdpbjogL1xcQlxcP1xcXFw/XFxTLyB9LFxuICAgICAgLy8gaGVyZWRvY3NcbiAgICAgIHtcbiAgICAgICAgLy8gdGhpcyBndWFyZCBtYWtlcyBzdXJlIHRoYXQgd2UgaGF2ZSBhbiBlbnRpcmUgaGVyZWRvYyBhbmQgbm90IGEgZmFsc2VcbiAgICAgICAgLy8gcG9zaXRpdmUgKGF1dG8tZGV0ZWN0LCBldGMuKVxuICAgICAgICBiZWdpbjogcmVnZXguY29uY2F0KFxuICAgICAgICAgIC88PFstfl0/Jz8vLFxuICAgICAgICAgIHJlZ2V4Lmxvb2thaGVhZCgvKFxcdyspKD89XFxXKVteXFxuXSpcXG4oPzpbXlxcbl0qXFxuKSo/XFxzKlxcMVxcYi8pXG4gICAgICAgICksXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgaGxqcy5FTkRfU0FNRV9BU19CRUdJTih7XG4gICAgICAgICAgICBiZWdpbjogLyhcXHcrKS8sXG4gICAgICAgICAgICBlbmQ6IC8oXFx3KykvLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICAgICAgICBTVUJTVFxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgLy8gUnVieSBzeW50YXggaXMgdW5kZXJkb2N1bWVudGVkLCBidXQgdGhpcyBncmFtbWFyIHNlZW1zIHRvIGJlIGFjY3VyYXRlXG4gIC8vIGFzIG9mIHZlcnNpb24gMi43LjIgKGNvbmZpcm1lZCB3aXRoIChpcmIgYW5kIGBSaXBwZXIuc2V4cCguLi4pYClcbiAgLy8gaHR0cHM6Ly9kb2NzLnJ1YnktbGFuZy5vcmcvZW4vMi43LjAvZG9jL3N5bnRheC9saXRlcmFsc19yZG9jLmh0bWwjbGFiZWwtTnVtYmVyc1xuICBjb25zdCBkZWNpbWFsID0gJ1sxLTldKF8/WzAtOV0pKnwwJztcbiAgY29uc3QgZGlnaXRzID0gJ1swLTldKF8/WzAtOV0pKic7XG4gIGNvbnN0IE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICB2YXJpYW50czogW1xuICAgICAgLy8gZGVjaW1hbCBpbnRlZ2VyL2Zsb2F0LCBvcHRpb25hbGx5IGV4cG9uZW50aWFsIG9yIHJhdGlvbmFsLCBvcHRpb25hbGx5IGltYWdpbmFyeVxuICAgICAgeyBiZWdpbjogYFxcXFxiKCR7ZGVjaW1hbH0pKFxcXFwuKCR7ZGlnaXRzfSkpPyhbZUVdWystXT8oJHtkaWdpdHN9KXxyKT9pP1xcXFxiYCB9LFxuXG4gICAgICAvLyBleHBsaWNpdCBkZWNpbWFsL2JpbmFyeS9vY3RhbC9oZXhhZGVjaW1hbCBpbnRlZ2VyLFxuICAgICAgLy8gb3B0aW9uYWxseSByYXRpb25hbCBhbmQvb3IgaW1hZ2luYXJ5XG4gICAgICB7IGJlZ2luOiBcIlxcXFxiMFtkRF1bMC05XShfP1swLTldKSpyP2k/XFxcXGJcIiB9LFxuICAgICAgeyBiZWdpbjogXCJcXFxcYjBbYkJdWzAtMV0oXz9bMC0xXSkqcj9pP1xcXFxiXCIgfSxcbiAgICAgIHsgYmVnaW46IFwiXFxcXGIwW29PXVswLTddKF8/WzAtN10pKnI/aT9cXFxcYlwiIH0sXG4gICAgICB7IGJlZ2luOiBcIlxcXFxiMFt4WF1bMC05YS1mQS1GXShfP1swLTlhLWZBLUZdKSpyP2k/XFxcXGJcIiB9LFxuXG4gICAgICAvLyAwLXByZWZpeGVkIGltcGxpY2l0IG9jdGFsIGludGVnZXIsIG9wdGlvbmFsbHkgcmF0aW9uYWwgYW5kL29yIGltYWdpbmFyeVxuICAgICAgeyBiZWdpbjogXCJcXFxcYjAoXz9bMC03XSkrcj9pP1xcXFxiXCIgfVxuICAgIF1cbiAgfTtcblxuICBjb25zdCBQQVJBTVMgPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IC9cXChcXCkvLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAncGFyYW1zJyxcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC8oPz1cXCkpLyxcbiAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICBrZXl3b3JkczogUlVCWV9LRVlXT1JEUyxcbiAgICAgIH1cbiAgICBdXG4gIH07XG5cbiAgY29uc3QgSU5DTFVERV9FWFRFTkQgPSB7XG4gICAgbWF0Y2g6IFtcbiAgICAgIC8oaW5jbHVkZXxleHRlbmQpXFxzKy8sXG4gICAgICBDTEFTU19OQU1FX1dJVEhfTkFNRVNQQUNFX1JFXG4gICAgXSxcbiAgICBzY29wZToge1xuICAgICAgMjogXCJ0aXRsZS5jbGFzc1wiXG4gICAgfSxcbiAgICBrZXl3b3JkczogUlVCWV9LRVlXT1JEU1xuICB9O1xuXG4gIGNvbnN0IENMQVNTX0RFRklOSVRJT04gPSB7XG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAvY2xhc3NcXHMrLyxcbiAgICAgICAgICBDTEFTU19OQU1FX1dJVEhfTkFNRVNQQUNFX1JFLFxuICAgICAgICAgIC9cXHMrPFxccysvLFxuICAgICAgICAgIENMQVNTX05BTUVfV0lUSF9OQU1FU1BBQ0VfUkVcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAvXFxiKGNsYXNzfG1vZHVsZSlcXHMrLyxcbiAgICAgICAgICBDTEFTU19OQU1FX1dJVEhfTkFNRVNQQUNFX1JFXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdLFxuICAgIHNjb3BlOiB7XG4gICAgICAyOiBcInRpdGxlLmNsYXNzXCIsXG4gICAgICA0OiBcInRpdGxlLmNsYXNzLmluaGVyaXRlZFwiXG4gICAgfSxcbiAgICBrZXl3b3JkczogUlVCWV9LRVlXT1JEU1xuICB9O1xuXG4gIGNvbnN0IFVQUEVSX0NBU0VfQ09OU1RBTlQgPSB7XG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIG1hdGNoOiAvXFxiW0EtWl1bQS1aXzAtOV0rXFxiLyxcbiAgICBjbGFzc05hbWU6IFwidmFyaWFibGUuY29uc3RhbnRcIlxuICB9O1xuXG4gIGNvbnN0IE1FVEhPRF9ERUZJTklUSU9OID0ge1xuICAgIG1hdGNoOiBbXG4gICAgICAvZGVmLywgL1xccysvLFxuICAgICAgUlVCWV9NRVRIT0RfUkVcbiAgICBdLFxuICAgIHNjb3BlOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDM6IFwidGl0bGUuZnVuY3Rpb25cIlxuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIFBBUkFNU1xuICAgIF1cbiAgfTtcblxuICBjb25zdCBPQkpFQ1RfQ1JFQVRJT04gPSB7XG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIG1hdGNoOiBbXG4gICAgICBDTEFTU19OQU1FX1dJVEhfTkFNRVNQQUNFX1JFLFxuICAgICAgL1xcLm5ld1suIChdL1xuICAgIF0sXG4gICAgc2NvcGU6IHtcbiAgICAgIDE6IFwidGl0bGUuY2xhc3NcIlxuICAgIH1cbiAgfTtcblxuICAvLyBDYW1lbENhc2VcbiAgY29uc3QgQ0xBU1NfUkVGRVJFTkNFID0ge1xuICAgIHJlbGV2YW5jZTogMCxcbiAgICBtYXRjaDogQ0xBU1NfTkFNRV9SRSxcbiAgICBzY29wZTogXCJ0aXRsZS5jbGFzc1wiXG4gIH07XG5cbiAgY29uc3QgUlVCWV9ERUZBVUxUX0NPTlRBSU5TID0gW1xuICAgIFNUUklORyxcbiAgICBDTEFTU19ERUZJTklUSU9OLFxuICAgIElOQ0xVREVfRVhURU5ELFxuICAgIE9CSkVDVF9DUkVBVElPTixcbiAgICBVUFBFUl9DQVNFX0NPTlNUQU5ULFxuICAgIENMQVNTX1JFRkVSRU5DRSxcbiAgICBNRVRIT0RfREVGSU5JVElPTixcbiAgICB7XG4gICAgICAvLyBzd2FsbG93IG5hbWVzcGFjZSBxdWFsaWZpZXJzIGJlZm9yZSBzeW1ib2xzXG4gICAgICBiZWdpbjogaGxqcy5JREVOVF9SRSArICc6OicgfSxcbiAgICB7XG4gICAgICBjbGFzc05hbWU6ICdzeW1ib2wnLFxuICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSArICcoIXxcXFxcPyk/OicsXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICBiZWdpbjogJzooPyFcXFxccyknLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgU1RSSU5HLFxuICAgICAgICB7IGJlZ2luOiBSVUJZX01FVEhPRF9SRSB9XG4gICAgICBdLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICBOVU1CRVIsXG4gICAge1xuICAgICAgLy8gbmVnYXRpdmUtbG9vayBmb3J3YXJkIGF0dGVtcHRzIHRvIHByZXZlbnQgZmFsc2UgbWF0Y2hlcyBsaWtlOlxuICAgICAgLy8gQGlkZW50QCBvciAkaWRlbnQkIHRoYXQgbWlnaHQgaW5kaWNhdGUgdGhpcyBpcyBub3QgcnVieSBhdCBhbGxcbiAgICAgIGNsYXNzTmFtZTogXCJ2YXJpYWJsZVwiLFxuICAgICAgYmVnaW46ICcoXFxcXCRcXFxcVyl8KChcXFxcJHxAQD8pKFxcXFx3KykpKD89W15AJD9dKScgKyBgKD8hW0EtWmEtel0pKD8hW0AkPyddKWBcbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICBiZWdpbjogL1xcfC8sXG4gICAgICBlbmQ6IC9cXHwvLFxuICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICAgIHJlbGV2YW5jZTogMCwgLy8gdGhpcyBjb3VsZCBiZSBhIGxvdCBvZiB0aGluZ3MgKGluIG90aGVyIGxhbmd1YWdlcykgb3RoZXIgdGhhbiBwYXJhbXNcbiAgICAgIGtleXdvcmRzOiBSVUJZX0tFWVdPUkRTXG4gICAgfSxcbiAgICB7IC8vIHJlZ2V4cCBjb250YWluZXJcbiAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3x1bmxlc3MpXFxcXHMqJyxcbiAgICAgIGtleXdvcmRzOiAndW5sZXNzJyxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdyZWdleHAnLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICBobGpzLkJBQ0tTTEFTSF9FU0NBUEUsXG4gICAgICAgICAgICBTVUJTVFxuICAgICAgICAgIF0sXG4gICAgICAgICAgaWxsZWdhbDogL1xcbi8sXG4gICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46ICcvJyxcbiAgICAgICAgICAgICAgZW5kOiAnL1thLXpdKidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAvJXJcXHsvLFxuICAgICAgICAgICAgICBlbmQ6IC9cXH1bYS16XSovXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBiZWdpbjogJyVyXFxcXCgnLFxuICAgICAgICAgICAgICBlbmQ6ICdcXFxcKVthLXpdKidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAnJXIhJyxcbiAgICAgICAgICAgICAgZW5kOiAnIVthLXpdKidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJlZ2luOiAnJXJcXFxcWycsXG4gICAgICAgICAgICAgIGVuZDogJ1xcXFxdW2Etel0qJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgXS5jb25jYXQoSVJCX09CSkVDVCwgQ09NTUVOVF9NT0RFUyksXG4gICAgICByZWxldmFuY2U6IDBcbiAgICB9XG4gIF0uY29uY2F0KElSQl9PQkpFQ1QsIENPTU1FTlRfTU9ERVMpO1xuXG4gIFNVQlNULmNvbnRhaW5zID0gUlVCWV9ERUZBVUxUX0NPTlRBSU5TO1xuICBQQVJBTVMuY29udGFpbnMgPSBSVUJZX0RFRkFVTFRfQ09OVEFJTlM7XG5cbiAgLy8gPj5cbiAgLy8gPz5cbiAgY29uc3QgU0lNUExFX1BST01QVCA9IFwiWz4/XT5cIjtcbiAgLy8gaXJiKG1haW4pOjAwMTowPlxuICBjb25zdCBERUZBVUxUX1BST01QVCA9IFwiW1xcXFx3I10rXFxcXChcXFxcdytcXFxcKTpcXFxcZCs6XFxcXGQrWz4qXVwiO1xuICBjb25zdCBSVk1fUFJPTVBUID0gXCIoXFxcXHcrLSk/XFxcXGQrXFxcXC5cXFxcZCtcXFxcLlxcXFxkKyhwXFxcXGQrKT9bXlxcXFxkXVtePl0rPlwiO1xuXG4gIGNvbnN0IElSQl9ERUZBVUxUID0gW1xuICAgIHtcbiAgICAgIGJlZ2luOiAvXlxccyo9Pi8sXG4gICAgICBzdGFydHM6IHtcbiAgICAgICAgZW5kOiAnJCcsXG4gICAgICAgIGNvbnRhaW5zOiBSVUJZX0RFRkFVTFRfQ09OVEFJTlNcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ21ldGEucHJvbXB0JyxcbiAgICAgIGJlZ2luOiAnXignICsgU0lNUExFX1BST01QVCArIFwifFwiICsgREVGQVVMVF9QUk9NUFQgKyAnfCcgKyBSVk1fUFJPTVBUICsgJykoPz1bIF0pJyxcbiAgICAgIHN0YXJ0czoge1xuICAgICAgICBlbmQ6ICckJyxcbiAgICAgICAga2V5d29yZHM6IFJVQllfS0VZV09SRFMsXG4gICAgICAgIGNvbnRhaW5zOiBSVUJZX0RFRkFVTFRfQ09OVEFJTlNcbiAgICAgIH1cbiAgICB9XG4gIF07XG5cbiAgQ09NTUVOVF9NT0RFUy51bnNoaWZ0KElSQl9PQkpFQ1QpO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1J1YnknLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICdyYicsXG4gICAgICAnZ2Vtc3BlYycsXG4gICAgICAncG9kc3BlYycsXG4gICAgICAndGhvcicsXG4gICAgICAnaXJiJ1xuICAgIF0sXG4gICAga2V5d29yZHM6IFJVQllfS0VZV09SRFMsXG4gICAgaWxsZWdhbDogL1xcL1xcKi8sXG4gICAgY29udGFpbnM6IFsgaGxqcy5TSEVCQU5HKHsgYmluYXJ5OiBcInJ1YnlcIiB9KSBdXG4gICAgICAuY29uY2F0KElSQl9ERUZBVUxUKVxuICAgICAgLmNvbmNhdChDT01NRU5UX01PREVTKVxuICAgICAgLmNvbmNhdChSVUJZX0RFRkFVTFRfQ09OVEFJTlMpXG4gIH07XG59XG5cbmV4cG9ydCB7IHJ1YnkgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbInJ1YnkiLCJobGpzIiwicmVnZXgiLCJSVUJZX01FVEhPRF9SRSIsIkNMQVNTX05BTUVfUkUiLCJlaXRoZXIiLCJDTEFTU19OQU1FX1dJVEhfTkFNRVNQQUNFX1JFIiwiY29uY2F0IiwiUFNFVURPX0tXUyIsIlJVQllfS0VZV09SRFMiLCJrZXl3b3JkIiwiYnVpbHRfaW4iLCJsaXRlcmFsIiwiWUFSRE9DVEFHIiwiY2xhc3NOYW1lIiwiYmVnaW4iLCJJUkJfT0JKRUNUIiwiZW5kIiwiQ09NTUVOVF9NT0RFUyIsIkNPTU1FTlQiLCJjb250YWlucyIsInJlbGV2YW5jZSIsIk1BVENIX05PVEhJTkdfUkUiLCJTVUJTVCIsImtleXdvcmRzIiwiU1RSSU5HIiwiQkFDS1NMQVNIX0VTQ0FQRSIsInZhcmlhbnRzIiwibG9va2FoZWFkIiwiRU5EX1NBTUVfQVNfQkVHSU4iLCJkZWNpbWFsIiwiZGlnaXRzIiwiTlVNQkVSIiwiUEFSQU1TIiwibWF0Y2giLCJleGNsdWRlQmVnaW4iLCJlbmRzUGFyZW50IiwiSU5DTFVERV9FWFRFTkQiLCJzY29wZSIsIkNMQVNTX0RFRklOSVRJT04iLCJVUFBFUl9DQVNFX0NPTlNUQU5UIiwiTUVUSE9EX0RFRklOSVRJT04iLCJPQkpFQ1RfQ1JFQVRJT04iLCJDTEFTU19SRUZFUkVOQ0UiLCJSVUJZX0RFRkFVTFRfQ09OVEFJTlMiLCJJREVOVF9SRSIsIlVOREVSU0NPUkVfSURFTlRfUkUiLCJleGNsdWRlRW5kIiwiUkVfU1RBUlRFUlNfUkUiLCJpbGxlZ2FsIiwiU0lNUExFX1BST01QVCIsIkRFRkFVTFRfUFJPTVBUIiwiUlZNX1BST01QVCIsIklSQl9ERUZBVUxUIiwic3RhcnRzIiwidW5zaGlmdCIsIm5hbWUiLCJhbGlhc2VzIiwiU0hFQkFORyIsImJpbmFyeSIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/ruby.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/rust.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/rust.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ rust)\n/* harmony export */ });\n/*\nLanguage: Rust\nAuthor: Andrey Vlasovskikh <andrey.vlasovskikh@gmail.com>\nContributors: Roman Shmatov <romanshmatov@gmail.com>, Kasper Andersen <kma_untrusted@protonmail.com>\nWebsite: https://www.rust-lang.org\nCategory: common, system\n*/ /** @type LanguageFn */ function rust(hljs) {\n const regex = hljs.regex;\n const FUNCTION_INVOKE = {\n className: \"title.function.invoke\",\n relevance: 0,\n begin: regex.concat(/\\b/, /(?!let\\b)/, hljs.IDENT_RE, regex.lookahead(/\\s*\\(/))\n };\n const NUMBER_SUFFIX = \"([ui](8|16|32|64|128|size)|f(32|64))?\";\n const KEYWORDS = [\n \"abstract\",\n \"as\",\n \"async\",\n \"await\",\n \"become\",\n \"box\",\n \"break\",\n \"const\",\n \"continue\",\n \"crate\",\n \"do\",\n \"dyn\",\n \"else\",\n \"enum\",\n \"extern\",\n \"false\",\n \"final\",\n \"fn\",\n \"for\",\n \"if\",\n \"impl\",\n \"in\",\n \"let\",\n \"loop\",\n \"macro\",\n \"match\",\n \"mod\",\n \"move\",\n \"mut\",\n \"override\",\n \"priv\",\n \"pub\",\n \"ref\",\n \"return\",\n \"self\",\n \"Self\",\n \"static\",\n \"struct\",\n \"super\",\n \"trait\",\n \"true\",\n \"try\",\n \"type\",\n \"typeof\",\n \"unsafe\",\n \"unsized\",\n \"use\",\n \"virtual\",\n \"where\",\n \"while\",\n \"yield\"\n ];\n const LITERALS = [\n \"true\",\n \"false\",\n \"Some\",\n \"None\",\n \"Ok\",\n \"Err\"\n ];\n const BUILTINS = [\n // functions\n \"drop \",\n // traits\n \"Copy\",\n \"Send\",\n \"Sized\",\n \"Sync\",\n \"Drop\",\n \"Fn\",\n \"FnMut\",\n \"FnOnce\",\n \"ToOwned\",\n \"Clone\",\n \"Debug\",\n \"PartialEq\",\n \"PartialOrd\",\n \"Eq\",\n \"Ord\",\n \"AsRef\",\n \"AsMut\",\n \"Into\",\n \"From\",\n \"Default\",\n \"Iterator\",\n \"Extend\",\n \"IntoIterator\",\n \"DoubleEndedIterator\",\n \"ExactSizeIterator\",\n \"SliceConcatExt\",\n \"ToString\",\n // macros\n \"assert!\",\n \"assert_eq!\",\n \"bitflags!\",\n \"bytes!\",\n \"cfg!\",\n \"col!\",\n \"concat!\",\n \"concat_idents!\",\n \"debug_assert!\",\n \"debug_assert_eq!\",\n \"env!\",\n \"panic!\",\n \"file!\",\n \"format!\",\n \"format_args!\",\n \"include_bytes!\",\n \"include_str!\",\n \"line!\",\n \"local_data_key!\",\n \"module_path!\",\n \"option_env!\",\n \"print!\",\n \"println!\",\n \"select!\",\n \"stringify!\",\n \"try!\",\n \"unimplemented!\",\n \"unreachable!\",\n \"vec!\",\n \"write!\",\n \"writeln!\",\n \"macro_rules!\",\n \"assert_ne!\",\n \"debug_assert_ne!\"\n ];\n const TYPES = [\n \"i8\",\n \"i16\",\n \"i32\",\n \"i64\",\n \"i128\",\n \"isize\",\n \"u8\",\n \"u16\",\n \"u32\",\n \"u64\",\n \"u128\",\n \"usize\",\n \"f32\",\n \"f64\",\n \"str\",\n \"char\",\n \"bool\",\n \"Box\",\n \"Option\",\n \"Result\",\n \"String\",\n \"Vec\"\n ];\n return {\n name: \"Rust\",\n aliases: [\n \"rs\"\n ],\n keywords: {\n $pattern: hljs.IDENT_RE + \"!?\",\n type: TYPES,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILTINS\n },\n illegal: \"</\",\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\"/\\\\*\", \"\\\\*/\", {\n contains: [\n \"self\"\n ]\n }),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {\n begin: /b?\"/,\n illegal: null\n }),\n {\n className: \"string\",\n variants: [\n {\n begin: /b?r(#*)\"(.|\\n)*?\"\\1(?!#)/\n },\n {\n begin: /b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/\n }\n ]\n },\n {\n className: \"symbol\",\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*/\n },\n {\n className: \"number\",\n variants: [\n {\n begin: \"\\\\b0b([01_]+)\" + NUMBER_SUFFIX\n },\n {\n begin: \"\\\\b0o([0-7_]+)\" + NUMBER_SUFFIX\n },\n {\n begin: \"\\\\b0x([A-Fa-f0-9_]+)\" + NUMBER_SUFFIX\n },\n {\n begin: \"\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)\" + NUMBER_SUFFIX\n }\n ],\n relevance: 0\n },\n {\n begin: [\n /fn/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n }\n },\n {\n className: \"meta\",\n begin: \"#!?\\\\[\",\n end: \"\\\\]\",\n contains: [\n {\n className: \"string\",\n begin: /\"/,\n end: /\"/\n }\n ]\n },\n {\n begin: [\n /let/,\n /\\s+/,\n /(?:mut\\s+)?/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"keyword\",\n 4: \"variable\"\n }\n },\n // must come before impl/for rule later\n {\n begin: [\n /for/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE,\n /\\s+/,\n /in/\n ],\n className: {\n 1: \"keyword\",\n 3: \"variable\",\n 5: \"keyword\"\n }\n },\n {\n begin: [\n /type/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n begin: [\n /(?:trait|enum|struct|union|impl|for)/,\n /\\s+/,\n hljs.UNDERSCORE_IDENT_RE\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n },\n {\n begin: hljs.IDENT_RE + \"::\",\n keywords: {\n keyword: \"Self\",\n built_in: BUILTINS,\n type: TYPES\n }\n },\n {\n className: \"punctuation\",\n begin: \"->\"\n },\n FUNCTION_INVOKE\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9ydXN0LmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7O0FBTUEsR0FFQSxxQkFBcUIsR0FDckIsU0FBU0EsS0FBS0MsSUFBSTtJQUNoQixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLE1BQU1DLGtCQUFrQjtRQUN0QkMsV0FBVztRQUNYQyxXQUFXO1FBQ1hDLE9BQU9KLE1BQU1LLE1BQU0sQ0FDakIsTUFDQSxhQUNBTixLQUFLTyxRQUFRLEVBQ2JOLE1BQU1PLFNBQVMsQ0FBQztJQUNwQjtJQUNBLE1BQU1DLGdCQUFnQjtJQUN0QixNQUFNQyxXQUFXO1FBQ2Y7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFDRCxNQUFNQyxXQUFXO1FBQ2Y7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFDRCxNQUFNQyxXQUFXO1FBQ2YsWUFBWTtRQUNaO1FBQ0EsU0FBUztRQUNUO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLFNBQVM7UUFDVDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBQ0QsTUFBTUMsUUFBUTtRQUNaO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFDRCxPQUFPO1FBQ0xDLE1BQU07UUFDTkMsU0FBUztZQUFFO1NBQU07UUFDakJDLFVBQVU7WUFDUkMsVUFBVWpCLEtBQUtPLFFBQVEsR0FBRztZQUMxQlcsTUFBTUw7WUFDTk0sU0FBU1Q7WUFDVFUsU0FBU1Q7WUFDVFUsVUFBVVQ7UUFDWjtRQUNBVSxTQUFTO1FBQ1RDLFVBQVU7WUFDUnZCLEtBQUt3QixtQkFBbUI7WUFDeEJ4QixLQUFLeUIsT0FBTyxDQUFDLFFBQVEsUUFBUTtnQkFBRUYsVUFBVTtvQkFBRTtpQkFBUTtZQUFDO1lBQ3BEdkIsS0FBSzBCLE9BQU8sQ0FBQzFCLEtBQUsyQixpQkFBaUIsRUFBRTtnQkFDbkN0QixPQUFPO2dCQUNQaUIsU0FBUztZQUNYO1lBQ0E7Z0JBQ0VuQixXQUFXO2dCQUNYeUIsVUFBVTtvQkFDUjt3QkFBRXZCLE9BQU87b0JBQTJCO29CQUNwQzt3QkFBRUEsT0FBTztvQkFBa0M7aUJBQzVDO1lBQ0g7WUFDQTtnQkFDRUYsV0FBVztnQkFDWEUsT0FBTztZQUNUO1lBQ0E7Z0JBQ0VGLFdBQVc7Z0JBQ1h5QixVQUFVO29CQUNSO3dCQUFFdkIsT0FBTyxrQkFBa0JJO29CQUFjO29CQUN6Qzt3QkFBRUosT0FBTyxtQkFBbUJJO29CQUFjO29CQUMxQzt3QkFBRUosT0FBTyx5QkFBeUJJO29CQUFjO29CQUNoRDt3QkFBRUosT0FBTyxvREFDRUk7b0JBQWM7aUJBQzFCO2dCQUNETCxXQUFXO1lBQ2I7WUFDQTtnQkFDRUMsT0FBTztvQkFDTDtvQkFDQTtvQkFDQUwsS0FBSzZCLG1CQUFtQjtpQkFDekI7Z0JBQ0QxQixXQUFXO29CQUNULEdBQUc7b0JBQ0gsR0FBRztnQkFDTDtZQUNGO1lBQ0E7Z0JBQ0VBLFdBQVc7Z0JBQ1hFLE9BQU87Z0JBQ1B5QixLQUFLO2dCQUNMUCxVQUFVO29CQUNSO3dCQUNFcEIsV0FBVzt3QkFDWEUsT0FBTzt3QkFDUHlCLEtBQUs7b0JBQ1A7aUJBQ0Q7WUFDSDtZQUNBO2dCQUNFekIsT0FBTztvQkFDTDtvQkFDQTtvQkFDQTtvQkFDQUwsS0FBSzZCLG1CQUFtQjtpQkFDekI7Z0JBQ0QxQixXQUFXO29CQUNULEdBQUc7b0JBQ0gsR0FBRztvQkFDSCxHQUFHO2dCQUNMO1lBQ0Y7WUFDQSx1Q0FBdUM7WUFDdkM7Z0JBQ0VFLE9BQU87b0JBQ0w7b0JBQ0E7b0JBQ0FMLEtBQUs2QixtQkFBbUI7b0JBQ3hCO29CQUNBO2lCQUNEO2dCQUNEMUIsV0FBVztvQkFDVCxHQUFHO29CQUNILEdBQUc7b0JBQ0gsR0FBRztnQkFDTDtZQUNGO1lBQ0E7Z0JBQ0VFLE9BQU87b0JBQ0w7b0JBQ0E7b0JBQ0FMLEtBQUs2QixtQkFBbUI7aUJBQ3pCO2dCQUNEMUIsV0FBVztvQkFDVCxHQUFHO29CQUNILEdBQUc7Z0JBQ0w7WUFDRjtZQUNBO2dCQUNFRSxPQUFPO29CQUNMO29CQUNBO29CQUNBTCxLQUFLNkIsbUJBQW1CO2lCQUN6QjtnQkFDRDFCLFdBQVc7b0JBQ1QsR0FBRztvQkFDSCxHQUFHO2dCQUNMO1lBQ0Y7WUFDQTtnQkFDRUUsT0FBT0wsS0FBS08sUUFBUSxHQUFHO2dCQUN2QlMsVUFBVTtvQkFDUkcsU0FBUztvQkFDVEUsVUFBVVQ7b0JBQ1ZNLE1BQU1MO2dCQUNSO1lBQ0Y7WUFDQTtnQkFDRVYsV0FBVztnQkFDWEUsT0FBTztZQUNUO1lBQ0FIO1NBQ0Q7SUFDSDtBQUNGO0FBRTJCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dGNoYXQvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9ydXN0LmpzPzQ2ZTYiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBSdXN0XG5BdXRob3I6IEFuZHJleSBWbGFzb3Zza2lraCA8YW5kcmV5LnZsYXNvdnNraWtoQGdtYWlsLmNvbT5cbkNvbnRyaWJ1dG9yczogUm9tYW4gU2htYXRvdiA8cm9tYW5zaG1hdG92QGdtYWlsLmNvbT4sIEthc3BlciBBbmRlcnNlbiA8a21hX3VudHJ1c3RlZEBwcm90b25tYWlsLmNvbT5cbldlYnNpdGU6IGh0dHBzOi8vd3d3LnJ1c3QtbGFuZy5vcmdcbkNhdGVnb3J5OiBjb21tb24sIHN5c3RlbVxuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIHJ1c3QoaGxqcykge1xuICBjb25zdCByZWdleCA9IGhsanMucmVnZXg7XG4gIGNvbnN0IEZVTkNUSU9OX0lOVk9LRSA9IHtcbiAgICBjbGFzc05hbWU6IFwidGl0bGUuZnVuY3Rpb24uaW52b2tlXCIsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGJlZ2luOiByZWdleC5jb25jYXQoXG4gICAgICAvXFxiLyxcbiAgICAgIC8oPyFsZXRcXGIpLyxcbiAgICAgIGhsanMuSURFTlRfUkUsXG4gICAgICByZWdleC5sb29rYWhlYWQoL1xccypcXCgvKSlcbiAgfTtcbiAgY29uc3QgTlVNQkVSX1NVRkZJWCA9ICcoW3VpXSg4fDE2fDMyfDY0fDEyOHxzaXplKXxmKDMyfDY0KSlcXD8nO1xuICBjb25zdCBLRVlXT1JEUyA9IFtcbiAgICBcImFic3RyYWN0XCIsXG4gICAgXCJhc1wiLFxuICAgIFwiYXN5bmNcIixcbiAgICBcImF3YWl0XCIsXG4gICAgXCJiZWNvbWVcIixcbiAgICBcImJveFwiLFxuICAgIFwiYnJlYWtcIixcbiAgICBcImNvbnN0XCIsXG4gICAgXCJjb250aW51ZVwiLFxuICAgIFwiY3JhdGVcIixcbiAgICBcImRvXCIsXG4gICAgXCJkeW5cIixcbiAgICBcImVsc2VcIixcbiAgICBcImVudW1cIixcbiAgICBcImV4dGVyblwiLFxuICAgIFwiZmFsc2VcIixcbiAgICBcImZpbmFsXCIsXG4gICAgXCJmblwiLFxuICAgIFwiZm9yXCIsXG4gICAgXCJpZlwiLFxuICAgIFwiaW1wbFwiLFxuICAgIFwiaW5cIixcbiAgICBcImxldFwiLFxuICAgIFwibG9vcFwiLFxuICAgIFwibWFjcm9cIixcbiAgICBcIm1hdGNoXCIsXG4gICAgXCJtb2RcIixcbiAgICBcIm1vdmVcIixcbiAgICBcIm11dFwiLFxuICAgIFwib3ZlcnJpZGVcIixcbiAgICBcInByaXZcIixcbiAgICBcInB1YlwiLFxuICAgIFwicmVmXCIsXG4gICAgXCJyZXR1cm5cIixcbiAgICBcInNlbGZcIixcbiAgICBcIlNlbGZcIixcbiAgICBcInN0YXRpY1wiLFxuICAgIFwic3RydWN0XCIsXG4gICAgXCJzdXBlclwiLFxuICAgIFwidHJhaXRcIixcbiAgICBcInRydWVcIixcbiAgICBcInRyeVwiLFxuICAgIFwidHlwZVwiLFxuICAgIFwidHlwZW9mXCIsXG4gICAgXCJ1bnNhZmVcIixcbiAgICBcInVuc2l6ZWRcIixcbiAgICBcInVzZVwiLFxuICAgIFwidmlydHVhbFwiLFxuICAgIFwid2hlcmVcIixcbiAgICBcIndoaWxlXCIsXG4gICAgXCJ5aWVsZFwiXG4gIF07XG4gIGNvbnN0IExJVEVSQUxTID0gW1xuICAgIFwidHJ1ZVwiLFxuICAgIFwiZmFsc2VcIixcbiAgICBcIlNvbWVcIixcbiAgICBcIk5vbmVcIixcbiAgICBcIk9rXCIsXG4gICAgXCJFcnJcIlxuICBdO1xuICBjb25zdCBCVUlMVElOUyA9IFtcbiAgICAvLyBmdW5jdGlvbnNcbiAgICAnZHJvcCAnLFxuICAgIC8vIHRyYWl0c1xuICAgIFwiQ29weVwiLFxuICAgIFwiU2VuZFwiLFxuICAgIFwiU2l6ZWRcIixcbiAgICBcIlN5bmNcIixcbiAgICBcIkRyb3BcIixcbiAgICBcIkZuXCIsXG4gICAgXCJGbk11dFwiLFxuICAgIFwiRm5PbmNlXCIsXG4gICAgXCJUb093bmVkXCIsXG4gICAgXCJDbG9uZVwiLFxuICAgIFwiRGVidWdcIixcbiAgICBcIlBhcnRpYWxFcVwiLFxuICAgIFwiUGFydGlhbE9yZFwiLFxuICAgIFwiRXFcIixcbiAgICBcIk9yZFwiLFxuICAgIFwiQXNSZWZcIixcbiAgICBcIkFzTXV0XCIsXG4gICAgXCJJbnRvXCIsXG4gICAgXCJGcm9tXCIsXG4gICAgXCJEZWZhdWx0XCIsXG4gICAgXCJJdGVyYXRvclwiLFxuICAgIFwiRXh0ZW5kXCIsXG4gICAgXCJJbnRvSXRlcmF0b3JcIixcbiAgICBcIkRvdWJsZUVuZGVkSXRlcmF0b3JcIixcbiAgICBcIkV4YWN0U2l6ZUl0ZXJhdG9yXCIsXG4gICAgXCJTbGljZUNvbmNhdEV4dFwiLFxuICAgIFwiVG9TdHJpbmdcIixcbiAgICAvLyBtYWNyb3NcbiAgICBcImFzc2VydCFcIixcbiAgICBcImFzc2VydF9lcSFcIixcbiAgICBcImJpdGZsYWdzIVwiLFxuICAgIFwiYnl0ZXMhXCIsXG4gICAgXCJjZmchXCIsXG4gICAgXCJjb2whXCIsXG4gICAgXCJjb25jYXQhXCIsXG4gICAgXCJjb25jYXRfaWRlbnRzIVwiLFxuICAgIFwiZGVidWdfYXNzZXJ0IVwiLFxuICAgIFwiZGVidWdfYXNzZXJ0X2VxIVwiLFxuICAgIFwiZW52IVwiLFxuICAgIFwicGFuaWMhXCIsXG4gICAgXCJmaWxlIVwiLFxuICAgIFwiZm9ybWF0IVwiLFxuICAgIFwiZm9ybWF0X2FyZ3MhXCIsXG4gICAgXCJpbmNsdWRlX2J5dGVzIVwiLFxuICAgIFwiaW5jbHVkZV9zdHIhXCIsXG4gICAgXCJsaW5lIVwiLFxuICAgIFwibG9jYWxfZGF0YV9rZXkhXCIsXG4gICAgXCJtb2R1bGVfcGF0aCFcIixcbiAgICBcIm9wdGlvbl9lbnYhXCIsXG4gICAgXCJwcmludCFcIixcbiAgICBcInByaW50bG4hXCIsXG4gICAgXCJzZWxlY3QhXCIsXG4gICAgXCJzdHJpbmdpZnkhXCIsXG4gICAgXCJ0cnkhXCIsXG4gICAgXCJ1bmltcGxlbWVudGVkIVwiLFxuICAgIFwidW5yZWFjaGFibGUhXCIsXG4gICAgXCJ2ZWMhXCIsXG4gICAgXCJ3cml0ZSFcIixcbiAgICBcIndyaXRlbG4hXCIsXG4gICAgXCJtYWNyb19ydWxlcyFcIixcbiAgICBcImFzc2VydF9uZSFcIixcbiAgICBcImRlYnVnX2Fzc2VydF9uZSFcIlxuICBdO1xuICBjb25zdCBUWVBFUyA9IFtcbiAgICBcImk4XCIsXG4gICAgXCJpMTZcIixcbiAgICBcImkzMlwiLFxuICAgIFwiaTY0XCIsXG4gICAgXCJpMTI4XCIsXG4gICAgXCJpc2l6ZVwiLFxuICAgIFwidThcIixcbiAgICBcInUxNlwiLFxuICAgIFwidTMyXCIsXG4gICAgXCJ1NjRcIixcbiAgICBcInUxMjhcIixcbiAgICBcInVzaXplXCIsXG4gICAgXCJmMzJcIixcbiAgICBcImY2NFwiLFxuICAgIFwic3RyXCIsXG4gICAgXCJjaGFyXCIsXG4gICAgXCJib29sXCIsXG4gICAgXCJCb3hcIixcbiAgICBcIk9wdGlvblwiLFxuICAgIFwiUmVzdWx0XCIsXG4gICAgXCJTdHJpbmdcIixcbiAgICBcIlZlY1wiXG4gIF07XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1J1c3QnLFxuICAgIGFsaWFzZXM6IFsgJ3JzJyBdLFxuICAgIGtleXdvcmRzOiB7XG4gICAgICAkcGF0dGVybjogaGxqcy5JREVOVF9SRSArICchPycsXG4gICAgICB0eXBlOiBUWVBFUyxcbiAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgICBidWlsdF9pbjogQlVJTFRJTlNcbiAgICB9LFxuICAgIGlsbGVnYWw6ICc8LycsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQ19MSU5FX0NPTU1FTlRfTU9ERSxcbiAgICAgIGhsanMuQ09NTUVOVCgnL1xcXFwqJywgJ1xcXFwqLycsIHsgY29udGFpbnM6IFsgJ3NlbGYnIF0gfSksXG4gICAgICBobGpzLmluaGVyaXQoaGxqcy5RVU9URV9TVFJJTkdfTU9ERSwge1xuICAgICAgICBiZWdpbjogL2I/XCIvLFxuICAgICAgICBpbGxlZ2FsOiBudWxsXG4gICAgICB9KSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICB7IGJlZ2luOiAvYj9yKCMqKVwiKC58XFxuKSo/XCJcXDEoPyEjKS8gfSxcbiAgICAgICAgICB7IGJlZ2luOiAvYj8nXFxcXD8oeFxcd3syfXx1XFx3ezR9fFVcXHd7OH18LiknLyB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgICAgIGJlZ2luOiAvJ1thLXpBLVpfXVthLXpBLVowLTlfXSovXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYjBiKFswMV9dKyknICsgTlVNQkVSX1NVRkZJWCB9LFxuICAgICAgICAgIHsgYmVnaW46ICdcXFxcYjBvKFswLTdfXSspJyArIE5VTUJFUl9TVUZGSVggfSxcbiAgICAgICAgICB7IGJlZ2luOiAnXFxcXGIweChbQS1GYS1mMC05X10rKScgKyBOVU1CRVJfU1VGRklYIH0sXG4gICAgICAgICAgeyBiZWdpbjogJ1xcXFxiKFxcXFxkW1xcXFxkX10qKFxcXFwuWzAtOV9dKyk/KFtlRV1bKy1dP1swLTlfXSspPyknXG4gICAgICAgICAgICAgICAgICAgKyBOVU1CRVJfU1VGRklYIH1cbiAgICAgICAgXSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogW1xuICAgICAgICAgIC9mbi8sXG4gICAgICAgICAgL1xccysvLFxuICAgICAgICAgIGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRVxuICAgICAgICBdLFxuICAgICAgICBjbGFzc05hbWU6IHtcbiAgICAgICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgICAgICAzOiBcInRpdGxlLmZ1bmN0aW9uXCJcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICAgIGJlZ2luOiAnIyE/XFxcXFsnLFxuICAgICAgICBlbmQ6ICdcXFxcXScsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICAgICAgZW5kOiAvXCIvXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogW1xuICAgICAgICAgIC9sZXQvLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICAvKD86bXV0XFxzKyk/LyxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcbiAgICAgICAgXSxcbiAgICAgICAgY2xhc3NOYW1lOiB7XG4gICAgICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAgICAgMzogXCJrZXl3b3JkXCIsXG4gICAgICAgICAgNDogXCJ2YXJpYWJsZVwiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBtdXN0IGNvbWUgYmVmb3JlIGltcGwvZm9yIHJ1bGUgbGF0ZXJcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IFtcbiAgICAgICAgICAvZm9yLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICAvaW4vXG4gICAgICAgIF0sXG4gICAgICAgIGNsYXNzTmFtZToge1xuICAgICAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgICAgIDM6IFwidmFyaWFibGVcIixcbiAgICAgICAgICA1OiBcImtleXdvcmRcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogW1xuICAgICAgICAgIC90eXBlLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFXG4gICAgICAgIF0sXG4gICAgICAgIGNsYXNzTmFtZToge1xuICAgICAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgICAgIDM6IFwidGl0bGUuY2xhc3NcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogW1xuICAgICAgICAgIC8oPzp0cmFpdHxlbnVtfHN0cnVjdHx1bmlvbnxpbXBsfGZvcikvLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICBobGpzLlVOREVSU0NPUkVfSURFTlRfUkVcbiAgICAgICAgXSxcbiAgICAgICAgY2xhc3NOYW1lOiB7XG4gICAgICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAgICAgMzogXCJ0aXRsZS5jbGFzc1wiXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiBobGpzLklERU5UX1JFICsgJzo6JyxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICBrZXl3b3JkOiBcIlNlbGZcIixcbiAgICAgICAgICBidWlsdF9pbjogQlVJTFRJTlMsXG4gICAgICAgICAgdHlwZTogVFlQRVNcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcInB1bmN0dWF0aW9uXCIsXG4gICAgICAgIGJlZ2luOiAnLT4nXG4gICAgICB9LFxuICAgICAgRlVOQ1RJT05fSU5WT0tFXG4gICAgXVxuICB9O1xufVxuXG5leHBvcnQgeyBydXN0IGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJydXN0IiwiaGxqcyIsInJlZ2V4IiwiRlVOQ1RJT05fSU5WT0tFIiwiY2xhc3NOYW1lIiwicmVsZXZhbmNlIiwiYmVnaW4iLCJjb25jYXQiLCJJREVOVF9SRSIsImxvb2thaGVhZCIsIk5VTUJFUl9TVUZGSVgiLCJLRVlXT1JEUyIsIkxJVEVSQUxTIiwiQlVJTFRJTlMiLCJUWVBFUyIsIm5hbWUiLCJhbGlhc2VzIiwia2V5d29yZHMiLCIkcGF0dGVybiIsInR5cGUiLCJrZXl3b3JkIiwibGl0ZXJhbCIsImJ1aWx0X2luIiwiaWxsZWdhbCIsImNvbnRhaW5zIiwiQ19MSU5FX0NPTU1FTlRfTU9ERSIsIkNPTU1FTlQiLCJpbmhlcml0IiwiUVVPVEVfU1RSSU5HX01PREUiLCJ2YXJpYW50cyIsIlVOREVSU0NPUkVfSURFTlRfUkUiLCJlbmQiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/rust.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/scss.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/scss.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ scss)\n/* harmony export */ });\nconst MODES = (hljs)=>{\n return {\n IMPORTANT: {\n scope: \"meta\",\n begin: \"!important\"\n },\n BLOCK_COMMENT: hljs.C_BLOCK_COMMENT_MODE,\n HEXCOLOR: {\n scope: \"number\",\n begin: /#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\\b/\n },\n FUNCTION_DISPATCH: {\n className: \"built_in\",\n begin: /[\\w-]+(?=\\()/\n },\n ATTRIBUTE_SELECTOR_MODE: {\n scope: \"selector-attr\",\n begin: /\\[/,\n end: /\\]/,\n illegal: \"$\",\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n CSS_NUMBER_MODE: {\n scope: \"number\",\n begin: hljs.NUMBER_RE + \"(\" + \"%|em|ex|ch|rem\" + \"|vw|vh|vmin|vmax\" + \"|cm|mm|in|pt|pc|px\" + \"|deg|grad|rad|turn\" + \"|s|ms\" + \"|Hz|kHz\" + \"|dpi|dpcm|dppx\" + \")?\",\n relevance: 0\n },\n CSS_VARIABLE: {\n className: \"attr\",\n begin: /--[A-Za-z][A-Za-z0-9_-]*/\n }\n };\n};\nconst TAGS = [\n \"a\",\n \"abbr\",\n \"address\",\n \"article\",\n \"aside\",\n \"audio\",\n \"b\",\n \"blockquote\",\n \"body\",\n \"button\",\n \"canvas\",\n \"caption\",\n \"cite\",\n \"code\",\n \"dd\",\n \"del\",\n \"details\",\n \"dfn\",\n \"div\",\n \"dl\",\n \"dt\",\n \"em\",\n \"fieldset\",\n \"figcaption\",\n \"figure\",\n \"footer\",\n \"form\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"hgroup\",\n \"html\",\n \"i\",\n \"iframe\",\n \"img\",\n \"input\",\n \"ins\",\n \"kbd\",\n \"label\",\n \"legend\",\n \"li\",\n \"main\",\n \"mark\",\n \"menu\",\n \"nav\",\n \"object\",\n \"ol\",\n \"p\",\n \"q\",\n \"quote\",\n \"samp\",\n \"section\",\n \"span\",\n \"strong\",\n \"summary\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"textarea\",\n \"tfoot\",\n \"th\",\n \"thead\",\n \"time\",\n \"tr\",\n \"ul\",\n \"var\",\n \"video\"\n];\nconst MEDIA_FEATURES = [\n \"any-hover\",\n \"any-pointer\",\n \"aspect-ratio\",\n \"color\",\n \"color-gamut\",\n \"color-index\",\n \"device-aspect-ratio\",\n \"device-height\",\n \"device-width\",\n \"display-mode\",\n \"forced-colors\",\n \"grid\",\n \"height\",\n \"hover\",\n \"inverted-colors\",\n \"monochrome\",\n \"orientation\",\n \"overflow-block\",\n \"overflow-inline\",\n \"pointer\",\n \"prefers-color-scheme\",\n \"prefers-contrast\",\n \"prefers-reduced-motion\",\n \"prefers-reduced-transparency\",\n \"resolution\",\n \"scan\",\n \"scripting\",\n \"update\",\n \"width\",\n // TODO: find a better solution?\n \"min-width\",\n \"max-width\",\n \"min-height\",\n \"max-height\"\n];\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes\nconst PSEUDO_CLASSES = [\n \"active\",\n \"any-link\",\n \"blank\",\n \"checked\",\n \"current\",\n \"default\",\n \"defined\",\n \"dir\",\n \"disabled\",\n \"drop\",\n \"empty\",\n \"enabled\",\n \"first\",\n \"first-child\",\n \"first-of-type\",\n \"fullscreen\",\n \"future\",\n \"focus\",\n \"focus-visible\",\n \"focus-within\",\n \"has\",\n \"host\",\n \"host-context\",\n \"hover\",\n \"indeterminate\",\n \"in-range\",\n \"invalid\",\n \"is\",\n \"lang\",\n \"last-child\",\n \"last-of-type\",\n \"left\",\n \"link\",\n \"local-link\",\n \"not\",\n \"nth-child\",\n \"nth-col\",\n \"nth-last-child\",\n \"nth-last-col\",\n \"nth-last-of-type\",\n \"nth-of-type\",\n \"only-child\",\n \"only-of-type\",\n \"optional\",\n \"out-of-range\",\n \"past\",\n \"placeholder-shown\",\n \"read-only\",\n \"read-write\",\n \"required\",\n \"right\",\n \"root\",\n \"scope\",\n \"target\",\n \"target-within\",\n \"user-invalid\",\n \"valid\",\n \"visited\",\n \"where\" // where()\n];\n// https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements\nconst PSEUDO_ELEMENTS = [\n \"after\",\n \"backdrop\",\n \"before\",\n \"cue\",\n \"cue-region\",\n \"first-letter\",\n \"first-line\",\n \"grammar-error\",\n \"marker\",\n \"part\",\n \"placeholder\",\n \"selection\",\n \"slotted\",\n \"spelling-error\"\n];\nconst ATTRIBUTES = [\n \"align-content\",\n \"align-items\",\n \"align-self\",\n \"all\",\n \"animation\",\n \"animation-delay\",\n \"animation-direction\",\n \"animation-duration\",\n \"animation-fill-mode\",\n \"animation-iteration-count\",\n \"animation-name\",\n \"animation-play-state\",\n \"animation-timing-function\",\n \"backface-visibility\",\n \"background\",\n \"background-attachment\",\n \"background-blend-mode\",\n \"background-clip\",\n \"background-color\",\n \"background-image\",\n \"background-origin\",\n \"background-position\",\n \"background-repeat\",\n \"background-size\",\n \"block-size\",\n \"border\",\n \"border-block\",\n \"border-block-color\",\n \"border-block-end\",\n \"border-block-end-color\",\n \"border-block-end-style\",\n \"border-block-end-width\",\n \"border-block-start\",\n \"border-block-start-color\",\n \"border-block-start-style\",\n \"border-block-start-width\",\n \"border-block-style\",\n \"border-block-width\",\n \"border-bottom\",\n \"border-bottom-color\",\n \"border-bottom-left-radius\",\n \"border-bottom-right-radius\",\n \"border-bottom-style\",\n \"border-bottom-width\",\n \"border-collapse\",\n \"border-color\",\n \"border-image\",\n \"border-image-outset\",\n \"border-image-repeat\",\n \"border-image-slice\",\n \"border-image-source\",\n \"border-image-width\",\n \"border-inline\",\n \"border-inline-color\",\n \"border-inline-end\",\n \"border-inline-end-color\",\n \"border-inline-end-style\",\n \"border-inline-end-width\",\n \"border-inline-start\",\n \"border-inline-start-color\",\n \"border-inline-start-style\",\n \"border-inline-start-width\",\n \"border-inline-style\",\n \"border-inline-width\",\n \"border-left\",\n \"border-left-color\",\n \"border-left-style\",\n \"border-left-width\",\n \"border-radius\",\n \"border-right\",\n \"border-right-color\",\n \"border-right-style\",\n \"border-right-width\",\n \"border-spacing\",\n \"border-style\",\n \"border-top\",\n \"border-top-color\",\n \"border-top-left-radius\",\n \"border-top-right-radius\",\n \"border-top-style\",\n \"border-top-width\",\n \"border-width\",\n \"bottom\",\n \"box-decoration-break\",\n \"box-shadow\",\n \"box-sizing\",\n \"break-after\",\n \"break-before\",\n \"break-inside\",\n \"caption-side\",\n \"caret-color\",\n \"clear\",\n \"clip\",\n \"clip-path\",\n \"clip-rule\",\n \"color\",\n \"column-count\",\n \"column-fill\",\n \"column-gap\",\n \"column-rule\",\n \"column-rule-color\",\n \"column-rule-style\",\n \"column-rule-width\",\n \"column-span\",\n \"column-width\",\n \"columns\",\n \"contain\",\n \"content\",\n \"content-visibility\",\n \"counter-increment\",\n \"counter-reset\",\n \"cue\",\n \"cue-after\",\n \"cue-before\",\n \"cursor\",\n \"direction\",\n \"display\",\n \"empty-cells\",\n \"filter\",\n \"flex\",\n \"flex-basis\",\n \"flex-direction\",\n \"flex-flow\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"float\",\n \"flow\",\n \"font\",\n \"font-display\",\n \"font-family\",\n \"font-feature-settings\",\n \"font-kerning\",\n \"font-language-override\",\n \"font-size\",\n \"font-size-adjust\",\n \"font-smoothing\",\n \"font-stretch\",\n \"font-style\",\n \"font-synthesis\",\n \"font-variant\",\n \"font-variant-caps\",\n \"font-variant-east-asian\",\n \"font-variant-ligatures\",\n \"font-variant-numeric\",\n \"font-variant-position\",\n \"font-variation-settings\",\n \"font-weight\",\n \"gap\",\n \"glyph-orientation-vertical\",\n \"grid\",\n \"grid-area\",\n \"grid-auto-columns\",\n \"grid-auto-flow\",\n \"grid-auto-rows\",\n \"grid-column\",\n \"grid-column-end\",\n \"grid-column-start\",\n \"grid-gap\",\n \"grid-row\",\n \"grid-row-end\",\n \"grid-row-start\",\n \"grid-template\",\n \"grid-template-areas\",\n \"grid-template-columns\",\n \"grid-template-rows\",\n \"hanging-punctuation\",\n \"height\",\n \"hyphens\",\n \"icon\",\n \"image-orientation\",\n \"image-rendering\",\n \"image-resolution\",\n \"ime-mode\",\n \"inline-size\",\n \"isolation\",\n \"justify-content\",\n \"left\",\n \"letter-spacing\",\n \"line-break\",\n \"line-height\",\n \"list-style\",\n \"list-style-image\",\n \"list-style-position\",\n \"list-style-type\",\n \"margin\",\n \"margin-block\",\n \"margin-block-end\",\n \"margin-block-start\",\n \"margin-bottom\",\n \"margin-inline\",\n \"margin-inline-end\",\n \"margin-inline-start\",\n \"margin-left\",\n \"margin-right\",\n \"margin-top\",\n \"marks\",\n \"mask\",\n \"mask-border\",\n \"mask-border-mode\",\n \"mask-border-outset\",\n \"mask-border-repeat\",\n \"mask-border-slice\",\n \"mask-border-source\",\n \"mask-border-width\",\n \"mask-clip\",\n \"mask-composite\",\n \"mask-image\",\n \"mask-mode\",\n \"mask-origin\",\n \"mask-position\",\n \"mask-repeat\",\n \"mask-size\",\n \"mask-type\",\n \"max-block-size\",\n \"max-height\",\n \"max-inline-size\",\n \"max-width\",\n \"min-block-size\",\n \"min-height\",\n \"min-inline-size\",\n \"min-width\",\n \"mix-blend-mode\",\n \"nav-down\",\n \"nav-index\",\n \"nav-left\",\n \"nav-right\",\n \"nav-up\",\n \"none\",\n \"normal\",\n \"object-fit\",\n \"object-position\",\n \"opacity\",\n \"order\",\n \"orphans\",\n \"outline\",\n \"outline-color\",\n \"outline-offset\",\n \"outline-style\",\n \"outline-width\",\n \"overflow\",\n \"overflow-wrap\",\n \"overflow-x\",\n \"overflow-y\",\n \"padding\",\n \"padding-block\",\n \"padding-block-end\",\n \"padding-block-start\",\n \"padding-bottom\",\n \"padding-inline\",\n \"padding-inline-end\",\n \"padding-inline-start\",\n \"padding-left\",\n \"padding-right\",\n \"padding-top\",\n \"page-break-after\",\n \"page-break-before\",\n \"page-break-inside\",\n \"pause\",\n \"pause-after\",\n \"pause-before\",\n \"perspective\",\n \"perspective-origin\",\n \"pointer-events\",\n \"position\",\n \"quotes\",\n \"resize\",\n \"rest\",\n \"rest-after\",\n \"rest-before\",\n \"right\",\n \"row-gap\",\n \"scroll-margin\",\n \"scroll-margin-block\",\n \"scroll-margin-block-end\",\n \"scroll-margin-block-start\",\n \"scroll-margin-bottom\",\n \"scroll-margin-inline\",\n \"scroll-margin-inline-end\",\n \"scroll-margin-inline-start\",\n \"scroll-margin-left\",\n \"scroll-margin-right\",\n \"scroll-margin-top\",\n \"scroll-padding\",\n \"scroll-padding-block\",\n \"scroll-padding-block-end\",\n \"scroll-padding-block-start\",\n \"scroll-padding-bottom\",\n \"scroll-padding-inline\",\n \"scroll-padding-inline-end\",\n \"scroll-padding-inline-start\",\n \"scroll-padding-left\",\n \"scroll-padding-right\",\n \"scroll-padding-top\",\n \"scroll-snap-align\",\n \"scroll-snap-stop\",\n \"scroll-snap-type\",\n \"scrollbar-color\",\n \"scrollbar-gutter\",\n \"scrollbar-width\",\n \"shape-image-threshold\",\n \"shape-margin\",\n \"shape-outside\",\n \"speak\",\n \"speak-as\",\n \"src\",\n \"tab-size\",\n \"table-layout\",\n \"text-align\",\n \"text-align-all\",\n \"text-align-last\",\n \"text-combine-upright\",\n \"text-decoration\",\n \"text-decoration-color\",\n \"text-decoration-line\",\n \"text-decoration-style\",\n \"text-emphasis\",\n \"text-emphasis-color\",\n \"text-emphasis-position\",\n \"text-emphasis-style\",\n \"text-indent\",\n \"text-justify\",\n \"text-orientation\",\n \"text-overflow\",\n \"text-rendering\",\n \"text-shadow\",\n \"text-transform\",\n \"text-underline-position\",\n \"top\",\n \"transform\",\n \"transform-box\",\n \"transform-origin\",\n \"transform-style\",\n \"transition\",\n \"transition-delay\",\n \"transition-duration\",\n \"transition-property\",\n \"transition-timing-function\",\n \"unicode-bidi\",\n \"vertical-align\",\n \"visibility\",\n \"voice-balance\",\n \"voice-duration\",\n \"voice-family\",\n \"voice-pitch\",\n \"voice-range\",\n \"voice-rate\",\n \"voice-stress\",\n \"voice-volume\",\n \"white-space\",\n \"widows\",\n \"width\",\n \"will-change\",\n \"word-break\",\n \"word-spacing\",\n \"word-wrap\",\n \"writing-mode\",\n \"z-index\"\n].reverse();\n/*\nLanguage: SCSS\nDescription: Scss is an extension of the syntax of CSS.\nAuthor: Kurt Emch <kurt@kurtemch.com>\nWebsite: https://sass-lang.com\nCategory: common, css, web\n*/ /** @type LanguageFn */ function scss(hljs) {\n const modes = MODES(hljs);\n const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS;\n const PSEUDO_CLASSES$1 = PSEUDO_CLASSES;\n const AT_IDENTIFIER = \"@[a-z-]+\"; // @font-face\n const AT_MODIFIERS = \"and or not only\";\n const IDENT_RE = \"[a-zA-Z-][a-zA-Z0-9_-]*\";\n const VARIABLE = {\n className: \"variable\",\n begin: \"(\\\\$\" + IDENT_RE + \")\\\\b\",\n relevance: 0\n };\n return {\n name: \"SCSS\",\n case_insensitive: true,\n illegal: \"[=/|']\",\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n // to recognize keyframe 40% etc which are outside the scope of our\n // attribute value mode\n modes.CSS_NUMBER_MODE,\n {\n className: \"selector-id\",\n begin: \"#[A-Za-z0-9_-]+\",\n relevance: 0\n },\n {\n className: \"selector-class\",\n begin: \"\\\\.[A-Za-z0-9_-]+\",\n relevance: 0\n },\n modes.ATTRIBUTE_SELECTOR_MODE,\n {\n className: \"selector-tag\",\n begin: \"\\\\b(\" + TAGS.join(\"|\") + \")\\\\b\",\n // was there, before, but why?\n relevance: 0\n },\n {\n className: \"selector-pseudo\",\n begin: \":(\" + PSEUDO_CLASSES$1.join(\"|\") + \")\"\n },\n {\n className: \"selector-pseudo\",\n begin: \":(:)?(\" + PSEUDO_ELEMENTS$1.join(\"|\") + \")\"\n },\n VARIABLE,\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n modes.CSS_NUMBER_MODE\n ]\n },\n modes.CSS_VARIABLE,\n {\n className: \"attribute\",\n begin: \"\\\\b(\" + ATTRIBUTES.join(\"|\") + \")\\\\b\"\n },\n {\n begin: \"\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b\"\n },\n {\n begin: /:/,\n end: /[;}{]/,\n relevance: 0,\n contains: [\n modes.BLOCK_COMMENT,\n VARIABLE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.IMPORTANT,\n modes.FUNCTION_DISPATCH\n ]\n },\n // matching these here allows us to treat them more like regular CSS\n // rules so everything between the {} gets regular rule highlighting,\n // which is what we want for page and font-face\n {\n begin: \"@(page|font-face)\",\n keywords: {\n $pattern: AT_IDENTIFIER,\n keyword: \"@page @font-face\"\n }\n },\n {\n begin: \"@\",\n end: \"[{;]\",\n returnBegin: true,\n keywords: {\n $pattern: /[a-z-]+/,\n keyword: AT_MODIFIERS,\n attribute: MEDIA_FEATURES.join(\" \")\n },\n contains: [\n {\n begin: AT_IDENTIFIER,\n className: \"keyword\"\n },\n {\n begin: /[a-z-]+(?=:)/,\n className: \"attribute\"\n },\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n modes.HEXCOLOR,\n modes.CSS_NUMBER_MODE\n ]\n },\n modes.FUNCTION_DISPATCH\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNQSxRQUFRLENBQUNDO0lBQ2IsT0FBTztRQUNMQyxXQUFXO1lBQ1RDLE9BQU87WUFDUEMsT0FBTztRQUNUO1FBQ0FDLGVBQWVKLEtBQUtLLG9CQUFvQjtRQUN4Q0MsVUFBVTtZQUNSSixPQUFPO1lBQ1BDLE9BQU87UUFDVDtRQUNBSSxtQkFBbUI7WUFDakJDLFdBQVc7WUFDWEwsT0FBTztRQUNUO1FBQ0FNLHlCQUF5QjtZQUN2QlAsT0FBTztZQUNQQyxPQUFPO1lBQ1BPLEtBQUs7WUFDTEMsU0FBUztZQUNUQyxVQUFVO2dCQUNSWixLQUFLYSxnQkFBZ0I7Z0JBQ3JCYixLQUFLYyxpQkFBaUI7YUFDdkI7UUFDSDtRQUNBQyxpQkFBaUI7WUFDZmIsT0FBTztZQUNQQyxPQUFPSCxLQUFLZ0IsU0FBUyxHQUFHLE1BQ3RCLG1CQUNBLHFCQUNBLHVCQUNBLHVCQUNBLFVBQ0EsWUFDQSxtQkFDQTtZQUNGQyxXQUFXO1FBQ2I7UUFDQUMsY0FBYztZQUNaVixXQUFXO1lBQ1hMLE9BQU87UUFDVDtJQUNGO0FBQ0Y7QUFFQSxNQUFNZ0IsT0FBTztJQUNYO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsTUFBTUMsaUJBQWlCO0lBQ3JCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxnQ0FBZ0M7SUFDaEM7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUVELGtFQUFrRTtBQUNsRSxNQUFNQyxpQkFBaUI7SUFDckI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxRQUFRLFVBQVU7Q0FDbkI7QUFFRCxtRUFBbUU7QUFDbkUsTUFBTUMsa0JBQWtCO0lBQ3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDRDtBQUVELE1BQU1DLGFBQWE7SUFDakI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lB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QixTQUFTO29CQUNmeUIsTUFBTW5CLGlCQUFpQjtpQkFDeEI7WUFDSDtZQUNBLG9FQUFvRTtZQUNwRSxxRUFBcUU7WUFDckUsK0NBQStDO1lBQy9DO2dCQUNFSixPQUFPO2dCQUNQa0MsVUFBVTtvQkFDUkMsVUFBVVQ7b0JBQ1ZVLFNBQVM7Z0JBQ1g7WUFDRjtZQUNBO2dCQUNFcEMsT0FBTztnQkFDUE8sS0FBSztnQkFDTDhCLGFBQWE7Z0JBQ2JILFVBQVU7b0JBQ1JDLFVBQVU7b0JBQ1ZDLFNBQVNUO29CQUNUVyxXQUFXckIsZUFBZWdCLElBQUksQ0FBQztnQkFDakM7Z0JBQ0F4QixVQUFVO29CQUNSO3dCQUNFVCxPQUFPMEI7d0JBQ1ByQixXQUFXO29CQUNiO29CQUNBO3dCQUNFTCxPQUFPO3dCQUNQSyxXQUFXO29CQUNiO29CQUNBd0I7b0JBQ0FoQyxLQUFLYyxpQkFBaUI7b0JBQ3RCZCxLQUFLYSxnQkFBZ0I7b0JBQ3JCYSxNQUFNcEIsUUFBUTtvQkFDZG9CLE1BQU1YLGVBQWU7aUJBQ3RCO1lBQ0g7WUFDQVcsTUFBTW5CLGlCQUFpQjtTQUN4QjtJQUNIO0FBQ0Y7QUFFMkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL3Njc3MuanM/MjY2YyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBNT0RFUyA9IChobGpzKSA9PiB7XG4gIHJldHVybiB7XG4gICAgSU1QT1JUQU5UOiB7XG4gICAgICBzY29wZTogJ21ldGEnLFxuICAgICAgYmVnaW46ICchaW1wb3J0YW50J1xuICAgIH0sXG4gICAgQkxPQ0tfQ09NTUVOVDogaGxqcy5DX0JMT0NLX0NPTU1FTlRfTU9ERSxcbiAgICBIRVhDT0xPUjoge1xuICAgICAgc2NvcGU6ICdudW1iZXInLFxuICAgICAgYmVnaW46IC8jKChbMC05YS1mQS1GXXszLDR9KXwoKFswLTlhLWZBLUZdezJ9KXszLDR9KSlcXGIvXG4gICAgfSxcbiAgICBGVU5DVElPTl9ESVNQQVRDSDoge1xuICAgICAgY2xhc3NOYW1lOiBcImJ1aWx0X2luXCIsXG4gICAgICBiZWdpbjogL1tcXHctXSsoPz1cXCgpL1xuICAgIH0sXG4gICAgQVRUUklCVVRFX1NFTEVDVE9SX01PREU6IHtcbiAgICAgIHNjb3BlOiAnc2VsZWN0b3ItYXR0cicsXG4gICAgICBiZWdpbjogL1xcWy8sXG4gICAgICBlbmQ6IC9cXF0vLFxuICAgICAgaWxsZWdhbDogJyQnLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgICAgICBobGpzLlFVT1RFX1NUUklOR19NT0RFXG4gICAgICBdXG4gICAgfSxcbiAgICBDU1NfTlVNQkVSX01PREU6IHtcbiAgICAgIHNjb3BlOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiBobGpzLk5VTUJFUl9SRSArICcoJyArXG4gICAgICAgICclfGVtfGV4fGNofHJlbScgK1xuICAgICAgICAnfHZ3fHZofHZtaW58dm1heCcgK1xuICAgICAgICAnfGNtfG1tfGlufHB0fHBjfHB4JyArXG4gICAgICAgICd8ZGVnfGdyYWR8cmFkfHR1cm4nICtcbiAgICAgICAgJ3xzfG1zJyArXG4gICAgICAgICd8SHp8a0h6JyArXG4gICAgICAgICd8ZHBpfGRwY218ZHBweCcgK1xuICAgICAgICAnKT8nLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICBDU1NfVkFSSUFCTEU6IHtcbiAgICAgIGNsYXNzTmFtZTogXCJhdHRyXCIsXG4gICAgICBiZWdpbjogLy0tW0EtWmEtel1bQS1aYS16MC05Xy1dKi9cbiAgICB9XG4gIH07XG59O1xuXG5jb25zdCBUQUdTID0gW1xuICAnYScsXG4gICdhYmJyJyxcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdhdWRpbycsXG4gICdiJyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdidXR0b24nLFxuICAnY2FudmFzJyxcbiAgJ2NhcHRpb24nLFxuICAnY2l0ZScsXG4gICdjb2RlJyxcbiAgJ2RkJyxcbiAgJ2RlbCcsXG4gICdkZXRhaWxzJyxcbiAgJ2RmbicsXG4gICdkaXYnLFxuICAnZGwnLFxuICAnZHQnLFxuICAnZW0nLFxuICAnZmllbGRzZXQnLFxuICAnZmlnY2FwdGlvbicsXG4gICdmaWd1cmUnLFxuICAnZm9vdGVyJyxcbiAgJ2Zvcm0nLFxuICAnaDEnLFxuICAnaDInLFxuICAnaDMnLFxuICAnaDQnLFxuICAnaDUnLFxuICAnaDYnLFxuICAnaGVhZGVyJyxcbiAgJ2hncm91cCcsXG4gICdodG1sJyxcbiAgJ2knLFxuICAnaWZyYW1lJyxcbiAgJ2ltZycsXG4gICdpbnB1dCcsXG4gICdpbnMnLFxuICAna2JkJyxcbiAgJ2xhYmVsJyxcbiAgJ2xlZ2VuZCcsXG4gICdsaScsXG4gICdtYWluJyxcbiAgJ21hcmsnLFxuICAnbWVudScsXG4gICduYXYnLFxuICAnb2JqZWN0JyxcbiAgJ29sJyxcbiAgJ3AnLFxuICAncScsXG4gICdxdW90ZScsXG4gICdzYW1wJyxcbiAgJ3NlY3Rpb24nLFxuICAnc3BhbicsXG4gICdzdHJvbmcnLFxuICAnc3VtbWFyeScsXG4gICdzdXAnLFxuICAndGFibGUnLFxuICAndGJvZHknLFxuICAndGQnLFxuICAndGV4dGFyZWEnLFxuICAndGZvb3QnLFxuICAndGgnLFxuICAndGhlYWQnLFxuICAndGltZScsXG4gICd0cicsXG4gICd1bCcsXG4gICd2YXInLFxuICAndmlkZW8nXG5dO1xuXG5jb25zdCBNRURJQV9GRUFUVVJFUyA9IFtcbiAgJ2FueS1ob3ZlcicsXG4gICdhbnktcG9pbnRlcicsXG4gICdhc3BlY3QtcmF0aW8nLFxuICAnY29sb3InLFxuICAnY29sb3ItZ2FtdXQnLFxuICAnY29sb3ItaW5kZXgnLFxuICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICdkZXZpY2UtaGVpZ2h0JyxcbiAgJ2RldmljZS13aWR0aCcsXG4gICdkaXNwbGF5LW1vZGUnLFxuICAnZm9yY2VkLWNvbG9ycycsXG4gICdncmlkJyxcbiAgJ2hlaWdodCcsXG4gICdob3ZlcicsXG4gICdpbnZlcnRlZC1jb2xvcnMnLFxuICAnbW9ub2Nocm9tZScsXG4gICdvcmllbnRhdGlvbicsXG4gICdvdmVyZmxvdy1ibG9jaycsXG4gICdvdmVyZmxvdy1pbmxpbmUnLFxuICAncG9pbnRlcicsXG4gICdwcmVmZXJzLWNvbG9yLXNjaGVtZScsXG4gICdwcmVmZXJzLWNvbnRyYXN0JyxcbiAgJ3ByZWZlcnMtcmVkdWNlZC1tb3Rpb24nLFxuICAncHJlZmVycy1yZWR1Y2VkLXRyYW5zcGFyZW5jeScsXG4gICdyZXNvbHV0aW9uJyxcbiAgJ3NjYW4nLFxuICAnc2NyaXB0aW5nJyxcbiAgJ3VwZGF0ZScsXG4gICd3aWR0aCcsXG4gIC8vIFRPRE86IGZpbmQgYSBiZXR0ZXIgc29sdXRpb24/XG4gICdtaW4td2lkdGgnLFxuICAnbWF4LXdpZHRoJyxcbiAgJ21pbi1oZWlnaHQnLFxuICAnbWF4LWhlaWdodCdcbl07XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Qc2V1ZG8tY2xhc3Nlc1xuY29uc3QgUFNFVURPX0NMQVNTRVMgPSBbXG4gICdhY3RpdmUnLFxuICAnYW55LWxpbmsnLFxuICAnYmxhbmsnLFxuICAnY2hlY2tlZCcsXG4gICdjdXJyZW50JyxcbiAgJ2RlZmF1bHQnLFxuICAnZGVmaW5lZCcsXG4gICdkaXInLCAvLyBkaXIoKVxuICAnZGlzYWJsZWQnLFxuICAnZHJvcCcsXG4gICdlbXB0eScsXG4gICdlbmFibGVkJyxcbiAgJ2ZpcnN0JyxcbiAgJ2ZpcnN0LWNoaWxkJyxcbiAgJ2ZpcnN0LW9mLXR5cGUnLFxuICAnZnVsbHNjcmVlbicsXG4gICdmdXR1cmUnLFxuICAnZm9jdXMnLFxuICAnZm9jdXMtdmlzaWJsZScsXG4gICdmb2N1cy13aXRoaW4nLFxuICAnaGFzJywgLy8gaGFzKClcbiAgJ2hvc3QnLCAvLyBob3N0IG9yIGhvc3QoKVxuICAnaG9zdC1jb250ZXh0JywgLy8gaG9zdC1jb250ZXh0KClcbiAgJ2hvdmVyJyxcbiAgJ2luZGV0ZXJtaW5hdGUnLFxuICAnaW4tcmFuZ2UnLFxuICAnaW52YWxpZCcsXG4gICdpcycsIC8vIGlzKClcbiAgJ2xhbmcnLCAvLyBsYW5nKClcbiAgJ2xhc3QtY2hpbGQnLFxuICAnbGFzdC1vZi10eXBlJyxcbiAgJ2xlZnQnLFxuICAnbGluaycsXG4gICdsb2NhbC1saW5rJyxcbiAgJ25vdCcsIC8vIG5vdCgpXG4gICdudGgtY2hpbGQnLCAvLyBudGgtY2hpbGQoKVxuICAnbnRoLWNvbCcsIC8vIG50aC1jb2woKVxuICAnbnRoLWxhc3QtY2hpbGQnLCAvLyBudGgtbGFzdC1jaGlsZCgpXG4gICdudGgtbGFzdC1jb2wnLCAvLyBudGgtbGFzdC1jb2woKVxuICAnbnRoLWxhc3Qtb2YtdHlwZScsIC8vbnRoLWxhc3Qtb2YtdHlwZSgpXG4gICdudGgtb2YtdHlwZScsIC8vbnRoLW9mLXR5cGUoKVxuICAnb25seS1jaGlsZCcsXG4gICdvbmx5LW9mLXR5cGUnLFxuICAnb3B0aW9uYWwnLFxuICAnb3V0LW9mLXJhbmdlJyxcbiAgJ3Bhc3QnLFxuICAncGxhY2Vob2xkZXItc2hvd24nLFxuICAncmVhZC1vbmx5JyxcbiAgJ3JlYWQtd3JpdGUnLFxuICAncmVxdWlyZWQnLFxuICAncmlnaHQnLFxuICAncm9vdCcsXG4gICdzY29wZScsXG4gICd0YXJnZXQnLFxuICAndGFyZ2V0LXdpdGhpbicsXG4gICd1c2VyLWludmFsaWQnLFxuICAndmFsaWQnLFxuICAndmlzaXRlZCcsXG4gICd3aGVyZScgLy8gd2hlcmUoKVxuXTtcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1BzZXVkby1lbGVtZW50c1xuY29uc3QgUFNFVURPX0VMRU1FTlRTID0gW1xuICAnYWZ0ZXInLFxuICAnYmFja2Ryb3AnLFxuICAnYmVmb3JlJyxcbiAgJ2N1ZScsXG4gICdjdWUtcmVnaW9uJyxcbiAgJ2ZpcnN0LWxldHRlcicsXG4gICdmaXJzdC1saW5lJyxcbiAgJ2dyYW1tYXItZXJyb3InLFxuICAnbWFya2VyJyxcbiAgJ3BhcnQnLFxuICAncGxhY2Vob2xkZXInLFxuICAnc2VsZWN0aW9uJyxcbiAgJ3Nsb3R0ZWQnLFxuICAnc3BlbGxpbmctZXJyb3InXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVTID0gW1xuICAnYWxpZ24tY29udGVudCcsXG4gICdhbGlnbi1pdGVtcycsXG4gICdhbGlnbi1zZWxmJyxcbiAgJ2FsbCcsXG4gICdhbmltYXRpb24nLFxuICAnYW5pbWF0aW9uLWRlbGF5JyxcbiAgJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLFxuICAnYW5pbWF0aW9uLWR1cmF0aW9uJyxcbiAgJ2FuaW1hdGlvbi1maWxsLW1vZGUnLFxuICAnYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsXG4gICdhbmltYXRpb24tbmFtZScsXG4gICdhbmltYXRpb24tcGxheS1zdGF0ZScsXG4gICdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJyxcbiAgJ2JhY2tmYWNlLXZpc2liaWxpdHknLFxuICAnYmFja2dyb3VuZCcsXG4gICdiYWNrZ3JvdW5kLWF0dGFjaG1lbnQnLFxuICAnYmFja2dyb3VuZC1ibGVuZC1tb2RlJyxcbiAgJ2JhY2tncm91bmQtY2xpcCcsXG4gICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgJ2JhY2tncm91bmQtaW1hZ2UnLFxuICAnYmFja2dyb3VuZC1vcmlnaW4nLFxuICAnYmFja2dyb3VuZC1wb3NpdGlvbicsXG4gICdiYWNrZ3JvdW5kLXJlcGVhdCcsXG4gICdiYWNrZ3JvdW5kLXNpemUnLFxuICAnYmxvY2stc2l6ZScsXG4gICdib3JkZXInLFxuICAnYm9yZGVyLWJsb2NrJyxcbiAgJ2JvcmRlci1ibG9jay1jb2xvcicsXG4gICdib3JkZXItYmxvY2stZW5kJyxcbiAgJ2JvcmRlci1ibG9jay1lbmQtY29sb3InLFxuICAnYm9yZGVyLWJsb2NrLWVuZC1zdHlsZScsXG4gICdib3JkZXItYmxvY2stZW5kLXdpZHRoJyxcbiAgJ2JvcmRlci1ibG9jay1zdGFydCcsXG4gICdib3JkZXItYmxvY2stc3RhcnQtY29sb3InLFxuICAnYm9yZGVyLWJsb2NrLXN0YXJ0LXN0eWxlJyxcbiAgJ2JvcmRlci1ibG9jay1zdGFydC13aWR0aCcsXG4gICdib3JkZXItYmxvY2stc3R5bGUnLFxuICAnYm9yZGVyLWJsb2NrLXdpZHRoJyxcbiAgJ2JvcmRlci1ib3R0b20nLFxuICAnYm9yZGVyLWJvdHRvbS1jb2xvcicsXG4gICdib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzJyxcbiAgJ2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzJyxcbiAgJ2JvcmRlci1ib3R0b20tc3R5bGUnLFxuICAnYm9yZGVyLWJvdHRvbS13aWR0aCcsXG4gICdib3JkZXItY29sbGFwc2UnLFxuICAnYm9yZGVyLWNvbG9yJyxcbiAgJ2JvcmRlci1pbWFnZScsXG4gICdib3JkZXItaW1hZ2Utb3V0c2V0JyxcbiAgJ2JvcmRlci1pbWFnZS1yZXBlYXQnLFxuICAnYm9yZGVyLWltYWdlLXNsaWNlJyxcbiAgJ2JvcmRlci1pbWFnZS1zb3VyY2UnLFxuICAnYm9yZGVyLWltYWdlLXdpZHRoJyxcbiAgJ2JvcmRlci1pbmxpbmUnLFxuICAnYm9yZGVyLWlubGluZS1jb2xvcicsXG4gICdib3JkZXItaW5saW5lLWVuZCcsXG4gICdib3JkZXItaW5saW5lLWVuZC1jb2xvcicsXG4gICdib3JkZXItaW5saW5lLWVuZC1zdHlsZScsXG4gICdib3JkZXItaW5saW5lLWVuZC13aWR0aCcsXG4gICdib3JkZXItaW5saW5lLXN0YXJ0JyxcbiAgJ2JvcmRlci1pbmxpbmUtc3RhcnQtY29sb3InLFxuICAnYm9yZGVyLWlubGluZS1zdGFydC1zdHlsZScsXG4gICdib3JkZXItaW5saW5lLXN0YXJ0LXdpZHRoJyxcbiAgJ2JvcmRlci1pbmxpbmUtc3R5bGUnLFxuICAnYm9yZGVyLWlubGluZS13aWR0aCcsXG4gICdib3JkZXItbGVmdCcsXG4gICdib3JkZXItbGVmdC1jb2xvcicsXG4gICdib3JkZXItbGVmdC1zdHlsZScsXG4gICdib3JkZXItbGVmdC13aWR0aCcsXG4gICdib3JkZXItcmFkaXVzJyxcbiAgJ2JvcmRlci1yaWdodCcsXG4gICdib3JkZXItcmlnaHQtY29sb3InLFxuICAnYm9yZGVyLXJpZ2h0LXN0eWxlJyxcbiAgJ2JvcmRlci1yaWdodC13aWR0aCcsXG4gICdib3JkZXItc3BhY2luZycsXG4gICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLXRvcCcsXG4gICdib3JkZXItdG9wLWNvbG9yJyxcbiAgJ2JvcmRlci10b3AtbGVmdC1yYWRpdXMnLFxuICAnYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMnLFxuICAnYm9yZGVyLXRvcC1zdHlsZScsXG4gICdib3JkZXItdG9wLXdpZHRoJyxcbiAgJ2JvcmRlci13aWR0aCcsXG4gICdib3R0b20nLFxuICAnYm94LWRlY29yYXRpb24tYnJlYWsnLFxuICAnYm94LXNoYWRvdycsXG4gICdib3gtc2l6aW5nJyxcbiAgJ2JyZWFrLWFmdGVyJyxcbiAgJ2JyZWFrLWJlZm9yZScsXG4gICdicmVhay1pbnNpZGUnLFxuICAnY2FwdGlvbi1zaWRlJyxcbiAgJ2NhcmV0LWNvbG9yJyxcbiAgJ2NsZWFyJyxcbiAgJ2NsaXAnLFxuICAnY2xpcC1wYXRoJyxcbiAgJ2NsaXAtcnVsZScsXG4gICdjb2xvcicsXG4gICdjb2x1bW4tY291bnQnLFxuICAnY29sdW1uLWZpbGwnLFxuICAnY29sdW1uLWdhcCcsXG4gICdjb2x1bW4tcnVsZScsXG4gICdjb2x1bW4tcnVsZS1jb2xvcicsXG4gICdjb2x1bW4tcnVsZS1zdHlsZScsXG4gICdjb2x1bW4tcnVsZS13aWR0aCcsXG4gICdjb2x1bW4tc3BhbicsXG4gICdjb2x1bW4td2lkdGgnLFxuICAnY29sdW1ucycsXG4gICdjb250YWluJyxcbiAgJ2NvbnRlbnQnLFxuICAnY29udGVudC12aXNpYmlsaXR5JyxcbiAgJ2NvdW50ZXItaW5jcmVtZW50JyxcbiAgJ2NvdW50ZXItcmVzZXQnLFxuICAnY3VlJyxcbiAgJ2N1ZS1hZnRlcicsXG4gICdjdWUtYmVmb3JlJyxcbiAgJ2N1cnNvcicsXG4gICdkaXJlY3Rpb24nLFxuICAnZGlzcGxheScsXG4gICdlbXB0eS1jZWxscycsXG4gICdmaWx0ZXInLFxuICAnZmxleCcsXG4gICdmbGV4LWJhc2lzJyxcbiAgJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtZmxvdycsXG4gICdmbGV4LWdyb3cnLFxuICAnZmxleC1zaHJpbmsnLFxuICAnZmxleC13cmFwJyxcbiAgJ2Zsb2F0JyxcbiAgJ2Zsb3cnLFxuICAnZm9udCcsXG4gICdmb250LWRpc3BsYXknLFxuICAnZm9udC1mYW1pbHknLFxuICAnZm9udC1mZWF0dXJlLXNldHRpbmdzJyxcbiAgJ2ZvbnQta2VybmluZycsXG4gICdmb250LWxhbmd1YWdlLW92ZXJyaWRlJyxcbiAgJ2ZvbnQtc2l6ZScsXG4gICdmb250LXNpemUtYWRqdXN0JyxcbiAgJ2ZvbnQtc21vb3RoaW5nJyxcbiAgJ2ZvbnQtc3RyZXRjaCcsXG4gICdmb250LXN0eWxlJyxcbiAgJ2ZvbnQtc3ludGhlc2lzJyxcbiAgJ2ZvbnQtdmFyaWFudCcsXG4gICdmb250LXZhcmlhbnQtY2FwcycsXG4gICdmb250LXZhcmlhbnQtZWFzdC1hc2lhbicsXG4gICdmb250LXZhcmlhbnQtbGlnYXR1cmVzJyxcbiAgJ2ZvbnQtdmFyaWFudC1udW1lcmljJyxcbiAgJ2ZvbnQtdmFyaWFudC1wb3NpdGlvbicsXG4gICdmb250LXZhcmlhdGlvbi1zZXR0aW5ncycsXG4gICdmb250LXdlaWdodCcsXG4gICdnYXAnLFxuICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnLFxuICAnZ3JpZCcsXG4gICdncmlkLWFyZWEnLFxuICAnZ3JpZC1hdXRvLWNvbHVtbnMnLFxuICAnZ3JpZC1hdXRvLWZsb3cnLFxuICAnZ3JpZC1hdXRvLXJvd3MnLFxuICAnZ3JpZC1jb2x1bW4nLFxuICAnZ3JpZC1jb2x1bW4tZW5kJyxcbiAgJ2dyaWQtY29sdW1uLXN0YXJ0JyxcbiAgJ2dyaWQtZ2FwJyxcbiAgJ2dyaWQtcm93JyxcbiAgJ2dyaWQtcm93LWVuZCcsXG4gICdncmlkLXJvdy1zdGFydCcsXG4gICdncmlkLXRlbXBsYXRlJyxcbiAgJ2dyaWQtdGVtcGxhdGUtYXJlYXMnLFxuICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJyxcbiAgJ2dyaWQtdGVtcGxhdGUtcm93cycsXG4gICdoYW5naW5nLXB1bmN0dWF0aW9uJyxcbiAgJ2hlaWdodCcsXG4gICdoeXBoZW5zJyxcbiAgJ2ljb24nLFxuICAnaW1hZ2Utb3JpZW50YXRpb24nLFxuICAnaW1hZ2UtcmVuZGVyaW5nJyxcbiAgJ2ltYWdlLXJlc29sdXRpb24nLFxuICAnaW1lLW1vZGUnLFxuICAnaW5saW5lLXNpemUnLFxuICAnaXNvbGF0aW9uJyxcbiAgJ2p1c3RpZnktY29udGVudCcsXG4gICdsZWZ0JyxcbiAgJ2xldHRlci1zcGFjaW5nJyxcbiAgJ2xpbmUtYnJlYWsnLFxuICAnbGluZS1oZWlnaHQnLFxuICAnbGlzdC1zdHlsZScsXG4gICdsaXN0LXN0eWxlLWltYWdlJyxcbiAgJ2xpc3Qtc3R5bGUtcG9zaXRpb24nLFxuICAnbGlzdC1zdHlsZS10eXBlJyxcbiAgJ21hcmdpbicsXG4gICdtYXJnaW4tYmxvY2snLFxuICAnbWFyZ2luLWJsb2NrLWVuZCcsXG4gICdtYXJnaW4tYmxvY2stc3RhcnQnLFxuICAnbWFyZ2luLWJvdHRvbScsXG4gICdtYXJnaW4taW5saW5lJyxcbiAgJ21hcmdpbi1pbmxpbmUtZW5kJyxcbiAgJ21hcmdpbi1pbmxpbmUtc3RhcnQnLFxuICAnbWFyZ2luLWxlZnQnLFxuICAnbWFyZ2luLXJpZ2h0JyxcbiAgJ21hcmdpbi10b3AnLFxuICAnbWFya3MnLFxuICAnbWFzaycsXG4gICdtYXNrLWJvcmRlcicsXG4gICdtYXNrLWJvcmRlci1tb2RlJyxcbiAgJ21hc2stYm9yZGVyLW91dHNldCcsXG4gICdtYXNrLWJvcmRlci1yZXBlYXQnLFxuICAnbWFzay1ib3JkZXItc2xpY2UnLFxuICAnbWFzay1ib3JkZXItc291cmNlJyxcbiAgJ21hc2stYm9yZGVyLXdpZHRoJyxcbiAgJ21hc2stY2xpcCcsXG4gICdtYXNrLWNvbXBvc2l0ZScsXG4gICdtYXNrLWltYWdlJyxcbiAgJ21hc2stbW9kZScsXG4gICdtYXNrLW9yaWdpbicsXG4gICdtYXNrLXBvc2l0aW9uJyxcbiAgJ21hc2stcmVwZWF0JyxcbiAgJ21hc2stc2l6ZScsXG4gICdtYXNrLXR5cGUnLFxuICAnbWF4LWJsb2NrLXNpemUnLFxuICAnbWF4LWhlaWdodCcsXG4gICdtYXgtaW5saW5lLXNpemUnLFxuICAnbWF4LXdpZHRoJyxcbiAgJ21pbi1ibG9jay1zaXplJyxcbiAgJ21pbi1oZWlnaHQnLFxuICAnbWluLWlubGluZS1zaXplJyxcbiAgJ21pbi13aWR0aCcsXG4gICdtaXgtYmxlbmQtbW9kZScsXG4gICduYXYtZG93bicsXG4gICduYXYtaW5kZXgnLFxuICAnbmF2LWxlZnQnLFxuICAnbmF2LXJpZ2h0JyxcbiAgJ25hdi11cCcsXG4gICdub25lJyxcbiAgJ25vcm1hbCcsXG4gICdvYmplY3QtZml0JyxcbiAgJ29iamVjdC1wb3NpdGlvbicsXG4gICdvcGFjaXR5JyxcbiAgJ29yZGVyJyxcbiAgJ29ycGhhbnMnLFxuICAnb3V0bGluZScsXG4gICdvdXRsaW5lLWNvbG9yJyxcbiAgJ291dGxpbmUtb2Zmc2V0JyxcbiAgJ291dGxpbmUtc3R5bGUnLFxuICAnb3V0bGluZS13aWR0aCcsXG4gICdvdmVyZmxvdycsXG4gICdvdmVyZmxvdy13cmFwJyxcbiAgJ292ZXJmbG93LXgnLFxuICAnb3ZlcmZsb3cteScsXG4gICdwYWRkaW5nJyxcbiAgJ3BhZGRpbmctYmxvY2snLFxuICAncGFkZGluZy1ibG9jay1lbmQnLFxuICAncGFkZGluZy1ibG9jay1zdGFydCcsXG4gICdwYWRkaW5nLWJvdHRvbScsXG4gICdwYWRkaW5nLWlubGluZScsXG4gICdwYWRkaW5nLWlubGluZS1lbmQnLFxuICAncGFkZGluZy1pbmxpbmUtc3RhcnQnLFxuICAncGFkZGluZy1sZWZ0JyxcbiAgJ3BhZGRpbmctcmlnaHQnLFxuICAncGFkZGluZy10b3AnLFxuICAncGFnZS1icmVhay1hZnRlcicsXG4gICdwYWdlLWJyZWFrLWJlZm9yZScsXG4gICdwYWdlLWJyZWFrLWluc2lkZScsXG4gICdwYXVzZScsXG4gICdwYXVzZS1hZnRlcicsXG4gICdwYXVzZS1iZWZvcmUnLFxuICAncGVyc3BlY3RpdmUnLFxuICAncGVyc3BlY3RpdmUtb3JpZ2luJyxcbiAgJ3BvaW50ZXItZXZlbnRzJyxcbiAgJ3Bvc2l0aW9uJyxcbiAgJ3F1b3RlcycsXG4gICdyZXNpemUnLFxuICAncmVzdCcsXG4gICdyZXN0LWFmdGVyJyxcbiAgJ3Jlc3QtYmVmb3JlJyxcbiAgJ3JpZ2h0JyxcbiAgJ3Jvdy1nYXAnLFxuICAnc2Nyb2xsLW1hcmdpbicsXG4gICdzY3JvbGwtbWFyZ2luLWJsb2NrJyxcbiAgJ3Njcm9sbC1tYXJnaW4tYmxvY2stZW5kJyxcbiAgJ3Njcm9sbC1tYXJnaW4tYmxvY2stc3RhcnQnLFxuICAnc2Nyb2xsLW1hcmdpbi1ib3R0b20nLFxuICAnc2Nyb2xsLW1hcmdpbi1pbmxpbmUnLFxuICAnc2Nyb2xsLW1hcmdpbi1pbmxpbmUtZW5kJyxcbiAgJ3Njcm9sbC1tYXJnaW4taW5saW5lLXN0YXJ0JyxcbiAgJ3Njcm9sbC1tYXJnaW4tbGVmdCcsXG4gICdzY3JvbGwtbWFyZ2luLXJpZ2h0JyxcbiAgJ3Njcm9sbC1tYXJnaW4tdG9wJyxcbiAgJ3Njcm9sbC1wYWRkaW5nJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWJsb2NrJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWJsb2NrLWVuZCcsXG4gICdzY3JvbGwtcGFkZGluZy1ibG9jay1zdGFydCcsXG4gICdzY3JvbGwtcGFkZGluZy1ib3R0b20nLFxuICAnc2Nyb2xsLXBhZGRpbmctaW5saW5lJyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWlubGluZS1lbmQnLFxuICAnc2Nyb2xsLXBhZGRpbmctaW5saW5lLXN0YXJ0JyxcbiAgJ3Njcm9sbC1wYWRkaW5nLWxlZnQnLFxuICAnc2Nyb2xsLXBhZGRpbmctcmlnaHQnLFxuICAnc2Nyb2xsLXBhZGRpbmctdG9wJyxcbiAgJ3Njcm9sbC1zbmFwLWFsaWduJyxcbiAgJ3Njcm9sbC1zbmFwLXN0b3AnLFxuICAnc2Nyb2xsLXNuYXAtdHlwZScsXG4gICdzY3JvbGxiYXItY29sb3InLFxuICAnc2Nyb2xsYmFyLWd1dHRlcicsXG4gICdzY3JvbGxiYXItd2lkdGgnLFxuICAnc2hhcGUtaW1hZ2UtdGhyZXNob2xkJyxcbiAgJ3NoYXBlLW1hcmdpbicsXG4gICdzaGFwZS1vdXRzaWRlJyxcbiAgJ3NwZWFrJyxcbiAgJ3NwZWFrLWFzJyxcbiAgJ3NyYycsIC8vIEBmb250LWZhY2VcbiAgJ3RhYi1zaXplJyxcbiAgJ3RhYmxlLWxheW91dCcsXG4gICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtYWxpZ24tYWxsJyxcbiAgJ3RleHQtYWxpZ24tbGFzdCcsXG4gICd0ZXh0LWNvbWJpbmUtdXByaWdodCcsXG4gICd0ZXh0LWRlY29yYXRpb24nLFxuICAndGV4dC1kZWNvcmF0aW9uLWNvbG9yJyxcbiAgJ3RleHQtZGVjb3JhdGlvbi1saW5lJyxcbiAgJ3RleHQtZGVjb3JhdGlvbi1zdHlsZScsXG4gICd0ZXh0LWVtcGhhc2lzJyxcbiAgJ3RleHQtZW1waGFzaXMtY29sb3InLFxuICAndGV4dC1lbXBoYXNpcy1wb3NpdGlvbicsXG4gICd0ZXh0LWVtcGhhc2lzLXN0eWxlJyxcbiAgJ3RleHQtaW5kZW50JyxcbiAgJ3RleHQtanVzdGlmeScsXG4gICd0ZXh0LW9yaWVudGF0aW9uJyxcbiAgJ3RleHQtb3ZlcmZsb3cnLFxuICAndGV4dC1yZW5kZXJpbmcnLFxuICAndGV4dC1zaGFkb3cnLFxuICAndGV4dC10cmFuc2Zvcm0nLFxuICAndGV4dC11bmRlcmxpbmUtcG9zaXRpb24nLFxuICAndG9wJyxcbiAgJ3RyYW5zZm9ybScsXG4gICd0cmFuc2Zvcm0tYm94JyxcbiAgJ3RyYW5zZm9ybS1vcmlnaW4nLFxuICAndHJhbnNmb3JtLXN0eWxlJyxcbiAgJ3RyYW5zaXRpb24nLFxuICAndHJhbnNpdGlvbi1kZWxheScsXG4gICd0cmFuc2l0aW9uLWR1cmF0aW9uJyxcbiAgJ3RyYW5zaXRpb24tcHJvcGVydHknLFxuICAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLFxuICAndW5pY29kZS1iaWRpJyxcbiAgJ3ZlcnRpY2FsLWFsaWduJyxcbiAgJ3Zpc2liaWxpdHknLFxuICAndm9pY2UtYmFsYW5jZScsXG4gICd2b2ljZS1kdXJhdGlvbicsXG4gICd2b2ljZS1mYW1pbHknLFxuICAndm9pY2UtcGl0Y2gnLFxuICAndm9pY2UtcmFuZ2UnLFxuICAndm9pY2UtcmF0ZScsXG4gICd2b2ljZS1zdHJlc3MnLFxuICAndm9pY2Utdm9sdW1lJyxcbiAgJ3doaXRlLXNwYWNlJyxcbiAgJ3dpZG93cycsXG4gICd3aWR0aCcsXG4gICd3aWxsLWNoYW5nZScsXG4gICd3b3JkLWJyZWFrJyxcbiAgJ3dvcmQtc3BhY2luZycsXG4gICd3b3JkLXdyYXAnLFxuICAnd3JpdGluZy1tb2RlJyxcbiAgJ3otaW5kZXgnXG4gIC8vIHJldmVyc2UgbWFrZXMgc3VyZSBsb25nZXIgYXR0cmlidXRlcyBgZm9udC13ZWlnaHRgIGFyZSBtYXRjaGVkIGZ1bGx5XG4gIC8vIGluc3RlYWQgb2YgZ2V0dGluZyBmYWxzZSBwb3NpdGl2ZXMgb24gc2F5IGBmb250YFxuXS5yZXZlcnNlKCk7XG5cbi8qXG5MYW5ndWFnZTogU0NTU1xuRGVzY3JpcHRpb246IFNjc3MgaXMgYW4gZXh0ZW5zaW9uIG9mIHRoZSBzeW50YXggb2YgQ1NTLlxuQXV0aG9yOiBLdXJ0IEVtY2ggPGt1cnRAa3VydGVtY2guY29tPlxuV2Vic2l0ZTogaHR0cHM6Ly9zYXNzLWxhbmcuY29tXG5DYXRlZ29yeTogY29tbW9uLCBjc3MsIHdlYlxuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIHNjc3MoaGxqcykge1xuICBjb25zdCBtb2RlcyA9IE1PREVTKGhsanMpO1xuICBjb25zdCBQU0VVRE9fRUxFTUVOVFMkMSA9IFBTRVVET19FTEVNRU5UUztcbiAgY29uc3QgUFNFVURPX0NMQVNTRVMkMSA9IFBTRVVET19DTEFTU0VTO1xuXG4gIGNvbnN0IEFUX0lERU5USUZJRVIgPSAnQFthLXotXSsnOyAvLyBAZm9udC1mYWNlXG4gIGNvbnN0IEFUX01PRElGSUVSUyA9IFwiYW5kIG9yIG5vdCBvbmx5XCI7XG4gIGNvbnN0IElERU5UX1JFID0gJ1thLXpBLVotXVthLXpBLVowLTlfLV0qJztcbiAgY29uc3QgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIGJlZ2luOiAnKFxcXFwkJyArIElERU5UX1JFICsgJylcXFxcYicsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnU0NTUycsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAnWz0vfFxcJ10nLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgLy8gdG8gcmVjb2duaXplIGtleWZyYW1lIDQwJSBldGMgd2hpY2ggYXJlIG91dHNpZGUgdGhlIHNjb3BlIG9mIG91clxuICAgICAgLy8gYXR0cmlidXRlIHZhbHVlIG1vZGVcbiAgICAgIG1vZGVzLkNTU19OVU1CRVJfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItaWQnLFxuICAgICAgICBiZWdpbjogJyNbQS1aYS16MC05Xy1dKycsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItY2xhc3MnLFxuICAgICAgICBiZWdpbjogJ1xcXFwuW0EtWmEtejAtOV8tXSsnLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICBtb2Rlcy5BVFRSSUJVVEVfU0VMRUNUT1JfTU9ERSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItdGFnJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYignICsgVEFHUy5qb2luKCd8JykgKyAnKVxcXFxiJyxcbiAgICAgICAgLy8gd2FzIHRoZXJlLCBiZWZvcmUsIGJ1dCB3aHk/XG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItcHNldWRvJyxcbiAgICAgICAgYmVnaW46ICc6KCcgKyBQU0VVRE9fQ0xBU1NFUyQxLmpvaW4oJ3wnKSArICcpJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnc2VsZWN0b3ItcHNldWRvJyxcbiAgICAgICAgYmVnaW46ICc6KDopPygnICsgUFNFVURPX0VMRU1FTlRTJDEuam9pbignfCcpICsgJyknXG4gICAgICB9LFxuICAgICAgVkFSSUFCTEUsXG4gICAgICB7IC8vIHBzZXVkby1zZWxlY3RvciBwYXJhbXNcbiAgICAgICAgYmVnaW46IC9cXCgvLFxuICAgICAgICBlbmQ6IC9cXCkvLFxuICAgICAgICBjb250YWluczogWyBtb2Rlcy5DU1NfTlVNQkVSX01PREUgXVxuICAgICAgfSxcbiAgICAgIG1vZGVzLkNTU19WQVJJQUJMRSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cmlidXRlJyxcbiAgICAgICAgYmVnaW46ICdcXFxcYignICsgQVRUUklCVVRFUy5qb2luKCd8JykgKyAnKVxcXFxiJ1xuICAgICAgfSxcbiAgICAgIHsgYmVnaW46ICdcXFxcYih3aGl0ZXNwYWNlfHdhaXR8dy1yZXNpemV8dmlzaWJsZXx2ZXJ0aWNhbC10ZXh0fHZlcnRpY2FsLWlkZW9ncmFwaGljfHVwcGVyY2FzZXx1cHBlci1yb21hbnx1cHBlci1hbHBoYXx1bmRlcmxpbmV8dHJhbnNwYXJlbnR8dG9wfHRoaW58dGhpY2t8dGV4dHx0ZXh0LXRvcHx0ZXh0LWJvdHRvbXx0Yi1ybHx0YWJsZS1oZWFkZXItZ3JvdXB8dGFibGUtZm9vdGVyLWdyb3VwfHN3LXJlc2l6ZXxzdXBlcnxzdHJpY3R8c3RhdGljfHNxdWFyZXxzb2xpZHxzbWFsbC1jYXBzfHNlcGFyYXRlfHNlLXJlc2l6ZXxzY3JvbGx8cy1yZXNpemV8cnRsfHJvdy1yZXNpemV8cmlkZ2V8cmlnaHR8cmVwZWF0fHJlcGVhdC15fHJlcGVhdC14fHJlbGF0aXZlfHByb2dyZXNzfHBvaW50ZXJ8b3ZlcmxpbmV8b3V0c2lkZXxvdXRzZXR8b2JsaXF1ZXxub3dyYXB8bm90LWFsbG93ZWR8bm9ybWFsfG5vbmV8bnctcmVzaXplfG5vLXJlcGVhdHxuby1kcm9wfG5ld3NwYXBlcnxuZS1yZXNpemV8bi1yZXNpemV8bW92ZXxtaWRkbGV8bWVkaXVtfGx0cnxsci10Ynxsb3dlcmNhc2V8bG93ZXItcm9tYW58bG93ZXItYWxwaGF8bG9vc2V8bGlzdC1pdGVtfGxpbmV8bGluZS10aHJvdWdofGxpbmUtZWRnZXxsaWdodGVyfGxlZnR8a2VlcC1hbGx8anVzdGlmeXxpdGFsaWN8aW50ZXItd29yZHxpbnRlci1pZGVvZ3JhcGh8aW5zaWRlfGluc2V0fGlubGluZXxpbmxpbmUtYmxvY2t8aW5oZXJpdHxpbmFjdGl2ZXxpZGVvZ3JhcGgtc3BhY2V8aWRlb2dyYXBoLXBhcmVudGhlc2lzfGlkZW9ncmFwaC1udW1lcmljfGlkZW9ncmFwaC1hbHBoYXxob3Jpem9udGFsfGhpZGRlbnxoZWxwfGhhbmR8Z3Jvb3ZlfGZpeGVkfGVsbGlwc2lzfGUtcmVzaXplfGRvdWJsZXxkb3R0ZWR8ZGlzdHJpYnV0ZXxkaXN0cmlidXRlLXNwYWNlfGRpc3RyaWJ1dGUtbGV0dGVyfGRpc3RyaWJ1dGUtYWxsLWxpbmVzfGRpc2N8ZGlzYWJsZWR8ZGVmYXVsdHxkZWNpbWFsfGRhc2hlZHxjcm9zc2hhaXJ8Y29sbGFwc2V8Y29sLXJlc2l6ZXxjaXJjbGV8Y2hhcnxjZW50ZXJ8Y2FwaXRhbGl6ZXxicmVhay13b3JkfGJyZWFrLWFsbHxib3R0b218Ym90aHxib2xkZXJ8Ym9sZHxibG9ja3xiaWRpLW92ZXJyaWRlfGJlbG93fGJhc2VsaW5lfGF1dG98YWx3YXlzfGFsbC1zY3JvbGx8YWJzb2x1dGV8dGFibGV8dGFibGUtY2VsbClcXFxcYicgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC86LyxcbiAgICAgICAgZW5kOiAvWzt9e10vLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgbW9kZXMuQkxPQ0tfQ09NTUVOVCxcbiAgICAgICAgICBWQVJJQUJMRSxcbiAgICAgICAgICBtb2Rlcy5IRVhDT0xPUixcbiAgICAgICAgICBtb2Rlcy5DU1NfTlVNQkVSX01PREUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgbW9kZXMuSU1QT1JUQU5ULFxuICAgICAgICAgIG1vZGVzLkZVTkNUSU9OX0RJU1BBVENIXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBtYXRjaGluZyB0aGVzZSBoZXJlIGFsbG93cyB1cyB0byB0cmVhdCB0aGVtIG1vcmUgbGlrZSByZWd1bGFyIENTU1xuICAgICAgLy8gcnVsZXMgc28gZXZlcnl0aGluZyBiZXR3ZWVuIHRoZSB7fSBnZXRzIHJlZ3VsYXIgcnVsZSBoaWdobGlnaHRpbmcsXG4gICAgICAvLyB3aGljaCBpcyB3aGF0IHdlIHdhbnQgZm9yIHBhZ2UgYW5kIGZvbnQtZmFjZVxuICAgICAge1xuICAgICAgICBiZWdpbjogJ0AocGFnZXxmb250LWZhY2UpJyxcbiAgICAgICAga2V5d29yZHM6IHtcbiAgICAgICAgICAkcGF0dGVybjogQVRfSURFTlRJRklFUixcbiAgICAgICAgICBrZXl3b3JkOiAnQHBhZ2UgQGZvbnQtZmFjZSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgYmVnaW46ICdAJyxcbiAgICAgICAgZW5kOiAnW3s7XScsXG4gICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICBrZXl3b3Jkczoge1xuICAgICAgICAgICRwYXR0ZXJuOiAvW2Etei1dKy8sXG4gICAgICAgICAga2V5d29yZDogQVRfTU9ESUZJRVJTLFxuICAgICAgICAgIGF0dHJpYnV0ZTogTUVESUFfRkVBVFVSRVMuam9pbihcIiBcIilcbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogQVRfSURFTlRJRklFUixcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJrZXl3b3JkXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJlZ2luOiAvW2Etei1dKyg/PTopLyxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogXCJhdHRyaWJ1dGVcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgVkFSSUFCTEUsXG4gICAgICAgICAgaGxqcy5RVU9URV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBobGpzLkFQT1NfU1RSSU5HX01PREUsXG4gICAgICAgICAgbW9kZXMuSEVYQ09MT1IsXG4gICAgICAgICAgbW9kZXMuQ1NTX05VTUJFUl9NT0RFXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBtb2Rlcy5GVU5DVElPTl9ESVNQQVRDSFxuICAgIF1cbiAgfTtcbn1cblxuZXhwb3J0IHsgc2NzcyBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsiTU9ERVMiLCJobGpzIiwiSU1QT1JUQU5UIiwic2NvcGUiLCJiZWdpbiIsIkJMT0NLX0NPTU1FTlQiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsIkhFWENPTE9SIiwiRlVOQ1RJT05fRElTUEFUQ0giLCJjbGFzc05hbWUiLCJBVFRSSUJVVEVfU0VMRUNUT1JfTU9ERSIsImVuZCIsImlsbGVnYWwiLCJjb250YWlucyIsIkFQT1NfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIkNTU19OVU1CRVJfTU9ERSIsIk5VTUJFUl9SRSIsInJlbGV2YW5jZSIsIkNTU19WQVJJQUJMRSIsIlRBR1MiLCJNRURJQV9GRUFUVVJFUyIsIlBTRVVET19DTEFTU0VTIiwiUFNFVURPX0VMRU1FTlRTIiwiQVRUUklCVVRFUyIsInJldmVyc2UiLCJzY3NzIiwibW9kZXMiLCJQU0VVRE9fRUxFTUVOVFMkMSIsIlBTRVVET19DTEFTU0VTJDEiLCJBVF9JREVOVElGSUVSIiwiQVRfTU9ESUZJRVJTIiwiSURFTlRfUkUiLCJWQVJJQUJMRSIsIm5hbWUiLCJjYXNlX2luc2Vuc2l0aXZlIiwiQ19MSU5FX0NPTU1FTlRfTU9ERSIsImpvaW4iLCJrZXl3b3JkcyIsIiRwYXR0ZXJuIiwia2V5d29yZCIsInJldHVybkJlZ2luIiwiYXR0cmlidXRlIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/scss.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/shell.js":
/*!*********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/shell.js ***!
\*********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ shell)\n/* harmony export */ });\n/*\nLanguage: Shell Session\nRequires: bash.js\nAuthor: TSUYUSATO Kitsune <make.just.on@gmail.com>\nCategory: common\nAudit: 2020\n*/ /** @type LanguageFn */ function shell(hljs) {\n return {\n name: \"Shell Session\",\n aliases: [\n \"console\",\n \"shellsession\"\n ],\n contains: [\n {\n className: \"meta.prompt\",\n // We cannot add \\s (spaces) in the regular expression otherwise it will be too broad and produce unexpected result.\n // For instance, in the following example, it would match \"echo /path/to/home >\" as a prompt:\n // echo /path/to/home > t.exe\n begin: /^\\s{0,3}[/~\\w\\d[\\]()@-]*[>%$#][ ]?/,\n starts: {\n end: /[^\\\\](?=\\s*$)/,\n subLanguage: \"bash\"\n }\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9zaGVsbC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7OztBQU1BLEdBRUEscUJBQXFCLEdBQ3JCLFNBQVNBLE1BQU1DLElBQUk7SUFDakIsT0FBTztRQUNMQyxNQUFNO1FBQ05DLFNBQVM7WUFDUDtZQUNBO1NBQ0Q7UUFDREMsVUFBVTtZQUNSO2dCQUNFQyxXQUFXO2dCQUNYLG9IQUFvSDtnQkFDcEgsNkZBQTZGO2dCQUM3Riw2QkFBNkI7Z0JBQzdCQyxPQUFPO2dCQUNQQyxRQUFRO29CQUNOQyxLQUFLO29CQUNMQyxhQUFhO2dCQUNmO1lBQ0Y7U0FDRDtJQUNIO0FBQ0Y7QUFFNEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL3NoZWxsLmpzPzhiYWUiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBTaGVsbCBTZXNzaW9uXG5SZXF1aXJlczogYmFzaC5qc1xuQXV0aG9yOiBUU1VZVVNBVE8gS2l0c3VuZSA8bWFrZS5qdXN0Lm9uQGdtYWlsLmNvbT5cbkNhdGVnb3J5OiBjb21tb25cbkF1ZGl0OiAyMDIwXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gc2hlbGwoaGxqcykge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdTaGVsbCBTZXNzaW9uJyxcbiAgICBhbGlhc2VzOiBbXG4gICAgICAnY29uc29sZScsXG4gICAgICAnc2hlbGxzZXNzaW9uJ1xuICAgIF0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbWV0YS5wcm9tcHQnLFxuICAgICAgICAvLyBXZSBjYW5ub3QgYWRkIFxccyAoc3BhY2VzKSBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uIG90aGVyd2lzZSBpdCB3aWxsIGJlIHRvbyBicm9hZCBhbmQgcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdC5cbiAgICAgICAgLy8gRm9yIGluc3RhbmNlLCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGl0IHdvdWxkIG1hdGNoIFwiZWNobyAvcGF0aC90by9ob21lID5cIiBhcyBhIHByb21wdDpcbiAgICAgICAgLy8gZWNobyAvcGF0aC90by9ob21lID4gdC5leGVcbiAgICAgICAgYmVnaW46IC9eXFxzezAsM31bL35cXHdcXGRbXFxdKClALV0qWz4lJCNdWyBdPy8sXG4gICAgICAgIHN0YXJ0czoge1xuICAgICAgICAgIGVuZDogL1teXFxcXF0oPz1cXHMqJCkvLFxuICAgICAgICAgIHN1Ykxhbmd1YWdlOiAnYmFzaCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF1cbiAgfTtcbn1cblxuZXhwb3J0IHsgc2hlbGwgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbInNoZWxsIiwiaGxqcyIsIm5hbWUiLCJhbGlhc2VzIiwiY29udGFpbnMiLCJjbGFzc05hbWUiLCJiZWdpbiIsInN0YXJ0cyIsImVuZCIsInN1Ykxhbmd1YWdlIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/shell.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/sql.js":
/*!*******************************************************!*\
!*** ./node_modules/highlight.js/es/languages/sql.js ***!
\*******************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ sql)\n/* harmony export */ });\n/*\n Language: SQL\n Website: https://en.wikipedia.org/wiki/SQL\n Category: common, database\n */ /*\n\nGoals:\n\nSQL is intended to highlight basic/common SQL keywords and expressions\n\n- If pretty much every single SQL server includes supports, then it's a canidate.\n- It is NOT intended to include tons of vendor specific keywords (Oracle, MySQL,\n PostgreSQL) although the list of data types is purposely a bit more expansive.\n- For more specific SQL grammars please see:\n - PostgreSQL and PL/pgSQL - core\n - T-SQL - https://github.com/highlightjs/highlightjs-tsql\n - sql_more (core)\n\n */ function sql(hljs) {\n const regex = hljs.regex;\n const COMMENT_MODE = hljs.COMMENT(\"--\", \"$\");\n const STRING = {\n className: \"string\",\n variants: [\n {\n begin: /'/,\n end: /'/,\n contains: [\n {\n begin: /''/\n }\n ]\n }\n ]\n };\n const QUOTED_IDENTIFIER = {\n begin: /\"/,\n end: /\"/,\n contains: [\n {\n begin: /\"\"/\n }\n ]\n };\n const LITERALS = [\n \"true\",\n \"false\",\n // Not sure it's correct to call NULL literal, and clauses like IS [NOT] NULL look strange that way.\n // \"null\",\n \"unknown\"\n ];\n const MULTI_WORD_TYPES = [\n \"double precision\",\n \"large object\",\n \"with timezone\",\n \"without timezone\"\n ];\n const TYPES = [\n \"bigint\",\n \"binary\",\n \"blob\",\n \"boolean\",\n \"char\",\n \"character\",\n \"clob\",\n \"date\",\n \"dec\",\n \"decfloat\",\n \"decimal\",\n \"float\",\n \"int\",\n \"integer\",\n \"interval\",\n \"nchar\",\n \"nclob\",\n \"national\",\n \"numeric\",\n \"real\",\n \"row\",\n \"smallint\",\n \"time\",\n \"timestamp\",\n \"varchar\",\n \"varying\",\n \"varbinary\"\n ];\n const NON_RESERVED_WORDS = [\n \"add\",\n \"asc\",\n \"collation\",\n \"desc\",\n \"final\",\n \"first\",\n \"last\",\n \"view\"\n ];\n // https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#reserved-word\n const RESERVED_WORDS = [\n \"abs\",\n \"acos\",\n \"all\",\n \"allocate\",\n \"alter\",\n \"and\",\n \"any\",\n \"are\",\n \"array\",\n \"array_agg\",\n \"array_max_cardinality\",\n \"as\",\n \"asensitive\",\n \"asin\",\n \"asymmetric\",\n \"at\",\n \"atan\",\n \"atomic\",\n \"authorization\",\n \"avg\",\n \"begin\",\n \"begin_frame\",\n \"begin_partition\",\n \"between\",\n \"bigint\",\n \"binary\",\n \"blob\",\n \"boolean\",\n \"both\",\n \"by\",\n \"call\",\n \"called\",\n \"cardinality\",\n \"cascaded\",\n \"case\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"char\",\n \"char_length\",\n \"character\",\n \"character_length\",\n \"check\",\n \"classifier\",\n \"clob\",\n \"close\",\n \"coalesce\",\n \"collate\",\n \"collect\",\n \"column\",\n \"commit\",\n \"condition\",\n \"connect\",\n \"constraint\",\n \"contains\",\n \"convert\",\n \"copy\",\n \"corr\",\n \"corresponding\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"create\",\n \"cross\",\n \"cube\",\n \"cume_dist\",\n \"current\",\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_row\",\n \"current_schema\",\n \"current_time\",\n \"current_timestamp\",\n \"current_path\",\n \"current_role\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"cursor\",\n \"cycle\",\n \"date\",\n \"day\",\n \"deallocate\",\n \"dec\",\n \"decimal\",\n \"decfloat\",\n \"declare\",\n \"default\",\n \"define\",\n \"delete\",\n \"dense_rank\",\n \"deref\",\n \"describe\",\n \"deterministic\",\n \"disconnect\",\n \"distinct\",\n \"double\",\n \"drop\",\n \"dynamic\",\n \"each\",\n \"element\",\n \"else\",\n \"empty\",\n \"end\",\n \"end_frame\",\n \"end_partition\",\n \"end-exec\",\n \"equals\",\n \"escape\",\n \"every\",\n \"except\",\n \"exec\",\n \"execute\",\n \"exists\",\n \"exp\",\n \"external\",\n \"extract\",\n \"false\",\n \"fetch\",\n \"filter\",\n \"first_value\",\n \"float\",\n \"floor\",\n \"for\",\n \"foreign\",\n \"frame_row\",\n \"free\",\n \"from\",\n \"full\",\n \"function\",\n \"fusion\",\n \"get\",\n \"global\",\n \"grant\",\n \"group\",\n \"grouping\",\n \"groups\",\n \"having\",\n \"hold\",\n \"hour\",\n \"identity\",\n \"in\",\n \"indicator\",\n \"initial\",\n \"inner\",\n \"inout\",\n \"insensitive\",\n \"insert\",\n \"int\",\n \"integer\",\n \"intersect\",\n \"intersection\",\n \"interval\",\n \"into\",\n \"is\",\n \"join\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"language\",\n \"large\",\n \"last_value\",\n \"lateral\",\n \"lead\",\n \"leading\",\n \"left\",\n \"like\",\n \"like_regex\",\n \"listagg\",\n \"ln\",\n \"local\",\n \"localtime\",\n \"localtimestamp\",\n \"log\",\n \"log10\",\n \"lower\",\n \"match\",\n \"match_number\",\n \"match_recognize\",\n \"matches\",\n \"max\",\n \"member\",\n \"merge\",\n \"method\",\n \"min\",\n \"minute\",\n \"mod\",\n \"modifies\",\n \"module\",\n \"month\",\n \"multiset\",\n \"national\",\n \"natural\",\n \"nchar\",\n \"nclob\",\n \"new\",\n \"no\",\n \"none\",\n \"normalize\",\n \"not\",\n \"nth_value\",\n \"ntile\",\n \"null\",\n \"nullif\",\n \"numeric\",\n \"octet_length\",\n \"occurrences_regex\",\n \"of\",\n \"offset\",\n \"old\",\n \"omit\",\n \"on\",\n \"one\",\n \"only\",\n \"open\",\n \"or\",\n \"order\",\n \"out\",\n \"outer\",\n \"over\",\n \"overlaps\",\n \"overlay\",\n \"parameter\",\n \"partition\",\n \"pattern\",\n \"per\",\n \"percent\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"period\",\n \"portion\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"precedes\",\n \"precision\",\n \"prepare\",\n \"primary\",\n \"procedure\",\n \"ptf\",\n \"range\",\n \"rank\",\n \"reads\",\n \"real\",\n \"recursive\",\n \"ref\",\n \"references\",\n \"referencing\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"release\",\n \"result\",\n \"return\",\n \"returns\",\n \"revoke\",\n \"right\",\n \"rollback\",\n \"rollup\",\n \"row\",\n \"row_number\",\n \"rows\",\n \"running\",\n \"savepoint\",\n \"scope\",\n \"scroll\",\n \"search\",\n \"second\",\n \"seek\",\n \"select\",\n \"sensitive\",\n \"session_user\",\n \"set\",\n \"show\",\n \"similar\",\n \"sin\",\n \"sinh\",\n \"skip\",\n \"smallint\",\n \"some\",\n \"specific\",\n \"specifictype\",\n \"sql\",\n \"sqlexception\",\n \"sqlstate\",\n \"sqlwarning\",\n \"sqrt\",\n \"start\",\n \"static\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"submultiset\",\n \"subset\",\n \"substring\",\n \"substring_regex\",\n \"succeeds\",\n \"sum\",\n \"symmetric\",\n \"system\",\n \"system_time\",\n \"system_user\",\n \"table\",\n \"tablesample\",\n \"tan\",\n \"tanh\",\n \"then\",\n \"time\",\n \"timestamp\",\n \"timezone_hour\",\n \"timezone_minute\",\n \"to\",\n \"trailing\",\n \"translate\",\n \"translate_regex\",\n \"translation\",\n \"treat\",\n \"trigger\",\n \"trim\",\n \"trim_array\",\n \"true\",\n \"truncate\",\n \"uescape\",\n \"union\",\n \"unique\",\n \"unknown\",\n \"unnest\",\n \"update\",\n \"upper\",\n \"user\",\n \"using\",\n \"value\",\n \"values\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"varbinary\",\n \"varchar\",\n \"varying\",\n \"versioning\",\n \"when\",\n \"whenever\",\n \"where\",\n \"width_bucket\",\n \"window\",\n \"with\",\n \"within\",\n \"without\",\n \"year\"\n ];\n // these are reserved words we have identified to be functions\n // and should only be highlighted in a dispatch-like context\n // ie, array_agg(...), etc.\n const RESERVED_FUNCTIONS = [\n \"abs\",\n \"acos\",\n \"array_agg\",\n \"asin\",\n \"atan\",\n \"avg\",\n \"cast\",\n \"ceil\",\n \"ceiling\",\n \"coalesce\",\n \"corr\",\n \"cos\",\n \"cosh\",\n \"count\",\n \"covar_pop\",\n \"covar_samp\",\n \"cume_dist\",\n \"dense_rank\",\n \"deref\",\n \"element\",\n \"exp\",\n \"extract\",\n \"first_value\",\n \"floor\",\n \"json_array\",\n \"json_arrayagg\",\n \"json_exists\",\n \"json_object\",\n \"json_objectagg\",\n \"json_query\",\n \"json_table\",\n \"json_table_primitive\",\n \"json_value\",\n \"lag\",\n \"last_value\",\n \"lead\",\n \"listagg\",\n \"ln\",\n \"log\",\n \"log10\",\n \"lower\",\n \"max\",\n \"min\",\n \"mod\",\n \"nth_value\",\n \"ntile\",\n \"nullif\",\n \"percent_rank\",\n \"percentile_cont\",\n \"percentile_disc\",\n \"position\",\n \"position_regex\",\n \"power\",\n \"rank\",\n \"regr_avgx\",\n \"regr_avgy\",\n \"regr_count\",\n \"regr_intercept\",\n \"regr_r2\",\n \"regr_slope\",\n \"regr_sxx\",\n \"regr_sxy\",\n \"regr_syy\",\n \"row_number\",\n \"sin\",\n \"sinh\",\n \"sqrt\",\n \"stddev_pop\",\n \"stddev_samp\",\n \"substring\",\n \"substring_regex\",\n \"sum\",\n \"tan\",\n \"tanh\",\n \"translate\",\n \"translate_regex\",\n \"treat\",\n \"trim\",\n \"trim_array\",\n \"unnest\",\n \"upper\",\n \"value_of\",\n \"var_pop\",\n \"var_samp\",\n \"width_bucket\"\n ];\n // these functions can\n const POSSIBLE_WITHOUT_PARENS = [\n \"current_catalog\",\n \"current_date\",\n \"current_default_transform_group\",\n \"current_path\",\n \"current_role\",\n \"current_schema\",\n \"current_transform_group_for_type\",\n \"current_user\",\n \"session_user\",\n \"system_time\",\n \"system_user\",\n \"current_time\",\n \"localtime\",\n \"current_timestamp\",\n \"localtimestamp\"\n ];\n // those exist to boost relevance making these very\n // \"SQL like\" keyword combos worth +1 extra relevance\n const COMBOS = [\n \"create table\",\n \"insert into\",\n \"primary key\",\n \"foreign key\",\n \"not null\",\n \"alter table\",\n \"add constraint\",\n \"grouping sets\",\n \"on overflow\",\n \"character set\",\n \"respect nulls\",\n \"ignore nulls\",\n \"nulls first\",\n \"nulls last\",\n \"depth first\",\n \"breadth first\"\n ];\n const FUNCTIONS = RESERVED_FUNCTIONS;\n const KEYWORDS = [\n ...RESERVED_WORDS,\n ...NON_RESERVED_WORDS\n ].filter((keyword)=>{\n return !RESERVED_FUNCTIONS.includes(keyword);\n });\n const VARIABLE = {\n className: \"variable\",\n begin: /@[a-z0-9]+/\n };\n const OPERATOR = {\n className: \"operator\",\n begin: /[-+*/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,\n relevance: 0\n };\n const FUNCTION_CALL = {\n begin: regex.concat(/\\b/, regex.either(...FUNCTIONS), /\\s*\\(/),\n relevance: 0,\n keywords: {\n built_in: FUNCTIONS\n }\n };\n // keywords with less than 3 letters are reduced in relevancy\n function reduceRelevancy(list, { exceptions, when } = {}) {\n const qualifyFn = when;\n exceptions = exceptions || [];\n return list.map((item)=>{\n if (item.match(/\\|\\d+$/) || exceptions.includes(item)) {\n return item;\n } else if (qualifyFn(item)) {\n return `${item}|0`;\n } else {\n return item;\n }\n });\n }\n return {\n name: \"SQL\",\n case_insensitive: true,\n // does not include {} or HTML tags `</`\n illegal: /[{}]|<\\//,\n keywords: {\n $pattern: /\\b[\\w\\.]+/,\n keyword: reduceRelevancy(KEYWORDS, {\n when: (x)=>x.length < 3\n }),\n literal: LITERALS,\n type: TYPES,\n built_in: POSSIBLE_WITHOUT_PARENS\n },\n contains: [\n {\n begin: regex.either(...COMBOS),\n relevance: 0,\n keywords: {\n $pattern: /[\\w\\.]+/,\n keyword: KEYWORDS.concat(COMBOS),\n literal: LITERALS,\n type: TYPES\n }\n },\n {\n className: \"type\",\n begin: regex.either(...MULTI_WORD_TYPES)\n },\n FUNCTION_CALL,\n VARIABLE,\n STRING,\n QUOTED_IDENTIFIER,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n OPERATOR\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9zcWwuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7O0NBSUMsR0FFRDs7Ozs7Ozs7Ozs7Ozs7Q0FjQyxHQUVELFNBQVNBLElBQUlDLElBQUk7SUFDZixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLE1BQU1DLGVBQWVGLEtBQUtHLE9BQU8sQ0FBQyxNQUFNO0lBQ3hDLE1BQU1DLFNBQVM7UUFDYkMsV0FBVztRQUNYQyxVQUFVO1lBQ1I7Z0JBQ0VDLE9BQU87Z0JBQ1BDLEtBQUs7Z0JBQ0xDLFVBQVU7b0JBQUU7d0JBQUVGLE9BQU87b0JBQUs7aUJBQUc7WUFDL0I7U0FDRDtJQUNIO0lBQ0EsTUFBTUcsb0JBQW9CO1FBQ3hCSCxPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsVUFBVTtZQUFFO2dCQUFFRixPQUFPO1lBQUs7U0FBRztJQUMvQjtJQUVBLE1BQU1JLFdBQVc7UUFDZjtRQUNBO1FBQ0Esb0dBQW9HO1FBQ3BHLFVBQVU7UUFDVjtLQUNEO0lBRUQsTUFBTUMsbUJBQW1CO1FBQ3ZCO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxNQUFNQyxRQUFRO1FBQ1o7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxNQUFNQyxxQkFBcUI7UUFDekI7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsMEZBQTBGO0lBQzFGLE1BQU1DLGlCQUFpQjtRQUNyQjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELDhEQUE4RDtJQUM5RCw0REFBNEQ7SUFDNUQsMkJBQTJCO0lBQzNCLE1BQU1DLHFCQUFxQjtRQUN6QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsc0JBQXNCO0lBQ3RCLE1BQU1DLDBCQUEwQjtRQUM5QjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELG1EQUFtRDtJQUNuRCxxREFBcUQ7SUFDckQsTUFBTUMsU0FBUztRQUNiO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxNQUFNQyxZQUFZSDtJQUVsQixNQUFNSSxXQUFXO1dBQ1pMO1dBQ0FEO0tBQ0osQ0FBQ08sTUFBTSxDQUFDLENBQUNDO1FBQ1IsT0FBTyxDQUFDTixtQkFBbUJPLFFBQVEsQ0FBQ0Q7SUFDdEM7SUFFQSxNQUFNRSxXQUFXO1FBQ2ZuQixXQUFXO1FBQ1hFLE9BQU87SUFDVDtJQUVBLE1BQU1rQixXQUFXO1FBQ2ZwQixXQUFXO1FBQ1hFLE9BQU87UUFDUG1CLFdBQVc7SUFDYjtJQUVBLE1BQU1DLGdCQUFnQjtRQUNwQnBCLE9BQU9OLE1BQU0yQixNQUFNLENBQUMsTUFBTTNCLE1BQU00QixNQUFNLElBQUlWLFlBQVk7UUFDdERPLFdBQVc7UUFDWEksVUFBVTtZQUFFQyxVQUFVWjtRQUFVO0lBQ2xDO0lBRUEsNkRBQTZEO0lBQzdELFNBQVNhLGdCQUFnQkMsSUFBSSxFQUFFLEVBQzdCQyxVQUFVLEVBQUVDLElBQUksRUFDakIsR0FBRyxDQUFDLENBQUM7UUFDSixNQUFNQyxZQUFZRDtRQUNsQkQsYUFBYUEsY0FBYyxFQUFFO1FBQzdCLE9BQU9ELEtBQUtJLEdBQUcsQ0FBQyxDQUFDQztZQUNmLElBQUlBLEtBQUtDLEtBQUssQ0FBQyxhQUFhTCxXQUFXWCxRQUFRLENBQUNlLE9BQU87Z0JBQ3JELE9BQU9BO1lBQ1QsT0FBTyxJQUFJRixVQUFVRSxPQUFPO2dCQUMxQixPQUFPLENBQUMsRUFBRUEsS0FBSyxFQUFFLENBQUM7WUFDcEIsT0FBTztnQkFDTCxPQUFPQTtZQUNUO1FBQ0Y7SUFDRjtJQUVBLE9BQU87UUFDTEUsTUFBTTtRQUNOQyxrQkFBa0I7UUFDbEIsd0NBQXdDO1FBQ3hDQyxTQUFTO1FBQ1RaLFVBQVU7WUFDUmEsVUFBVTtZQUNWckIsU0FDRVUsZ0JBQWdCWixVQUFVO2dCQUFFZSxNQUFNLENBQUNTLElBQU1BLEVBQUVDLE1BQU0sR0FBRztZQUFFO1lBQ3hEQyxTQUFTbkM7WUFDVG9DLE1BQU1sQztZQUNOa0IsVUFBVWQ7UUFDWjtRQUNBUixVQUFVO1lBQ1I7Z0JBQ0VGLE9BQU9OLE1BQU00QixNQUFNLElBQUlYO2dCQUN2QlEsV0FBVztnQkFDWEksVUFBVTtvQkFDUmEsVUFBVTtvQkFDVnJCLFNBQVNGLFNBQVNRLE1BQU0sQ0FBQ1Y7b0JBQ3pCNEIsU0FBU25DO29CQUNUb0MsTUFBTWxDO2dCQUNSO1lBQ0Y7WUFDQTtnQkFDRVIsV0FBVztnQkFDWEUsT0FBT04sTUFBTTRCLE1BQU0sSUFBSWpCO1lBQ3pCO1lBQ0FlO1lBQ0FIO1lBQ0FwQjtZQUNBTTtZQUNBVixLQUFLZ0QsYUFBYTtZQUNsQmhELEtBQUtpRCxvQkFBb0I7WUFDekIvQztZQUNBdUI7U0FDRDtJQUNIO0FBQ0Y7QUFFMEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL3NxbC5qcz8zYzA3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gTGFuZ3VhZ2U6IFNRTFxuIFdlYnNpdGU6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NRTFxuIENhdGVnb3J5OiBjb21tb24sIGRhdGFiYXNlXG4gKi9cblxuLypcblxuR29hbHM6XG5cblNRTCBpcyBpbnRlbmRlZCB0byBoaWdobGlnaHQgYmFzaWMvY29tbW9uIFNRTCBrZXl3b3JkcyBhbmQgZXhwcmVzc2lvbnNcblxuLSBJZiBwcmV0dHkgbXVjaCBldmVyeSBzaW5nbGUgU1FMIHNlcnZlciBpbmNsdWRlcyBzdXBwb3J0cywgdGhlbiBpdCdzIGEgY2FuaWRhdGUuXG4tIEl0IGlzIE5PVCBpbnRlbmRlZCB0byBpbmNsdWRlIHRvbnMgb2YgdmVuZG9yIHNwZWNpZmljIGtleXdvcmRzIChPcmFjbGUsIE15U1FMLFxuICBQb3N0Z3JlU1FMKSBhbHRob3VnaCB0aGUgbGlzdCBvZiBkYXRhIHR5cGVzIGlzIHB1cnBvc2VseSBhIGJpdCBtb3JlIGV4cGFuc2l2ZS5cbi0gRm9yIG1vcmUgc3BlY2lmaWMgU1FMIGdyYW1tYXJzIHBsZWFzZSBzZWU6XG4gIC0gUG9zdGdyZVNRTCBhbmQgUEwvcGdTUUwgLSBjb3JlXG4gIC0gVC1TUUwgLSBodHRwczovL2dpdGh1Yi5jb20vaGlnaGxpZ2h0anMvaGlnaGxpZ2h0anMtdHNxbFxuICAtIHNxbF9tb3JlIChjb3JlKVxuXG4gKi9cblxuZnVuY3Rpb24gc3FsKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICBjb25zdCBDT01NRU5UX01PREUgPSBobGpzLkNPTU1FTlQoJy0tJywgJyQnKTtcbiAgY29uc3QgU1RSSU5HID0ge1xuICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8nLyxcbiAgICAgICAgZW5kOiAvJy8sXG4gICAgICAgIGNvbnRhaW5zOiBbIHsgYmVnaW46IC8nJy8gfSBdXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBjb25zdCBRVU9URURfSURFTlRJRklFUiA9IHtcbiAgICBiZWdpbjogL1wiLyxcbiAgICBlbmQ6IC9cIi8sXG4gICAgY29udGFpbnM6IFsgeyBiZWdpbjogL1wiXCIvIH0gXVxuICB9O1xuXG4gIGNvbnN0IExJVEVSQUxTID0gW1xuICAgIFwidHJ1ZVwiLFxuICAgIFwiZmFsc2VcIixcbiAgICAvLyBOb3Qgc3VyZSBpdCdzIGNvcnJlY3QgdG8gY2FsbCBOVUxMIGxpdGVyYWwsIGFuZCBjbGF1c2VzIGxpa2UgSVMgW05PVF0gTlVMTCBsb29rIHN0cmFuZ2UgdGhhdCB3YXkuXG4gICAgLy8gXCJudWxsXCIsXG4gICAgXCJ1bmtub3duXCJcbiAgXTtcblxuICBjb25zdCBNVUxUSV9XT1JEX1RZUEVTID0gW1xuICAgIFwiZG91YmxlIHByZWNpc2lvblwiLFxuICAgIFwibGFyZ2Ugb2JqZWN0XCIsXG4gICAgXCJ3aXRoIHRpbWV6b25lXCIsXG4gICAgXCJ3aXRob3V0IHRpbWV6b25lXCJcbiAgXTtcblxuICBjb25zdCBUWVBFUyA9IFtcbiAgICAnYmlnaW50JyxcbiAgICAnYmluYXJ5JyxcbiAgICAnYmxvYicsXG4gICAgJ2Jvb2xlYW4nLFxuICAgICdjaGFyJyxcbiAgICAnY2hhcmFjdGVyJyxcbiAgICAnY2xvYicsXG4gICAgJ2RhdGUnLFxuICAgICdkZWMnLFxuICAgICdkZWNmbG9hdCcsXG4gICAgJ2RlY2ltYWwnLFxuICAgICdmbG9hdCcsXG4gICAgJ2ludCcsXG4gICAgJ2ludGVnZXInLFxuICAgICdpbnRlcnZhbCcsXG4gICAgJ25jaGFyJyxcbiAgICAnbmNsb2InLFxuICAgICduYXRpb25hbCcsXG4gICAgJ251bWVyaWMnLFxuICAgICdyZWFsJyxcbiAgICAncm93JyxcbiAgICAnc21hbGxpbnQnLFxuICAgICd0aW1lJyxcbiAgICAndGltZXN0YW1wJyxcbiAgICAndmFyY2hhcicsXG4gICAgJ3ZhcnlpbmcnLCAvLyBtb2RpZmllciAoY2hhcmFjdGVyIHZhcnlpbmcpXG4gICAgJ3ZhcmJpbmFyeSdcbiAgXTtcblxuICBjb25zdCBOT05fUkVTRVJWRURfV09SRFMgPSBbXG4gICAgXCJhZGRcIixcbiAgICBcImFzY1wiLFxuICAgIFwiY29sbGF0aW9uXCIsXG4gICAgXCJkZXNjXCIsXG4gICAgXCJmaW5hbFwiLFxuICAgIFwiZmlyc3RcIixcbiAgICBcImxhc3RcIixcbiAgICBcInZpZXdcIlxuICBdO1xuXG4gIC8vIGh0dHBzOi8vamFrZXdoZWF0LmdpdGh1Yi5pby9zcWwtb3ZlcnZpZXcvc3FsLTIwMTYtZm91bmRhdGlvbi1ncmFtbWFyLmh0bWwjcmVzZXJ2ZWQtd29yZFxuICBjb25zdCBSRVNFUlZFRF9XT1JEUyA9IFtcbiAgICBcImFic1wiLFxuICAgIFwiYWNvc1wiLFxuICAgIFwiYWxsXCIsXG4gICAgXCJhbGxvY2F0ZVwiLFxuICAgIFwiYWx0ZXJcIixcbiAgICBcImFuZFwiLFxuICAgIFwiYW55XCIsXG4gICAgXCJhcmVcIixcbiAgICBcImFycmF5XCIsXG4gICAgXCJhcnJheV9hZ2dcIixcbiAgICBcImFycmF5X21heF9jYXJkaW5hbGl0eVwiLFxuICAgIFwiYXNcIixcbiAgICBcImFzZW5zaXRpdmVcIixcbiAgICBcImFzaW5cIixcbiAgICBcImFzeW1tZXRyaWNcIixcbiAgICBcImF0XCIsXG4gICAgXCJhdGFuXCIsXG4gICAgXCJhdG9taWNcIixcbiAgICBcImF1dGhvcml6YXRpb25cIixcbiAgICBcImF2Z1wiLFxuICAgIFwiYmVnaW5cIixcbiAgICBcImJlZ2luX2ZyYW1lXCIsXG4gICAgXCJiZWdpbl9wYXJ0aXRpb25cIixcbiAgICBcImJldHdlZW5cIixcbiAgICBcImJpZ2ludFwiLFxuICAgIFwiYmluYXJ5XCIsXG4gICAgXCJibG9iXCIsXG4gICAgXCJib29sZWFuXCIsXG4gICAgXCJib3RoXCIsXG4gICAgXCJieVwiLFxuICAgIFwiY2FsbFwiLFxuICAgIFwiY2FsbGVkXCIsXG4gICAgXCJjYXJkaW5hbGl0eVwiLFxuICAgIFwiY2FzY2FkZWRcIixcbiAgICBcImNhc2VcIixcbiAgICBcImNhc3RcIixcbiAgICBcImNlaWxcIixcbiAgICBcImNlaWxpbmdcIixcbiAgICBcImNoYXJcIixcbiAgICBcImNoYXJfbGVuZ3RoXCIsXG4gICAgXCJjaGFyYWN0ZXJcIixcbiAgICBcImNoYXJhY3Rlcl9sZW5ndGhcIixcbiAgICBcImNoZWNrXCIsXG4gICAgXCJjbGFzc2lmaWVyXCIsXG4gICAgXCJjbG9iXCIsXG4gICAgXCJjbG9zZVwiLFxuICAgIFwiY29hbGVzY2VcIixcbiAgICBcImNvbGxhdGVcIixcbiAgICBcImNvbGxlY3RcIixcbiAgICBcImNvbHVtblwiLFxuICAgIFwiY29tbWl0XCIsXG4gICAgXCJjb25kaXRpb25cIixcbiAgICBcImNvbm5lY3RcIixcbiAgICBcImNvbnN0cmFpbnRcIixcbiAgICBcImNvbnRhaW5zXCIsXG4gICAgXCJjb252ZXJ0XCIsXG4gICAgXCJjb3B5XCIsXG4gICAgXCJjb3JyXCIsXG4gICAgXCJjb3JyZXNwb25kaW5nXCIsXG4gICAgXCJjb3NcIixcbiAgICBcImNvc2hcIixcbiAgICBcImNvdW50XCIsXG4gICAgXCJjb3Zhcl9wb3BcIixcbiAgICBcImNvdmFyX3NhbXBcIixcbiAgICBcImNyZWF0ZVwiLFxuICAgIFwiY3Jvc3NcIixcbiAgICBcImN1YmVcIixcbiAgICBcImN1bWVfZGlzdFwiLFxuICAgIFwiY3VycmVudFwiLFxuICAgIFwiY3VycmVudF9jYXRhbG9nXCIsXG4gICAgXCJjdXJyZW50X2RhdGVcIixcbiAgICBcImN1cnJlbnRfZGVmYXVsdF90cmFuc2Zvcm1fZ3JvdXBcIixcbiAgICBcImN1cnJlbnRfcGF0aFwiLFxuICAgIFwiY3VycmVudF9yb2xlXCIsXG4gICAgXCJjdXJyZW50X3Jvd1wiLFxuICAgIFwiY3VycmVudF9zY2hlbWFcIixcbiAgICBcImN1cnJlbnRfdGltZVwiLFxuICAgIFwiY3VycmVudF90aW1lc3RhbXBcIixcbiAgICBcImN1cnJlbnRfcGF0aFwiLFxuICAgIFwiY3VycmVudF9yb2xlXCIsXG4gICAgXCJjdXJyZW50X3RyYW5zZm9ybV9ncm91cF9mb3JfdHlwZVwiLFxuICAgIFwiY3VycmVudF91c2VyXCIsXG4gICAgXCJjdXJzb3JcIixcbiAgICBcImN5Y2xlXCIsXG4gICAgXCJkYXRlXCIsXG4gICAgXCJkYXlcIixcbiAgICBcImRlYWxsb2NhdGVcIixcbiAgICBcImRlY1wiLFxuICAgIFwiZGVjaW1hbFwiLFxuICAgIFwiZGVjZmxvYXRcIixcbiAgICBcImRlY2xhcmVcIixcbiAgICBcImRlZmF1bHRcIixcbiAgICBcImRlZmluZVwiLFxuICAgIFwiZGVsZXRlXCIsXG4gICAgXCJkZW5zZV9yYW5rXCIsXG4gICAgXCJkZXJlZlwiLFxuICAgIFwiZGVzY3JpYmVcIixcbiAgICBcImRldGVybWluaXN0aWNcIixcbiAgICBcImRpc2Nvbm5lY3RcIixcbiAgICBcImRpc3RpbmN0XCIsXG4gICAgXCJkb3VibGVcIixcbiAgICBcImRyb3BcIixcbiAgICBcImR5bmFtaWNcIixcbiAgICBcImVhY2hcIixcbiAgICBcImVsZW1lbnRcIixcbiAgICBcImVsc2VcIixcbiAgICBcImVtcHR5XCIsXG4gICAgXCJlbmRcIixcbiAgICBcImVuZF9mcmFtZVwiLFxuICAgIFwiZW5kX3BhcnRpdGlvblwiLFxuICAgIFwiZW5kLWV4ZWNcIixcbiAgICBcImVxdWFsc1wiLFxuICAgIFwiZXNjYXBlXCIsXG4gICAgXCJldmVyeVwiLFxuICAgIFwiZXhjZXB0XCIsXG4gICAgXCJleGVjXCIsXG4gICAgXCJleGVjdXRlXCIsXG4gICAgXCJleGlzdHNcIixcbiAgICBcImV4cFwiLFxuICAgIFwiZXh0ZXJuYWxcIixcbiAgICBcImV4dHJhY3RcIixcbiAgICBcImZhbHNlXCIsXG4gICAgXCJmZXRjaFwiLFxuICAgIFwiZmlsdGVyXCIsXG4gICAgXCJmaXJzdF92YWx1ZVwiLFxuICAgIFwiZmxvYXRcIixcbiAgICBcImZsb29yXCIsXG4gICAgXCJmb3JcIixcbiAgICBcImZvcmVpZ25cIixcbiAgICBcImZyYW1lX3Jvd1wiLFxuICAgIFwiZnJlZVwiLFxuICAgIFwiZnJvbVwiLFxuICAgIFwiZnVsbFwiLFxuICAgIFwiZnVuY3Rpb25cIixcbiAgICBcImZ1c2lvblwiLFxuICAgIFwiZ2V0XCIsXG4gICAgXCJnbG9iYWxcIixcbiAgICBcImdyYW50XCIsXG4gICAgXCJncm91cFwiLFxuICAgIFwiZ3JvdXBpbmdcIixcbiAgICBcImdyb3Vwc1wiLFxuICAgIFwiaGF2aW5nXCIsXG4gICAgXCJob2xkXCIsXG4gICAgXCJob3VyXCIsXG4gICAgXCJpZGVudGl0eVwiLFxuICAgIFwiaW5cIixcbiAgICBcImluZGljYXRvclwiLFxuICAgIFwiaW5pdGlhbFwiLFxuICAgIFwiaW5uZXJcIixcbiAgICBcImlub3V0XCIsXG4gICAgXCJpbnNlbnNpdGl2ZVwiLFxuICAgIFwiaW5zZXJ0XCIsXG4gICAgXCJpbnRcIixcbiAgICBcImludGVnZXJcIixcbiAgICBcImludGVyc2VjdFwiLFxuICAgIFwiaW50ZXJzZWN0aW9uXCIsXG4gICAgXCJpbnRlcnZhbFwiLFxuICAgIFwiaW50b1wiLFxuICAgIFwiaXNcIixcbiAgICBcImpvaW5cIixcbiAgICBcImpzb25fYXJyYXlcIixcbiAgICBcImpzb25fYXJyYXlhZ2dcIixcbiAgICBcImpzb25fZXhpc3RzXCIsXG4gICAgXCJqc29uX29iamVjdFwiLFxuICAgIFwianNvbl9vYmplY3RhZ2dcIixcbiAgICBcImpzb25fcXVlcnlcIixcbiAgICBcImpzb25fdGFibGVcIixcbiAgICBcImpzb25fdGFibGVfcHJpbWl0aXZlXCIsXG4gICAgXCJqc29uX3ZhbHVlXCIsXG4gICAgXCJsYWdcIixcbiAgICBcImxhbmd1YWdlXCIsXG4gICAgXCJsYXJnZVwiLFxuICAgIFwibGFzdF92YWx1ZVwiLFxuICAgIFwibGF0ZXJhbFwiLFxuICAgIFwibGVhZFwiLFxuICAgIFwibGVhZGluZ1wiLFxuICAgIFwibGVmdFwiLFxuICAgIFwibGlrZVwiLFxuICAgIFwibGlrZV9yZWdleFwiLFxuICAgIFwibGlzdGFnZ1wiLFxuICAgIFwibG5cIixcbiAgICBcImxvY2FsXCIsXG4gICAgXCJsb2NhbHRpbWVcIixcbiAgICBcImxvY2FsdGltZXN0YW1wXCIsXG4gICAgXCJsb2dcIixcbiAgICBcImxvZzEwXCIsXG4gICAgXCJsb3dlclwiLFxuICAgIFwibWF0Y2hcIixcbiAgICBcIm1hdGNoX251bWJlclwiLFxuICAgIFwibWF0Y2hfcmVjb2duaXplXCIsXG4gICAgXCJtYXRjaGVzXCIsXG4gICAgXCJtYXhcIixcbiAgICBcIm1lbWJlclwiLFxuICAgIFwibWVyZ2VcIixcbiAgICBcIm1ldGhvZFwiLFxuICAgIFwibWluXCIsXG4gICAgXCJtaW51dGVcIixcbiAgICBcIm1vZFwiLFxuICAgIFwibW9kaWZpZXNcIixcbiAgICBcIm1vZHVsZVwiLFxuICAgIFwibW9udGhcIixcbiAgICBcIm11bHRpc2V0XCIsXG4gICAgXCJuYXRpb25hbFwiLFxuICAgIFwibmF0dXJhbFwiLFxuICAgIFwibmNoYXJcIixcbiAgICBcIm5jbG9iXCIsXG4gICAgXCJuZXdcIixcbiAgICBcIm5vXCIsXG4gICAgXCJub25lXCIsXG4gICAgXCJub3JtYWxpemVcIixcbiAgICBcIm5vdFwiLFxuICAgIFwibnRoX3ZhbHVlXCIsXG4gICAgXCJudGlsZVwiLFxuICAgIFwibnVsbFwiLFxuICAgIFwibnVsbGlmXCIsXG4gICAgXCJudW1lcmljXCIsXG4gICAgXCJvY3RldF9sZW5ndGhcIixcbiAgICBcIm9jY3VycmVuY2VzX3JlZ2V4XCIsXG4gICAgXCJvZlwiLFxuICAgIFwib2Zmc2V0XCIsXG4gICAgXCJvbGRcIixcbiAgICBcIm9taXRcIixcbiAgICBcIm9uXCIsXG4gICAgXCJvbmVcIixcbiAgICBcIm9ubHlcIixcbiAgICBcIm9wZW5cIixcbiAgICBcIm9yXCIsXG4gICAgXCJvcmRlclwiLFxuICAgIFwib3V0XCIsXG4gICAgXCJvdXRlclwiLFxuICAgIFwib3ZlclwiLFxuICAgIFwib3ZlcmxhcHNcIixcbiAgICBcIm92ZXJsYXlcIixcbiAgICBcInBhcmFtZXRlclwiLFxuICAgIFwicGFydGl0aW9uXCIsXG4gICAgXCJwYXR0ZXJuXCIsXG4gICAgXCJwZXJcIixcbiAgICBcInBlcmNlbnRcIixcbiAgICBcInBlcmNlbnRfcmFua1wiLFxuICAgIFwicGVyY2VudGlsZV9jb250XCIsXG4gICAgXCJwZXJjZW50aWxlX2Rpc2NcIixcbiAgICBcInBlcmlvZFwiLFxuICAgIFwicG9ydGlvblwiLFxuICAgIFwicG9zaXRpb25cIixcbiAgICBcInBvc2l0aW9uX3JlZ2V4XCIsXG4gICAgXCJwb3dlclwiLFxuICAgIFwicHJlY2VkZXNcIixcbiAgICBcInByZWNpc2lvblwiLFxuICAgIFwicHJlcGFyZVwiLFxuICAgIFwicHJpbWFyeVwiLFxuICAgIFwicHJvY2VkdXJlXCIsXG4gICAgXCJwdGZcIixcbiAgICBcInJhbmdlXCIsXG4gICAgXCJyYW5rXCIsXG4gICAgXCJyZWFkc1wiLFxuICAgIFwicmVhbFwiLFxuICAgIFwicmVjdXJzaXZlXCIsXG4gICAgXCJyZWZcIixcbiAgICBcInJlZmVyZW5jZXNcIixcbiAgICBcInJlZmVyZW5jaW5nXCIsXG4gICAgXCJyZWdyX2F2Z3hcIixcbiAgICBcInJlZ3JfYXZneVwiLFxuICAgIFwicmVncl9jb3VudFwiLFxuICAgIFwicmVncl9pbnRlcmNlcHRcIixcbiAgICBcInJlZ3JfcjJcIixcbiAgICBcInJlZ3Jfc2xvcGVcIixcbiAgICBcInJlZ3Jfc3h4XCIsXG4gICAgXCJyZWdyX3N4eVwiLFxuICAgIFwicmVncl9zeXlcIixcbiAgICBcInJlbGVhc2VcIixcbiAgICBcInJlc3VsdFwiLFxuICAgIFwicmV0dXJuXCIsXG4gICAgXCJyZXR1cm5zXCIsXG4gICAgXCJyZXZva2VcIixcbiAgICBcInJpZ2h0XCIsXG4gICAgXCJyb2xsYmFja1wiLFxuICAgIFwicm9sbHVwXCIsXG4gICAgXCJyb3dcIixcbiAgICBcInJvd19udW1iZXJcIixcbiAgICBcInJvd3NcIixcbiAgICBcInJ1bm5pbmdcIixcbiAgICBcInNhdmVwb2ludFwiLFxuICAgIFwic2NvcGVcIixcbiAgICBcInNjcm9sbFwiLFxuICAgIFwic2VhcmNoXCIsXG4gICAgXCJzZWNvbmRcIixcbiAgICBcInNlZWtcIixcbiAgICBcInNlbGVjdFwiLFxuICAgIFwic2Vuc2l0aXZlXCIsXG4gICAgXCJzZXNzaW9uX3VzZXJcIixcbiAgICBcInNldFwiLFxuICAgIFwic2hvd1wiLFxuICAgIFwic2ltaWxhclwiLFxuICAgIFwic2luXCIsXG4gICAgXCJzaW5oXCIsXG4gICAgXCJza2lwXCIsXG4gICAgXCJzbWFsbGludFwiLFxuICAgIFwic29tZVwiLFxuICAgIFwic3BlY2lmaWNcIixcbiAgICBcInNwZWNpZmljdHlwZVwiLFxuICAgIFwic3FsXCIsXG4gICAgXCJzcWxleGNlcHRpb25cIixcbiAgICBcInNxbHN0YXRlXCIsXG4gICAgXCJzcWx3YXJuaW5nXCIsXG4gICAgXCJzcXJ0XCIsXG4gICAgXCJzdGFydFwiLFxuICAgIFwic3RhdGljXCIsXG4gICAgXCJzdGRkZXZfcG9wXCIsXG4gICAgXCJzdGRkZXZfc2FtcFwiLFxuICAgIFwic3VibXVsdGlzZXRcIixcbiAgICBcInN1YnNldFwiLFxuICAgIFwic3Vic3RyaW5nXCIsXG4gICAgXCJzdWJzdHJpbmdfcmVnZXhcIixcbiAgICBcInN1Y2NlZWRzXCIsXG4gICAgXCJzdW1cIixcbiAgICBcInN5bW1ldHJpY1wiLFxuICAgIFwic3lzdGVtXCIsXG4gICAgXCJzeXN0ZW1fdGltZVwiLFxuICAgIFwic3lzdGVtX3VzZXJcIixcbiAgICBcInRhYmxlXCIsXG4gICAgXCJ0YWJsZXNhbXBsZVwiLFxuICAgIFwidGFuXCIsXG4gICAgXCJ0YW5oXCIsXG4gICAgXCJ0aGVuXCIsXG4gICAgXCJ0aW1lXCIsXG4gICAgXCJ0aW1lc3RhbXBcIixcbiAgICBcInRpbWV6b25lX2hvdXJcIixcbiAgICBcInRpbWV6b25lX21pbnV0ZVwiLFxuICAgIFwidG9cIixcbiAgICBcInRyYWlsaW5nXCIsXG4gICAgXCJ0cmFuc2xhdGVcIixcbiAgICBcInRyYW5zbGF0ZV9yZWdleFwiLFxuICAgIFwidHJhbnNsYXRpb25cIixcbiAgICBcInRyZWF0XCIsXG4gICAgXCJ0cmlnZ2VyXCIsXG4gICAgXCJ0cmltXCIsXG4gICAgXCJ0cmltX2FycmF5XCIsXG4gICAgXCJ0cnVlXCIsXG4gICAgXCJ0cnVuY2F0ZVwiLFxuICAgIFwidWVzY2FwZVwiLFxuICAgIFwidW5pb25cIixcbiAgICBcInVuaXF1ZVwiLFxuICAgIFwidW5rbm93blwiLFxuICAgIFwidW5uZXN0XCIsXG4gICAgXCJ1cGRhdGVcIixcbiAgICBcInVwcGVyXCIsXG4gICAgXCJ1c2VyXCIsXG4gICAgXCJ1c2luZ1wiLFxuICAgIFwidmFsdWVcIixcbiAgICBcInZhbHVlc1wiLFxuICAgIFwidmFsdWVfb2ZcIixcbiAgICBcInZhcl9wb3BcIixcbiAgICBcInZhcl9zYW1wXCIsXG4gICAgXCJ2YXJiaW5hcnlcIixcbiAgICBcInZhcmNoYXJcIixcbiAgICBcInZhcnlpbmdcIixcbiAgICBcInZlcnNpb25pbmdcIixcbiAgICBcIndoZW5cIixcbiAgICBcIndoZW5ldmVyXCIsXG4gICAgXCJ3aGVyZVwiLFxuICAgIFwid2lkdGhfYnVja2V0XCIsXG4gICAgXCJ3aW5kb3dcIixcbiAgICBcIndpdGhcIixcbiAgICBcIndpdGhpblwiLFxuICAgIFwid2l0aG91dFwiLFxuICAgIFwieWVhclwiLFxuICBdO1xuXG4gIC8vIHRoZXNlIGFyZSByZXNlcnZlZCB3b3JkcyB3ZSBoYXZlIGlkZW50aWZpZWQgdG8gYmUgZnVuY3Rpb25zXG4gIC8vIGFuZCBzaG91bGQgb25seSBiZSBoaWdobGlnaHRlZCBpbiBhIGRpc3BhdGNoLWxpa2UgY29udGV4dFxuICAvLyBpZSwgYXJyYXlfYWdnKC4uLiksIGV0Yy5cbiAgY29uc3QgUkVTRVJWRURfRlVOQ1RJT05TID0gW1xuICAgIFwiYWJzXCIsXG4gICAgXCJhY29zXCIsXG4gICAgXCJhcnJheV9hZ2dcIixcbiAgICBcImFzaW5cIixcbiAgICBcImF0YW5cIixcbiAgICBcImF2Z1wiLFxuICAgIFwiY2FzdFwiLFxuICAgIFwiY2VpbFwiLFxuICAgIFwiY2VpbGluZ1wiLFxuICAgIFwiY29hbGVzY2VcIixcbiAgICBcImNvcnJcIixcbiAgICBcImNvc1wiLFxuICAgIFwiY29zaFwiLFxuICAgIFwiY291bnRcIixcbiAgICBcImNvdmFyX3BvcFwiLFxuICAgIFwiY292YXJfc2FtcFwiLFxuICAgIFwiY3VtZV9kaXN0XCIsXG4gICAgXCJkZW5zZV9yYW5rXCIsXG4gICAgXCJkZXJlZlwiLFxuICAgIFwiZWxlbWVudFwiLFxuICAgIFwiZXhwXCIsXG4gICAgXCJleHRyYWN0XCIsXG4gICAgXCJmaXJzdF92YWx1ZVwiLFxuICAgIFwiZmxvb3JcIixcbiAgICBcImpzb25fYXJyYXlcIixcbiAgICBcImpzb25fYXJyYXlhZ2dcIixcbiAgICBcImpzb25fZXhpc3RzXCIsXG4gICAgXCJqc29uX29iamVjdFwiLFxuICAgIFwianNvbl9vYmplY3RhZ2dcIixcbiAgICBcImpzb25fcXVlcnlcIixcbiAgICBcImpzb25fdGFibGVcIixcbiAgICBcImpzb25fdGFibGVfcHJpbWl0aXZlXCIsXG4gICAgXCJqc29uX3ZhbHVlXCIsXG4gICAgXCJsYWdcIixcbiAgICBcImxhc3RfdmFsdWVcIixcbiAgICBcImxlYWRcIixcbiAgICBcImxpc3RhZ2dcIixcbiAgICBcImxuXCIsXG4gICAgXCJsb2dcIixcbiAgICBcImxvZzEwXCIsXG4gICAgXCJsb3dlclwiLFxuICAgIFwibWF4XCIsXG4gICAgXCJtaW5cIixcbiAgICBcIm1vZFwiLFxuICAgIFwibnRoX3ZhbHVlXCIsXG4gICAgXCJudGlsZVwiLFxuICAgIFwibnVsbGlmXCIsXG4gICAgXCJwZXJjZW50X3JhbmtcIixcbiAgICBcInBlcmNlbnRpbGVfY29udFwiLFxuICAgIFwicGVyY2VudGlsZV9kaXNjXCIsXG4gICAgXCJwb3NpdGlvblwiLFxuICAgIFwicG9zaXRpb25fcmVnZXhcIixcbiAgICBcInBvd2VyXCIsXG4gICAgXCJyYW5rXCIsXG4gICAgXCJyZWdyX2F2Z3hcIixcbiAgICBcInJlZ3JfYXZneVwiLFxuICAgIFwicmVncl9jb3VudFwiLFxuICAgIFwicmVncl9pbnRlcmNlcHRcIixcbiAgICBcInJlZ3JfcjJcIixcbiAgICBcInJlZ3Jfc2xvcGVcIixcbiAgICBcInJlZ3Jfc3h4XCIsXG4gICAgXCJyZWdyX3N4eVwiLFxuICAgIFwicmVncl9zeXlcIixcbiAgICBcInJvd19udW1iZXJcIixcbiAgICBcInNpblwiLFxuICAgIFwic2luaFwiLFxuICAgIFwic3FydFwiLFxuICAgIFwic3RkZGV2X3BvcFwiLFxuICAgIFwic3RkZGV2X3NhbXBcIixcbiAgICBcInN1YnN0cmluZ1wiLFxuICAgIFwic3Vic3RyaW5nX3JlZ2V4XCIsXG4gICAgXCJzdW1cIixcbiAgICBcInRhblwiLFxuICAgIFwidGFuaFwiLFxuICAgIFwidHJhbnNsYXRlXCIsXG4gICAgXCJ0cmFuc2xhdGVfcmVnZXhcIixcbiAgICBcInRyZWF0XCIsXG4gICAgXCJ0cmltXCIsXG4gICAgXCJ0cmltX2FycmF5XCIsXG4gICAgXCJ1bm5lc3RcIixcbiAgICBcInVwcGVyXCIsXG4gICAgXCJ2YWx1ZV9vZlwiLFxuICAgIFwidmFyX3BvcFwiLFxuICAgIFwidmFyX3NhbXBcIixcbiAgICBcIndpZHRoX2J1Y2tldFwiLFxuICBdO1xuXG4gIC8vIHRoZXNlIGZ1bmN0aW9ucyBjYW5cbiAgY29uc3QgUE9TU0lCTEVfV0lUSE9VVF9QQVJFTlMgPSBbXG4gICAgXCJjdXJyZW50X2NhdGFsb2dcIixcbiAgICBcImN1cnJlbnRfZGF0ZVwiLFxuICAgIFwiY3VycmVudF9kZWZhdWx0X3RyYW5zZm9ybV9ncm91cFwiLFxuICAgIFwiY3VycmVudF9wYXRoXCIsXG4gICAgXCJjdXJyZW50X3JvbGVcIixcbiAgICBcImN1cnJlbnRfc2NoZW1hXCIsXG4gICAgXCJjdXJyZW50X3RyYW5zZm9ybV9ncm91cF9mb3JfdHlwZVwiLFxuICAgIFwiY3VycmVudF91c2VyXCIsXG4gICAgXCJzZXNzaW9uX3VzZXJcIixcbiAgICBcInN5c3RlbV90aW1lXCIsXG4gICAgXCJzeXN0ZW1fdXNlclwiLFxuICAgIFwiY3VycmVudF90aW1lXCIsXG4gICAgXCJsb2NhbHRpbWVcIixcbiAgICBcImN1cnJlbnRfdGltZXN0YW1wXCIsXG4gICAgXCJsb2NhbHRpbWVzdGFtcFwiXG4gIF07XG5cbiAgLy8gdGhvc2UgZXhpc3QgdG8gYm9vc3QgcmVsZXZhbmNlIG1ha2luZyB0aGVzZSB2ZXJ5XG4gIC8vIFwiU1FMIGxpa2VcIiBrZXl3b3JkIGNvbWJvcyB3b3J0aCArMSBleHRyYSByZWxldmFuY2VcbiAgY29uc3QgQ09NQk9TID0gW1xuICAgIFwiY3JlYXRlIHRhYmxlXCIsXG4gICAgXCJpbnNlcnQgaW50b1wiLFxuICAgIFwicHJpbWFyeSBrZXlcIixcbiAgICBcImZvcmVpZ24ga2V5XCIsXG4gICAgXCJub3QgbnVsbFwiLFxuICAgIFwiYWx0ZXIgdGFibGVcIixcbiAgICBcImFkZCBjb25zdHJhaW50XCIsXG4gICAgXCJncm91cGluZyBzZXRzXCIsXG4gICAgXCJvbiBvdmVyZmxvd1wiLFxuICAgIFwiY2hhcmFjdGVyIHNldFwiLFxuICAgIFwicmVzcGVjdCBudWxsc1wiLFxuICAgIFwiaWdub3JlIG51bGxzXCIsXG4gICAgXCJudWxscyBmaXJzdFwiLFxuICAgIFwibnVsbHMgbGFzdFwiLFxuICAgIFwiZGVwdGggZmlyc3RcIixcbiAgICBcImJyZWFkdGggZmlyc3RcIlxuICBdO1xuXG4gIGNvbnN0IEZVTkNUSU9OUyA9IFJFU0VSVkVEX0ZVTkNUSU9OUztcblxuICBjb25zdCBLRVlXT1JEUyA9IFtcbiAgICAuLi5SRVNFUlZFRF9XT1JEUyxcbiAgICAuLi5OT05fUkVTRVJWRURfV09SRFNcbiAgXS5maWx0ZXIoKGtleXdvcmQpID0+IHtcbiAgICByZXR1cm4gIVJFU0VSVkVEX0ZVTkNUSU9OUy5pbmNsdWRlcyhrZXl3b3JkKTtcbiAgfSk7XG5cbiAgY29uc3QgVkFSSUFCTEUgPSB7XG4gICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlXCIsXG4gICAgYmVnaW46IC9AW2EtejAtOV0rLyxcbiAgfTtcblxuICBjb25zdCBPUEVSQVRPUiA9IHtcbiAgICBjbGFzc05hbWU6IFwib3BlcmF0b3JcIixcbiAgICBiZWdpbjogL1stKyovPSVefl18JiY/fFxcfFxcfD98IT0/fDwoPzo9Pj98PHw+KT98Pls+PV0/LyxcbiAgICByZWxldmFuY2U6IDAsXG4gIH07XG5cbiAgY29uc3QgRlVOQ1RJT05fQ0FMTCA9IHtcbiAgICBiZWdpbjogcmVnZXguY29uY2F0KC9cXGIvLCByZWdleC5laXRoZXIoLi4uRlVOQ1RJT05TKSwgL1xccypcXCgvKSxcbiAgICByZWxldmFuY2U6IDAsXG4gICAga2V5d29yZHM6IHsgYnVpbHRfaW46IEZVTkNUSU9OUyB9XG4gIH07XG5cbiAgLy8ga2V5d29yZHMgd2l0aCBsZXNzIHRoYW4gMyBsZXR0ZXJzIGFyZSByZWR1Y2VkIGluIHJlbGV2YW5jeVxuICBmdW5jdGlvbiByZWR1Y2VSZWxldmFuY3kobGlzdCwge1xuICAgIGV4Y2VwdGlvbnMsIHdoZW5cbiAgfSA9IHt9KSB7XG4gICAgY29uc3QgcXVhbGlmeUZuID0gd2hlbjtcbiAgICBleGNlcHRpb25zID0gZXhjZXB0aW9ucyB8fCBbXTtcbiAgICByZXR1cm4gbGlzdC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLm1hdGNoKC9cXHxcXGQrJC8pIHx8IGV4Y2VwdGlvbnMuaW5jbHVkZXMoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9IGVsc2UgaWYgKHF1YWxpZnlGbihpdGVtKSkge1xuICAgICAgICByZXR1cm4gYCR7aXRlbX18MGA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1NRTCcsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAvLyBkb2VzIG5vdCBpbmNsdWRlIHt9IG9yIEhUTUwgdGFncyBgPC9gXG4gICAgaWxsZWdhbDogL1t7fV18PFxcLy8sXG4gICAga2V5d29yZHM6IHtcbiAgICAgICRwYXR0ZXJuOiAvXFxiW1xcd1xcLl0rLyxcbiAgICAgIGtleXdvcmQ6XG4gICAgICAgIHJlZHVjZVJlbGV2YW5jeShLRVlXT1JEUywgeyB3aGVuOiAoeCkgPT4geC5sZW5ndGggPCAzIH0pLFxuICAgICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgICB0eXBlOiBUWVBFUyxcbiAgICAgIGJ1aWx0X2luOiBQT1NTSUJMRV9XSVRIT1VUX1BBUkVOU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IHJlZ2V4LmVpdGhlciguLi5DT01CT1MpLFxuICAgICAgICByZWxldmFuY2U6IDAsXG4gICAgICAgIGtleXdvcmRzOiB7XG4gICAgICAgICAgJHBhdHRlcm46IC9bXFx3XFwuXSsvLFxuICAgICAgICAgIGtleXdvcmQ6IEtFWVdPUkRTLmNvbmNhdChDT01CT1MpLFxuICAgICAgICAgIGxpdGVyYWw6IExJVEVSQUxTLFxuICAgICAgICAgIHR5cGU6IFRZUEVTXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6IFwidHlwZVwiLFxuICAgICAgICBiZWdpbjogcmVnZXguZWl0aGVyKC4uLk1VTFRJX1dPUkRfVFlQRVMpXG4gICAgICB9LFxuICAgICAgRlVOQ1RJT05fQ0FMTCxcbiAgICAgIFZBUklBQkxFLFxuICAgICAgU1RSSU5HLFxuICAgICAgUVVPVEVEX0lERU5USUZJRVIsXG4gICAgICBobGpzLkNfTlVNQkVSX01PREUsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgQ09NTUVOVF9NT0RFLFxuICAgICAgT1BFUkFUT1JcbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IHNxbCBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsic3FsIiwiaGxqcyIsInJlZ2V4IiwiQ09NTUVOVF9NT0RFIiwiQ09NTUVOVCIsIlNUUklORyIsImNsYXNzTmFtZSIsInZhcmlhbnRzIiwiYmVnaW4iLCJlbmQiLCJjb250YWlucyIsIlFVT1RFRF9JREVOVElGSUVSIiwiTElURVJBTFMiLCJNVUxUSV9XT1JEX1RZUEVTIiwiVFlQRVMiLCJOT05fUkVTRVJWRURfV09SRFMiLCJSRVNFUlZFRF9XT1JEUyIsIlJFU0VSVkVEX0ZVTkNUSU9OUyIsIlBPU1NJQkxFX1dJVEhPVVRfUEFSRU5TIiwiQ09NQk9TIiwiRlVOQ1RJT05TIiwiS0VZV09SRFMiLCJmaWx0ZXIiLCJrZXl3b3JkIiwiaW5jbHVkZXMiLCJWQVJJQUJMRSIsIk9QRVJBVE9SIiwicmVsZXZhbmNlIiwiRlVOQ1RJT05fQ0FMTCIsImNvbmNhdCIsImVpdGhlciIsImtleXdvcmRzIiwiYnVpbHRfaW4iLCJyZWR1Y2VSZWxldmFuY3kiLCJsaXN0IiwiZXhjZXB0aW9ucyIsIndoZW4iLCJxdWFsaWZ5Rm4iLCJtYXAiLCJpdGVtIiwibWF0Y2giLCJuYW1lIiwiY2FzZV9pbnNlbnNpdGl2ZSIsImlsbGVnYWwiLCIkcGF0dGVybiIsIngiLCJsZW5ndGgiLCJsaXRlcmFsIiwidHlwZSIsIkNfTlVNQkVSX01PREUiLCJDX0JMT0NLX0NPTU1FTlRfTU9ERSIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/sql.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/swift.js":
/*!*********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/swift.js ***!
\*********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ swift)\n/* harmony export */ });\n/**\n * @param {string} value\n * @returns {RegExp}\n * */ /**\n * @param {RegExp | string } re\n * @returns {string}\n */ function source(re) {\n if (!re) return null;\n if (typeof re === \"string\") return re;\n return re.source;\n}\n/**\n * @param {RegExp | string } re\n * @returns {string}\n */ function lookahead(re) {\n return concat(\"(?=\", re, \")\");\n}\n/**\n * @param {...(RegExp | string) } args\n * @returns {string}\n */ function concat(...args) {\n const joined = args.map((x)=>source(x)).join(\"\");\n return joined;\n}\n/**\n * @param { Array<string | RegExp | Object> } args\n * @returns {object}\n */ function stripOptionsFromArgs(args) {\n const opts = args[args.length - 1];\n if (typeof opts === \"object\" && opts.constructor === Object) {\n args.splice(args.length - 1, 1);\n return opts;\n } else {\n return {};\n }\n}\n/** @typedef { {capture?: boolean} } RegexEitherOptions */ /**\n * Any of the passed expresssions may match\n *\n * Creates a huge this | this | that | that match\n * @param {(RegExp | string)[] | [...(RegExp | string)[], RegexEitherOptions]} args\n * @returns {string}\n */ function either(...args) {\n /** @type { object & {capture?: boolean} } */ const opts = stripOptionsFromArgs(args);\n const joined = \"(\" + (opts.capture ? \"\" : \"?:\") + args.map((x)=>source(x)).join(\"|\") + \")\";\n return joined;\n}\nconst keywordWrapper = (keyword)=>concat(/\\b/, keyword, /\\w$/.test(keyword) ? /\\b/ : /\\B/);\n// Keywords that require a leading dot.\nconst dotKeywords = [\n \"Protocol\",\n \"Type\" // contextual\n].map(keywordWrapper);\n// Keywords that may have a leading dot.\nconst optionalDotKeywords = [\n \"init\",\n \"self\"\n].map(keywordWrapper);\n// should register as keyword, not type\nconst keywordTypes = [\n \"Any\",\n \"Self\"\n];\n// Regular keywords and literals.\nconst keywords = [\n // strings below will be fed into the regular `keywords` engine while regex\n // will result in additional modes being created to scan for those keywords to\n // avoid conflicts with other rules\n \"actor\",\n \"any\",\n \"associatedtype\",\n \"async\",\n \"await\",\n /as\\?/,\n /as!/,\n \"as\",\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"continue\",\n \"convenience\",\n \"default\",\n \"defer\",\n \"deinit\",\n \"didSet\",\n \"distributed\",\n \"do\",\n \"dynamic\",\n \"else\",\n \"enum\",\n \"extension\",\n \"fallthrough\",\n /fileprivate\\(set\\)/,\n \"fileprivate\",\n \"final\",\n \"for\",\n \"func\",\n \"get\",\n \"guard\",\n \"if\",\n \"import\",\n \"indirect\",\n \"infix\",\n /init\\?/,\n /init!/,\n \"inout\",\n /internal\\(set\\)/,\n \"internal\",\n \"in\",\n \"is\",\n \"isolated\",\n \"nonisolated\",\n \"lazy\",\n \"let\",\n \"mutating\",\n \"nonmutating\",\n /open\\(set\\)/,\n \"open\",\n \"operator\",\n \"optional\",\n \"override\",\n \"postfix\",\n \"precedencegroup\",\n \"prefix\",\n /private\\(set\\)/,\n \"private\",\n \"protocol\",\n /public\\(set\\)/,\n \"public\",\n \"repeat\",\n \"required\",\n \"rethrows\",\n \"return\",\n \"set\",\n \"some\",\n \"static\",\n \"struct\",\n \"subscript\",\n \"super\",\n \"switch\",\n \"throws\",\n \"throw\",\n /try\\?/,\n /try!/,\n \"try\",\n \"typealias\",\n /unowned\\(safe\\)/,\n /unowned\\(unsafe\\)/,\n \"unowned\",\n \"var\",\n \"weak\",\n \"where\",\n \"while\",\n \"willSet\" // contextual\n];\n// NOTE: Contextual keywords are reserved only in specific contexts.\n// Ideally, these should be matched using modes to avoid false positives.\n// Literals.\nconst literals = [\n \"false\",\n \"nil\",\n \"true\"\n];\n// Keywords used in precedence groups.\nconst precedencegroupKeywords = [\n \"assignment\",\n \"associativity\",\n \"higherThan\",\n \"left\",\n \"lowerThan\",\n \"none\",\n \"right\"\n];\n// Keywords that start with a number sign (#).\n// #(un)available is handled separately.\nconst numberSignKeywords = [\n \"#colorLiteral\",\n \"#column\",\n \"#dsohandle\",\n \"#else\",\n \"#elseif\",\n \"#endif\",\n \"#error\",\n \"#file\",\n \"#fileID\",\n \"#fileLiteral\",\n \"#filePath\",\n \"#function\",\n \"#if\",\n \"#imageLiteral\",\n \"#keyPath\",\n \"#line\",\n \"#selector\",\n \"#sourceLocation\",\n \"#warn_unqualified_access\",\n \"#warning\"\n];\n// Global functions in the Standard Library.\nconst builtIns = [\n \"abs\",\n \"all\",\n \"any\",\n \"assert\",\n \"assertionFailure\",\n \"debugPrint\",\n \"dump\",\n \"fatalError\",\n \"getVaList\",\n \"isKnownUniquelyReferenced\",\n \"max\",\n \"min\",\n \"numericCast\",\n \"pointwiseMax\",\n \"pointwiseMin\",\n \"precondition\",\n \"preconditionFailure\",\n \"print\",\n \"readLine\",\n \"repeatElement\",\n \"sequence\",\n \"stride\",\n \"swap\",\n \"swift_unboxFromSwiftValueWithType\",\n \"transcode\",\n \"type\",\n \"unsafeBitCast\",\n \"unsafeDowncast\",\n \"withExtendedLifetime\",\n \"withUnsafeMutablePointer\",\n \"withUnsafePointer\",\n \"withVaList\",\n \"withoutActuallyEscaping\",\n \"zip\"\n];\n// Valid first characters for operators.\nconst operatorHead = either(/[/=\\-+!*%<>&|^~?]/, /[\\u00A1-\\u00A7]/, /[\\u00A9\\u00AB]/, /[\\u00AC\\u00AE]/, /[\\u00B0\\u00B1]/, /[\\u00B6\\u00BB\\u00BF\\u00D7\\u00F7]/, /[\\u2016-\\u2017]/, /[\\u2020-\\u2027]/, /[\\u2030-\\u203E]/, /[\\u2041-\\u2053]/, /[\\u2055-\\u205E]/, /[\\u2190-\\u23FF]/, /[\\u2500-\\u2775]/, /[\\u2794-\\u2BFF]/, /[\\u2E00-\\u2E7F]/, /[\\u3001-\\u3003]/, /[\\u3008-\\u3020]/, /[\\u3030]/);\n// Valid characters for operators.\nconst operatorCharacter = either(operatorHead, /[\\u0300-\\u036F]/, /[\\u1DC0-\\u1DFF]/, /[\\u20D0-\\u20FF]/, /[\\uFE00-\\uFE0F]/, /[\\uFE20-\\uFE2F]/);\n// Valid operator.\nconst operator = concat(operatorHead, operatorCharacter, \"*\");\n// Valid first characters for identifiers.\nconst identifierHead = either(/[a-zA-Z_]/, /[\\u00A8\\u00AA\\u00AD\\u00AF\\u00B2-\\u00B5\\u00B7-\\u00BA]/, /[\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]/, /[\\u0100-\\u02FF\\u0370-\\u167F\\u1681-\\u180D\\u180F-\\u1DBF]/, /[\\u1E00-\\u1FFF]/, /[\\u200B-\\u200D\\u202A-\\u202E\\u203F-\\u2040\\u2054\\u2060-\\u206F]/, /[\\u2070-\\u20CF\\u2100-\\u218F\\u2460-\\u24FF\\u2776-\\u2793]/, /[\\u2C00-\\u2DFF\\u2E80-\\u2FFF]/, /[\\u3004-\\u3007\\u3021-\\u302F\\u3031-\\u303F\\u3040-\\uD7FF]/, /[\\uF900-\\uFD3D\\uFD40-\\uFDCF\\uFDF0-\\uFE1F\\uFE30-\\uFE44]/, /[\\uFE47-\\uFEFE\\uFF00-\\uFFFD]/ // Should be /[\\uFE47-\\uFFFD]/, but we have to exclude FEFF.\n);\n// Valid characters for identifiers.\nconst identifierCharacter = either(identifierHead, /\\d/, /[\\u0300-\\u036F\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]/);\n// Valid identifier.\nconst identifier = concat(identifierHead, identifierCharacter, \"*\");\n// Valid type identifier.\nconst typeIdentifier = concat(/[A-Z]/, identifierCharacter, \"*\");\n// Built-in attributes, which are highlighted as keywords.\n// @available is handled separately.\nconst keywordAttributes = [\n \"autoclosure\",\n concat(/convention\\(/, either(\"swift\", \"block\", \"c\"), /\\)/),\n \"discardableResult\",\n \"dynamicCallable\",\n \"dynamicMemberLookup\",\n \"escaping\",\n \"frozen\",\n \"GKInspectable\",\n \"IBAction\",\n \"IBDesignable\",\n \"IBInspectable\",\n \"IBOutlet\",\n \"IBSegueAction\",\n \"inlinable\",\n \"main\",\n \"nonobjc\",\n \"NSApplicationMain\",\n \"NSCopying\",\n \"NSManaged\",\n concat(/objc\\(/, identifier, /\\)/),\n \"objc\",\n \"objcMembers\",\n \"propertyWrapper\",\n \"requires_stored_property_inits\",\n \"resultBuilder\",\n \"testable\",\n \"UIApplicationMain\",\n \"unknown\",\n \"usableFromInline\"\n];\n// Contextual keywords used in @available and #(un)available.\nconst availabilityKeywords = [\n \"iOS\",\n \"iOSApplicationExtension\",\n \"macOS\",\n \"macOSApplicationExtension\",\n \"macCatalyst\",\n \"macCatalystApplicationExtension\",\n \"watchOS\",\n \"watchOSApplicationExtension\",\n \"tvOS\",\n \"tvOSApplicationExtension\",\n \"swift\"\n];\n/*\nLanguage: Swift\nDescription: Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.\nAuthor: Steven Van Impe <steven.vanimpe@icloud.com>\nContributors: Chris Eidhof <chris@eidhof.nl>, Nate Cook <natecook@gmail.com>, Alexander Lichter <manniL@gmx.net>, Richard Gibson <gibson042@github>\nWebsite: https://swift.org\nCategory: common, system\n*/ /** @type LanguageFn */ function swift(hljs) {\n const WHITESPACE = {\n match: /\\s+/,\n relevance: 0\n };\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID411\n const BLOCK_COMMENT = hljs.COMMENT(\"/\\\\*\", \"\\\\*/\", {\n contains: [\n \"self\"\n ]\n });\n const COMMENTS = [\n hljs.C_LINE_COMMENT_MODE,\n BLOCK_COMMENT\n ];\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413\n // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html\n const DOT_KEYWORD = {\n match: [\n /\\./,\n either(...dotKeywords, ...optionalDotKeywords)\n ],\n className: {\n 2: \"keyword\"\n }\n };\n const KEYWORD_GUARD = {\n // Consume .keyword to prevent highlighting properties and methods as keywords.\n match: concat(/\\./, either(...keywords)),\n relevance: 0\n };\n const PLAIN_KEYWORDS = keywords.filter((kw)=>typeof kw === \"string\").concat([\n \"_|0\"\n ]); // seems common, so 0 relevance\n const REGEX_KEYWORDS = keywords.filter((kw)=>typeof kw !== \"string\") // find regex\n .concat(keywordTypes).map(keywordWrapper);\n const KEYWORD = {\n variants: [\n {\n className: \"keyword\",\n match: either(...REGEX_KEYWORDS, ...optionalDotKeywords)\n }\n ]\n };\n // find all the regular keywords\n const KEYWORDS = {\n $pattern: either(/\\b\\w+/, /#\\w+/ // number keywords\n ),\n keyword: PLAIN_KEYWORDS.concat(numberSignKeywords),\n literal: literals\n };\n const KEYWORD_MODES = [\n DOT_KEYWORD,\n KEYWORD_GUARD,\n KEYWORD\n ];\n // https://github.com/apple/swift/tree/main/stdlib/public/core\n const BUILT_IN_GUARD = {\n // Consume .built_in to prevent highlighting properties and methods.\n match: concat(/\\./, either(...builtIns)),\n relevance: 0\n };\n const BUILT_IN = {\n className: \"built_in\",\n match: concat(/\\b/, either(...builtIns), /(?=\\()/)\n };\n const BUILT_INS = [\n BUILT_IN_GUARD,\n BUILT_IN\n ];\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418\n const OPERATOR_GUARD = {\n // Prevent -> from being highlighting as an operator.\n match: /->/,\n relevance: 0\n };\n const OPERATOR = {\n className: \"operator\",\n relevance: 0,\n variants: [\n {\n match: operator\n },\n {\n // dot-operator: only operators that start with a dot are allowed to use dots as\n // characters (..., ...<, .*, etc). So there rule here is: a dot followed by one or more\n // characters that may also include dots.\n match: `\\\\.(\\\\.|${operatorCharacter})+`\n }\n ]\n };\n const OPERATORS = [\n OPERATOR_GUARD,\n OPERATOR\n ];\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_numeric-literal\n // TODO: Update for leading `-` after lookbehind is supported everywhere\n const decimalDigits = \"([0-9]_*)+\";\n const hexDigits = \"([0-9a-fA-F]_*)+\";\n const NUMBER = {\n className: \"number\",\n relevance: 0,\n variants: [\n // decimal floating-point-literal (subsumes decimal-literal)\n {\n match: `\\\\b(${decimalDigits})(\\\\.(${decimalDigits}))?` + `([eE][+-]?(${decimalDigits}))?\\\\b`\n },\n // hexadecimal floating-point-literal (subsumes hexadecimal-literal)\n {\n match: `\\\\b0x(${hexDigits})(\\\\.(${hexDigits}))?` + `([pP][+-]?(${decimalDigits}))?\\\\b`\n },\n // octal-literal\n {\n match: /\\b0o([0-7]_*)+\\b/\n },\n // binary-literal\n {\n match: /\\b0b([01]_*)+\\b/\n }\n ]\n };\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#grammar_string-literal\n const ESCAPED_CHARACTER = (rawDelimiter = \"\")=>({\n className: \"subst\",\n variants: [\n {\n match: concat(/\\\\/, rawDelimiter, /[0\\\\tnr\"']/)\n },\n {\n match: concat(/\\\\/, rawDelimiter, /u\\{[0-9a-fA-F]{1,8}\\}/)\n }\n ]\n });\n const ESCAPED_NEWLINE = (rawDelimiter = \"\")=>({\n className: \"subst\",\n match: concat(/\\\\/, rawDelimiter, /[\\t ]*(?:[\\r\\n]|\\r\\n)/)\n });\n const INTERPOLATION = (rawDelimiter = \"\")=>({\n className: \"subst\",\n label: \"interpol\",\n begin: concat(/\\\\/, rawDelimiter, /\\(/),\n end: /\\)/\n });\n const MULTILINE_STRING = (rawDelimiter = \"\")=>({\n begin: concat(rawDelimiter, /\"\"\"/),\n end: concat(/\"\"\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n ESCAPED_NEWLINE(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const SINGLE_LINE_STRING = (rawDelimiter = \"\")=>({\n begin: concat(rawDelimiter, /\"/),\n end: concat(/\"/, rawDelimiter),\n contains: [\n ESCAPED_CHARACTER(rawDelimiter),\n INTERPOLATION(rawDelimiter)\n ]\n });\n const STRING = {\n className: \"string\",\n variants: [\n MULTILINE_STRING(),\n MULTILINE_STRING(\"#\"),\n MULTILINE_STRING(\"##\"),\n MULTILINE_STRING(\"###\"),\n SINGLE_LINE_STRING(),\n SINGLE_LINE_STRING(\"#\"),\n SINGLE_LINE_STRING(\"##\"),\n SINGLE_LINE_STRING(\"###\")\n ]\n };\n // https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID412\n const QUOTED_IDENTIFIER = {\n match: concat(/`/, identifier, /`/)\n };\n const IMPLICIT_PARAMETER = {\n className: \"variable\",\n match: /\\$\\d+/\n };\n const PROPERTY_WRAPPER_PROJECTION = {\n className: \"variable\",\n match: `\\\\$${identifierCharacter}+`\n };\n const IDENTIFIERS = [\n QUOTED_IDENTIFIER,\n IMPLICIT_PARAMETER,\n PROPERTY_WRAPPER_PROJECTION\n ];\n // https://docs.swift.org/swift-book/ReferenceManual/Attributes.html\n const AVAILABLE_ATTRIBUTE = {\n match: /(@|#(un)?)available/,\n className: \"keyword\",\n starts: {\n contains: [\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: availabilityKeywords,\n contains: [\n ...OPERATORS,\n NUMBER,\n STRING\n ]\n }\n ]\n }\n };\n const KEYWORD_ATTRIBUTE = {\n className: \"keyword\",\n match: concat(/@/, either(...keywordAttributes))\n };\n const USER_DEFINED_ATTRIBUTE = {\n className: \"meta\",\n match: concat(/@/, identifier)\n };\n const ATTRIBUTES = [\n AVAILABLE_ATTRIBUTE,\n KEYWORD_ATTRIBUTE,\n USER_DEFINED_ATTRIBUTE\n ];\n // https://docs.swift.org/swift-book/ReferenceManual/Types.html\n const TYPE = {\n match: lookahead(/\\b[A-Z]/),\n relevance: 0,\n contains: [\n {\n className: \"type\",\n match: concat(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/, identifierCharacter, \"+\")\n },\n {\n className: \"type\",\n match: typeIdentifier,\n relevance: 0\n },\n {\n match: /[?!]+/,\n relevance: 0\n },\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n {\n match: concat(/\\s+&\\s+/, lookahead(typeIdentifier)),\n relevance: 0\n }\n ]\n };\n const GENERIC_ARGUMENTS = {\n begin: /</,\n end: />/,\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...ATTRIBUTES,\n OPERATOR_GUARD,\n TYPE\n ]\n };\n TYPE.contains.push(GENERIC_ARGUMENTS);\n // https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID552\n // Prevents element names from being highlighted as keywords.\n const TUPLE_ELEMENT_NAME = {\n match: concat(identifier, /\\s*:/),\n keywords: \"_|0\",\n relevance: 0\n };\n // Matches tuples as well as the parameter list of a function type.\n const TUPLE = {\n begin: /\\(/,\n end: /\\)/,\n relevance: 0,\n keywords: KEYWORDS,\n contains: [\n \"self\",\n TUPLE_ELEMENT_NAME,\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE\n ]\n };\n const GENERIC_PARAMETERS = {\n begin: /</,\n end: />/,\n contains: [\n ...COMMENTS,\n TYPE\n ]\n };\n const FUNCTION_PARAMETER_NAME = {\n begin: either(lookahead(concat(identifier, /\\s*:/)), lookahead(concat(identifier, /\\s+/, identifier, /\\s*:/))),\n end: /:/,\n relevance: 0,\n contains: [\n {\n className: \"keyword\",\n match: /\\b_\\b/\n },\n {\n className: \"params\",\n match: identifier\n }\n ]\n };\n const FUNCTION_PARAMETERS = {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS,\n contains: [\n FUNCTION_PARAMETER_NAME,\n ...COMMENTS,\n ...KEYWORD_MODES,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ],\n endsParent: true,\n illegal: /[\"']/\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362\n const FUNCTION = {\n match: [\n /func/,\n /\\s+/,\n either(QUOTED_IDENTIFIER.match, identifier, operator)\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: [\n /\\[/,\n /%/\n ]\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID375\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID379\n const INIT_SUBSCRIPT = {\n match: [\n /\\b(?:subscript|init[?!]?)/,\n /\\s*(?=[<(])/\n ],\n className: {\n 1: \"keyword\"\n },\n contains: [\n GENERIC_PARAMETERS,\n FUNCTION_PARAMETERS,\n WHITESPACE\n ],\n illegal: /\\[|%/\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380\n const OPERATOR_DECLARATION = {\n match: [\n /operator/,\n /\\s+/,\n operator\n ],\n className: {\n 1: \"keyword\",\n 3: \"title\"\n }\n };\n // https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550\n const PRECEDENCEGROUP = {\n begin: [\n /precedencegroup/,\n /\\s+/,\n typeIdentifier\n ],\n className: {\n 1: \"keyword\",\n 3: \"title\"\n },\n contains: [\n TYPE\n ],\n keywords: [\n ...precedencegroupKeywords,\n ...literals\n ],\n end: /}/\n };\n // Add supported submodes to string interpolation.\n for (const variant of STRING.variants){\n const interpolation = variant.contains.find((mode)=>mode.label === \"interpol\");\n // TODO: Interpolation can contain any expression, so there's room for improvement here.\n interpolation.keywords = KEYWORDS;\n const submodes = [\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS\n ];\n interpolation.contains = [\n ...submodes,\n {\n begin: /\\(/,\n end: /\\)/,\n contains: [\n \"self\",\n ...submodes\n ]\n }\n ];\n }\n return {\n name: \"Swift\",\n keywords: KEYWORDS,\n contains: [\n ...COMMENTS,\n FUNCTION,\n INIT_SUBSCRIPT,\n {\n beginKeywords: \"struct protocol class extension enum actor\",\n end: \"\\\\{\",\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n className: \"title.class\",\n begin: /[A-Za-z$_][\\u00C0-\\u02B80-9A-Za-z$_]*/\n }),\n ...KEYWORD_MODES\n ]\n },\n OPERATOR_DECLARATION,\n PRECEDENCEGROUP,\n {\n beginKeywords: \"import\",\n end: /$/,\n contains: [\n ...COMMENTS\n ],\n relevance: 0\n },\n ...KEYWORD_MODES,\n ...BUILT_INS,\n ...OPERATORS,\n NUMBER,\n STRING,\n ...IDENTIFIERS,\n ...ATTRIBUTES,\n TYPE,\n TUPLE\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy9zd2lmdC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7OztHQUdHLEdBRUg7OztDQUdDLEdBQ0QsU0FBU0EsT0FBT0MsRUFBRTtJQUNoQixJQUFJLENBQUNBLElBQUksT0FBTztJQUNoQixJQUFJLE9BQU9BLE9BQU8sVUFBVSxPQUFPQTtJQUVuQyxPQUFPQSxHQUFHRCxNQUFNO0FBQ2xCO0FBRUE7OztDQUdDLEdBQ0QsU0FBU0UsVUFBVUQsRUFBRTtJQUNuQixPQUFPRSxPQUFPLE9BQU9GLElBQUk7QUFDM0I7QUFFQTs7O0NBR0MsR0FDRCxTQUFTRSxPQUFPLEdBQUdDLElBQUk7SUFDckIsTUFBTUMsU0FBU0QsS0FBS0UsR0FBRyxDQUFDLENBQUNDLElBQU1QLE9BQU9PLElBQUlDLElBQUksQ0FBQztJQUMvQyxPQUFPSDtBQUNUO0FBRUE7OztDQUdDLEdBQ0QsU0FBU0kscUJBQXFCTCxJQUFJO0lBQ2hDLE1BQU1NLE9BQU9OLElBQUksQ0FBQ0EsS0FBS08sTUFBTSxHQUFHLEVBQUU7SUFFbEMsSUFBSSxPQUFPRCxTQUFTLFlBQVlBLEtBQUtFLFdBQVcsS0FBS0MsUUFBUTtRQUMzRFQsS0FBS1UsTUFBTSxDQUFDVixLQUFLTyxNQUFNLEdBQUcsR0FBRztRQUM3QixPQUFPRDtJQUNULE9BQU87UUFDTCxPQUFPLENBQUM7SUFDVjtBQUNGO0FBRUEsd0RBQXdELEdBRXhEOzs7Ozs7Q0FNQyxHQUNELFNBQVNLLE9BQU8sR0FBR1gsSUFBSTtJQUNyQiw0Q0FBNEMsR0FDNUMsTUFBTU0sT0FBT0QscUJBQXFCTDtJQUNsQyxNQUFNQyxTQUFTLE1BQ1ZLLENBQUFBLEtBQUtNLE9BQU8sR0FBRyxLQUFLLElBQUcsSUFDeEJaLEtBQUtFLEdBQUcsQ0FBQyxDQUFDQyxJQUFNUCxPQUFPTyxJQUFJQyxJQUFJLENBQUMsT0FBTztJQUMzQyxPQUFPSDtBQUNUO0FBRUEsTUFBTVksaUJBQWlCQyxDQUFB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QUFXeEIsT0FBT3ZCLFFBQVEsQ0FBRTtRQUNyQyxNQUFNZ0QsZ0JBQWdCRCxRQUFRMUQsUUFBUSxDQUFDNEQsSUFBSSxDQUFDQyxDQUFBQSxPQUFRQSxLQUFLaEMsS0FBSyxLQUFLO1FBQ25FLHdGQUF3RjtRQUN4RjhCLGNBQWNoRixRQUFRLEdBQUdpQztRQUN6QixNQUFNa0QsV0FBVztlQUNaL0M7ZUFDQUc7ZUFDQUc7WUFDSEc7WUFDQVU7ZUFDR0k7U0FDSjtRQUNEcUIsY0FBYzNELFFBQVEsR0FBRztlQUNwQjhEO1lBQ0g7Z0JBQ0VoQyxPQUFPO2dCQUNQQyxLQUFLO2dCQUNML0IsVUFBVTtvQkFDUjt1QkFDRzhEO2lCQUNKO1lBQ0g7U0FDRDtJQUNIO0lBRUEsT0FBTztRQUNMQyxNQUFNO1FBQ05wRixVQUFVaUM7UUFDVlosVUFBVTtlQUNMQztZQUNIcUQ7WUFDQUM7WUFDQTtnQkFDRVMsZUFBZTtnQkFDZmpDLEtBQUs7Z0JBQ0xrQyxZQUFZO2dCQUNadEYsVUFBVWlDO2dCQUNWWixVQUFVO29CQUNSTixLQUFLd0UsT0FBTyxDQUFDeEUsS0FBS3lFLFVBQVUsRUFBRTt3QkFDNUIvRCxXQUFXO3dCQUNYMEIsT0FBTztvQkFDVDt1QkFDR2Y7aUJBQ0o7WUFDSDtZQUNBeUM7WUFDQUM7WUFDQTtnQkFDRU8sZUFBZTtnQkFDZmpDLEtBQUs7Z0JBQ0wvQixVQUFVO3VCQUFLQztpQkFBVTtnQkFDekJKLFdBQVc7WUFDYjtlQUNHa0I7ZUFDQUc7ZUFDQUc7WUFDSEc7WUFDQVU7ZUFDR0k7ZUFDQUs7WUFDSEM7WUFDQUk7U0FDRDtJQUNIO0FBQ0Y7QUFFNEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL3N3aWZ0LmpzPzkyMTIiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtSZWdFeHB9XG4gKiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7UmVnRXhwIHwgc3RyaW5nIH0gcmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHNvdXJjZShyZSkge1xuICBpZiAoIXJlKSByZXR1cm4gbnVsbDtcbiAgaWYgKHR5cGVvZiByZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHJlO1xuXG4gIHJldHVybiByZS5zb3VyY2U7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWdFeHAgfCBzdHJpbmcgfSByZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gbG9va2FoZWFkKHJlKSB7XG4gIHJldHVybiBjb25jYXQoJyg/PScsIHJlLCAnKScpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Li4uKFJlZ0V4cCB8IHN0cmluZykgfSBhcmdzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjb25jYXQoLi4uYXJncykge1xuICBjb25zdCBqb2luZWQgPSBhcmdzLm1hcCgoeCkgPT4gc291cmNlKHgpKS5qb2luKFwiXCIpO1xuICByZXR1cm4gam9pbmVkO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7IEFycmF5PHN0cmluZyB8IFJlZ0V4cCB8IE9iamVjdD4gfSBhcmdzXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBzdHJpcE9wdGlvbnNGcm9tQXJncyhhcmdzKSB7XG4gIGNvbnN0IG9wdHMgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnb2JqZWN0JyAmJiBvcHRzLmNvbnN0cnVjdG9yID09PSBPYmplY3QpIHtcbiAgICBhcmdzLnNwbGljZShhcmdzLmxlbmd0aCAtIDEsIDEpO1xuICAgIHJldHVybiBvcHRzO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG4vKiogQHR5cGVkZWYgeyB7Y2FwdHVyZT86IGJvb2xlYW59IH0gUmVnZXhFaXRoZXJPcHRpb25zICovXG5cbi8qKlxuICogQW55IG9mIHRoZSBwYXNzZWQgZXhwcmVzc3Npb25zIG1heSBtYXRjaFxuICpcbiAqIENyZWF0ZXMgYSBodWdlIHRoaXMgfCB0aGlzIHwgdGhhdCB8IHRoYXQgbWF0Y2hcbiAqIEBwYXJhbSB7KFJlZ0V4cCB8IHN0cmluZylbXSB8IFsuLi4oUmVnRXhwIHwgc3RyaW5nKVtdLCBSZWdleEVpdGhlck9wdGlvbnNdfSBhcmdzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlaXRoZXIoLi4uYXJncykge1xuICAvKiogQHR5cGUgeyBvYmplY3QgJiB7Y2FwdHVyZT86IGJvb2xlYW59IH0gICovXG4gIGNvbnN0IG9wdHMgPSBzdHJpcE9wdGlvbnNGcm9tQXJncyhhcmdzKTtcbiAgY29uc3Qgam9pbmVkID0gJygnXG4gICAgKyAob3B0cy5jYXB0dXJlID8gXCJcIiA6IFwiPzpcIilcbiAgICArIGFyZ3MubWFwKCh4KSA9PiBzb3VyY2UoeCkpLmpvaW4oXCJ8XCIpICsgXCIpXCI7XG4gIHJldHVybiBqb2luZWQ7XG59XG5cbmNvbnN0IGtleXdvcmRXcmFwcGVyID0ga2V5d29yZCA9PiBjb25jYXQoXG4gIC9cXGIvLFxuICBrZXl3b3JkLFxuICAvXFx3JC8udGVzdChrZXl3b3JkKSA/IC9cXGIvIDogL1xcQi9cbik7XG5cbi8vIEtleXdvcmRzIHRoYXQgcmVxdWlyZSBhIGxlYWRpbmcgZG90LlxuY29uc3QgZG90S2V5d29yZHMgPSBbXG4gICdQcm90b2NvbCcsIC8vIGNvbnRleHR1YWxcbiAgJ1R5cGUnIC8vIGNvbnRleHR1YWxcbl0ubWFwKGtleXdvcmRXcmFwcGVyKTtcblxuLy8gS2V5d29yZHMgdGhhdCBtYXkgaGF2ZSBhIGxlYWRpbmcgZG90LlxuY29uc3Qgb3B0aW9uYWxEb3RLZXl3b3JkcyA9IFtcbiAgJ2luaXQnLFxuICAnc2VsZidcbl0ubWFwKGtleXdvcmRXcmFwcGVyKTtcblxuLy8gc2hvdWxkIHJlZ2lzdGVyIGFzIGtleXdvcmQsIG5vdCB0eXBlXG5jb25zdCBrZXl3b3JkVHlwZXMgPSBbXG4gICdBbnknLFxuICAnU2VsZidcbl07XG5cbi8vIFJlZ3VsYXIga2V5d29yZHMgYW5kIGxpdGVyYWxzLlxuY29uc3Qga2V5d29yZHMgPSBbXG4gIC8vIHN0cmluZ3MgYmVsb3cgd2lsbCBiZSBmZWQgaW50byB0aGUgcmVndWxhciBga2V5d29yZHNgIGVuZ2luZSB3aGlsZSByZWdleFxuICAvLyB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIG1vZGVzIGJlaW5nIGNyZWF0ZWQgdG8gc2NhbiBmb3IgdGhvc2Uga2V5d29yZHMgdG9cbiAgLy8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgcnVsZXNcbiAgJ2FjdG9yJyxcbiAgJ2FueScsIC8vIGNvbnRleHR1YWxcbiAgJ2Fzc29jaWF0ZWR0eXBlJyxcbiAgJ2FzeW5jJyxcbiAgJ2F3YWl0JyxcbiAgL2FzXFw/LywgLy8gb3BlcmF0b3JcbiAgL2FzIS8sIC8vIG9wZXJhdG9yXG4gICdhcycsIC8vIG9wZXJhdG9yXG4gICdicmVhaycsXG4gICdjYXNlJyxcbiAgJ2NhdGNoJyxcbiAgJ2NsYXNzJyxcbiAgJ2NvbnRpbnVlJyxcbiAgJ2NvbnZlbmllbmNlJywgLy8gY29udGV4dHVhbFxuICAnZGVmYXVsdCcsXG4gICdkZWZlcicsXG4gICdkZWluaXQnLFxuICAnZGlkU2V0JywgLy8gY29udGV4dHVhbFxuICAnZGlzdHJpYnV0ZWQnLFxuICAnZG8nLFxuICAnZHluYW1pYycsIC8vIGNvbnRleHR1YWxcbiAgJ2Vsc2UnLFxuICAnZW51bScsXG4gICdleHRlbnNpb24nLFxuICAnZmFsbHRocm91Z2gnLFxuICAvZmlsZXByaXZhdGVcXChzZXRcXCkvLFxuICAnZmlsZXByaXZhdGUnLFxuICAnZmluYWwnLCAvLyBjb250ZXh0dWFsXG4gICdmb3InLFxuICAnZnVuYycsXG4gICdnZXQnLCAvLyBjb250ZXh0dWFsXG4gICdndWFyZCcsXG4gICdpZicsXG4gICdpbXBvcnQnLFxuICAnaW5kaXJlY3QnLCAvLyBjb250ZXh0dWFsXG4gICdpbmZpeCcsIC8vIGNvbnRleHR1YWxcbiAgL2luaXRcXD8vLFxuICAvaW5pdCEvLFxuICAnaW5vdXQnLFxuICAvaW50ZXJuYWxcXChzZXRcXCkvLFxuICAnaW50ZXJuYWwnLFxuICAnaW4nLFxuICAnaXMnLCAvLyBvcGVyYXRvclxuICAnaXNvbGF0ZWQnLCAvLyBjb250ZXh0dWFsXG4gICdub25pc29sYXRlZCcsIC8vIGNvbnRleHR1YWxcbiAgJ2xhenknLCAvLyBjb250ZXh0dWFsXG4gICdsZXQnLFxuICAnbXV0YXRpbmcnLCAvLyBjb250ZXh0dWFsXG4gICdub25tdXRhdGluZycsIC8vIGNvbnRleHR1YWxcbiAgL29wZW5cXChzZXRcXCkvLCAvLyBjb250ZXh0dWFsXG4gICdvcGVuJywgLy8gY29udGV4dHVhbFxuICAnb3BlcmF0b3InLFxuICAnb3B0aW9uYWwnLCAvLyBjb250ZXh0dWFsXG4gICdvdmVycmlkZScsIC8vIGNvbnRleHR1YWxcbiAgJ3Bvc3RmaXgnLCAvLyBjb250ZXh0dWFsXG4gICdwcmVjZWRlbmNlZ3JvdXAnLFxuICAncHJlZml4JywgLy8gY29udGV4dHVhbFxuICAvcHJpdmF0ZVxcKHNldFxcKS8sXG4gICdwcml2YXRlJyxcbiAgJ3Byb3RvY29sJyxcbiAgL3B1YmxpY1xcKHNldFxcKS8sXG4gICdwdWJsaWMnLFxuICAncmVwZWF0JyxcbiAgJ3JlcXVpcmVkJywgLy8gY29udGV4dHVhbFxuICAncmV0aHJvd3MnLFxuICAncmV0dXJuJyxcbiAgJ3NldCcsIC8vIGNvbnRleHR1YWxcbiAgJ3NvbWUnLCAvLyBjb250ZXh0dWFsXG4gICdzdGF0aWMnLFxuICAnc3RydWN0JyxcbiAgJ3N1YnNjcmlwdCcsXG4gICdzdXBlcicsXG4gICdzd2l0Y2gnLFxuICAndGhyb3dzJyxcbiAgJ3Rocm93JyxcbiAgL3RyeVxcPy8sIC8vIG9wZXJhdG9yXG4gIC90cnkhLywgLy8gb3BlcmF0b3JcbiAgJ3RyeScsIC8vIG9wZXJhdG9yXG4gICd0eXBlYWxpYXMnLFxuICAvdW5vd25lZFxcKHNhZmVcXCkvLCAvLyBjb250ZXh0dWFsXG4gIC91bm93bmVkXFwodW5zYWZlXFwpLywgLy8gY29udGV4dHVhbFxuICAndW5vd25lZCcsIC8vIGNvbnRleHR1YWxcbiAgJ3ZhcicsXG4gICd3ZWFrJywgLy8gY29udGV4dHVhbFxuICAnd2hlcmUnLFxuICAnd2hpbGUnLFxuICAnd2lsbFNldCcgLy8gY29udGV4dHVhbFxuXTtcblxuLy8gTk9URTogQ29udGV4dHVhbCBrZXl3b3JkcyBhcmUgcmVzZXJ2ZWQgb25seSBpbiBzcGVjaWZpYyBjb250ZXh0cy5cbi8vIElkZWFsbHksIHRoZXNlIHNob3VsZCBiZSBtYXRjaGVkIHVzaW5nIG1vZGVzIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcy5cblxuLy8gTGl0ZXJhbHMuXG5jb25zdCBsaXRlcmFscyA9IFtcbiAgJ2ZhbHNlJyxcbiAgJ25pbCcsXG4gICd0cnVlJ1xuXTtcblxuLy8gS2V5d29yZHMgdXNlZCBpbiBwcmVjZWRlbmNlIGdyb3Vwcy5cbmNvbnN0IHByZWNlZGVuY2Vncm91cEtleXdvcmRzID0gW1xuICAnYXNzaWdubWVudCcsXG4gICdhc3NvY2lhdGl2aXR5JyxcbiAgJ2hpZ2hlclRoYW4nLFxuICAnbGVmdCcsXG4gICdsb3dlclRoYW4nLFxuICAnbm9uZScsXG4gICdyaWdodCdcbl07XG5cbi8vIEtleXdvcmRzIHRoYXQgc3RhcnQgd2l0aCBhIG51bWJlciBzaWduICgjKS5cbi8vICModW4pYXZhaWxhYmxlIGlzIGhhbmRsZWQgc2VwYXJhdGVseS5cbmNvbnN0IG51bWJlclNpZ25LZXl3b3JkcyA9IFtcbiAgJyNjb2xvckxpdGVyYWwnLFxuICAnI2NvbHVtbicsXG4gICcjZHNvaGFuZGxlJyxcbiAgJyNlbHNlJyxcbiAgJyNlbHNlaWYnLFxuICAnI2VuZGlmJyxcbiAgJyNlcnJvcicsXG4gICcjZmlsZScsXG4gICcjZmlsZUlEJyxcbiAgJyNmaWxlTGl0ZXJhbCcsXG4gICcjZmlsZVBhdGgnLFxuICAnI2Z1bmN0aW9uJyxcbiAgJyNpZicsXG4gICcjaW1hZ2VMaXRlcmFsJyxcbiAgJyNrZXlQYXRoJyxcbiAgJyNsaW5lJyxcbiAgJyNzZWxlY3RvcicsXG4gICcjc291cmNlTG9jYXRpb24nLFxuICAnI3dhcm5fdW5xdWFsaWZpZWRfYWNjZXNzJyxcbiAgJyN3YXJuaW5nJ1xuXTtcblxuLy8gR2xvYmFsIGZ1bmN0aW9ucyBpbiB0aGUgU3RhbmRhcmQgTGlicmFyeS5cbmNvbnN0IGJ1aWx0SW5zID0gW1xuICAnYWJzJyxcbiAgJ2FsbCcsXG4gICdhbnknLFxuICAnYXNzZXJ0JyxcbiAgJ2Fzc2VydGlvbkZhaWx1cmUnLFxuICAnZGVidWdQcmludCcsXG4gICdkdW1wJyxcbiAgJ2ZhdGFsRXJyb3InLFxuICAnZ2V0VmFMaXN0JyxcbiAgJ2lzS25vd25VbmlxdWVseVJlZmVyZW5jZWQnLFxuICAnbWF4JyxcbiAgJ21pbicsXG4gICdudW1lcmljQ2FzdCcsXG4gICdwb2ludHdpc2VNYXgnLFxuICAncG9pbnR3aXNlTWluJyxcbiAgJ3ByZWNvbmRpdGlvbicsXG4gICdwcmVjb25kaXRpb25GYWlsdXJlJyxcbiAgJ3ByaW50JyxcbiAgJ3JlYWRMaW5lJyxcbiAgJ3JlcGVhdEVsZW1lbnQnLFxuICAnc2VxdWVuY2UnLFxuICAnc3RyaWRlJyxcbiAgJ3N3YXAnLFxuICAnc3dpZnRfdW5ib3hGcm9tU3dpZnRWYWx1ZVdpdGhUeXBlJyxcbiAgJ3RyYW5zY29kZScsXG4gICd0eXBlJyxcbiAgJ3Vuc2FmZUJpdENhc3QnLFxuICAndW5zYWZlRG93bmNhc3QnLFxuICAnd2l0aEV4dGVuZGVkTGlmZXRpbWUnLFxuICAnd2l0aFVuc2FmZU11dGFibGVQb2ludGVyJyxcbiAgJ3dpdGhVbnNhZmVQb2ludGVyJyxcbiAgJ3dpdGhWYUxpc3QnLFxuICAnd2l0aG91dEFjdHVhbGx5RXNjYXBpbmcnLFxuICAnemlwJ1xuXTtcblxuLy8gVmFsaWQgZmlyc3QgY2hhcmFjdGVycyBmb3Igb3BlcmF0b3JzLlxuY29uc3Qgb3BlcmF0b3JIZWFkID0gZWl0aGVyKFxuICAvWy89XFwtKyEqJTw+Jnxefj9dLyxcbiAgL1tcXHUwMEExLVxcdTAwQTddLyxcbiAgL1tcXHUwMEE5XFx1MDBBQl0vLFxuICAvW1xcdTAwQUNcXHUwMEFFXS8sXG4gIC9bXFx1MDBCMFxcdTAwQjFdLyxcbiAgL1tcXHUwMEI2XFx1MDBCQlxcdTAwQkZcXHUwMEQ3XFx1MDBGN10vLFxuICAvW1xcdTIwMTYtXFx1MjAxN10vLFxuICAvW1xcdTIwMjAtXFx1MjAyN10vLFxuICAvW1xcdTIwMzAtXFx1MjAzRV0vLFxuICAvW1xcdTIwNDEtXFx1MjA1M10vLFxuICAvW1xcdTIwNTUtXFx1MjA1RV0vLFxuICAvW1xcdTIxOTAtXFx1MjNGRl0vLFxuICAvW1xcdTI1MDAtXFx1Mjc3NV0vLFxuICAvW1xcdTI3OTQtXFx1MkJGRl0vLFxuICAvW1xcdTJFMDAtXFx1MkU3Rl0vLFxuICAvW1xcdTMwMDEtXFx1MzAwM10vLFxuICAvW1xcdTMwMDgtXFx1MzAyMF0vLFxuICAvW1xcdTMwMzBdL1xuKTtcblxuLy8gVmFsaWQgY2hhcmFjdGVycyBmb3Igb3BlcmF0b3JzLlxuY29uc3Qgb3BlcmF0b3JDaGFyYWN0ZXIgPSBlaXRoZXIoXG4gIG9wZXJhdG9ySGVhZCxcbiAgL1tcXHUwMzAwLVxcdTAzNkZdLyxcbiAgL1tcXHUxREMwLVxcdTFERkZdLyxcbiAgL1tcXHUyMEQwLVxcdTIwRkZdLyxcbiAgL1tcXHVGRTAwLVxcdUZFMEZdLyxcbiAgL1tcXHVGRTIwLVxcdUZFMkZdL1xuICAvLyBUT0RPOiBUaGUgZm9sbG93aW5nIGNoYXJhY3RlcnMgYXJlIGFsc28gYWxsb3dlZCwgYnV0IHRoZSByZWdleCBpc24ndCBzdXBwb3J0ZWQgeWV0LlxuICAvLyAvW1xcdXtFMDEwMH0tXFx1e0UwMUVGfV0vdVxuKTtcblxuLy8gVmFsaWQgb3BlcmF0b3IuXG5jb25zdCBvcGVyYXRvciA9IGNvbmNhdChvcGVyYXRvckhlYWQsIG9wZXJhdG9yQ2hhcmFjdGVyLCAnKicpO1xuXG4vLyBWYWxpZCBmaXJzdCBjaGFyYWN0ZXJzIGZvciBpZGVudGlmaWVycy5cbmNvbnN0IGlkZW50aWZpZXJIZWFkID0gZWl0aGVyKFxuICAvW2EtekEtWl9dLyxcbiAgL1tcXHUwMEE4XFx1MDBBQVxcdTAwQURcXHUwMEFGXFx1MDBCMi1cXHUwMEI1XFx1MDBCNy1cXHUwMEJBXS8sXG4gIC9bXFx1MDBCQy1cXHUwMEJFXFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMEZGXS8sXG4gIC9bXFx1MDEwMC1cXHUwMkZGXFx1MDM3MC1cXHUxNjdGXFx1MTY4MS1cXHUxODBEXFx1MTgwRi1cXHUxREJGXS8sXG4gIC9bXFx1MUUwMC1cXHUxRkZGXS8sXG4gIC9bXFx1MjAwQi1cXHUyMDBEXFx1MjAyQS1cXHUyMDJFXFx1MjAzRi1cXHUyMDQwXFx1MjA1NFxcdTIwNjAtXFx1MjA2Rl0vLFxuICAvW1xcdTIwNzAtXFx1MjBDRlxcdTIxMDAtXFx1MjE4RlxcdTI0NjAtXFx1MjRGRlxcdTI3NzYtXFx1Mjc5M10vLFxuICAvW1xcdTJDMDAtXFx1MkRGRlxcdTJFODAtXFx1MkZGRl0vLFxuICAvW1xcdTMwMDQtXFx1MzAwN1xcdTMwMjEtXFx1MzAyRlxcdTMwMzEtXFx1MzAzRlxcdTMwNDAtXFx1RDdGRl0vLFxuICAvW1xcdUY5MDAtXFx1RkQzRFxcdUZENDAtXFx1RkRDRlxcdUZERjAtXFx1RkUxRlxcdUZFMzAtXFx1RkU0NF0vLFxuICAvW1xcdUZFNDctXFx1RkVGRVxcdUZGMDAtXFx1RkZGRF0vIC8vIFNob3VsZCBiZSAvW1xcdUZFNDctXFx1RkZGRF0vLCBidXQgd2UgaGF2ZSB0byBleGNsdWRlIEZFRkYuXG4gIC8vIFRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycyBhcmUgYWxzbyBhbGxvd2VkLCBidXQgdGhlIHJlZ2V4ZXMgYXJlbid0IHN1cHBvcnRlZCB5ZXQuXG4gIC8vIC9bXFx1ezEwMDAwfS1cXHV7MUZGRkR9XFx1ezIwMDAwLVxcdXsyRkZGRH1cXHV7MzAwMDB9LVxcdXszRkZGRH1cXHV7NDAwMDB9LVxcdXs0RkZGRH1dL3UsXG4gIC8vIC9bXFx1ezUwMDAwfS1cXHV7NUZGRkR9XFx1ezYwMDAwLVxcdXs2RkZGRH1cXHV7NzAwMDB9LVxcdXs3RkZGRH1cXHV7ODAwMDB9LVxcdXs4RkZGRH1dL3UsXG4gIC8vIC9bXFx1ezkwMDAwfS1cXHV7OUZGRkR9XFx1e0EwMDAwLVxcdXtBRkZGRH1cXHV7QjAwMDB9LVxcdXtCRkZGRH1cXHV7QzAwMDB9LVxcdXtDRkZGRH1dL3UsXG4gIC8vIC9bXFx1e0QwMDAwfS1cXHV7REZGRkR9XFx1e0UwMDAwLVxcdXtFRkZGRH1dL3Vcbik7XG5cbi8vIFZhbGlkIGNoYXJhY3RlcnMgZm9yIGlkZW50aWZpZXJzLlxuY29uc3QgaWRlbnRpZmllckNoYXJhY3RlciA9IGVpdGhlcihcbiAgaWRlbnRpZmllckhlYWQsXG4gIC9cXGQvLFxuICAvW1xcdTAzMDAtXFx1MDM2RlxcdTFEQzAtXFx1MURGRlxcdTIwRDAtXFx1MjBGRlxcdUZFMjAtXFx1RkUyRl0vXG4pO1xuXG4vLyBWYWxpZCBpZGVudGlmaWVyLlxuY29uc3QgaWRlbnRpZmllciA9IGNvbmNhdChpZGVudGlmaWVySGVhZCwgaWRlbnRpZmllckNoYXJhY3RlciwgJyonKTtcblxuLy8gVmFsaWQgdHlwZSBpZGVudGlmaWVyLlxuY29uc3QgdHlwZUlkZW50aWZpZXIgPSBjb25jYXQoL1tBLVpdLywgaWRlbnRpZmllckNoYXJhY3RlciwgJyonKTtcblxuLy8gQnVpbHQtaW4gYXR0cmlidXRlcywgd2hpY2ggYXJlIGhpZ2hsaWdodGVkIGFzIGtleXdvcmRzLlxuLy8gQGF2YWlsYWJsZSBpcyBoYW5kbGVkIHNlcGFyYXRlbHkuXG5jb25zdCBrZXl3b3JkQXR0cmlidXRlcyA9IFtcbiAgJ2F1dG9jbG9zdXJlJyxcbiAgY29uY2F0KC9jb252ZW50aW9uXFwoLywgZWl0aGVyKCdzd2lmdCcsICdibG9jaycsICdjJyksIC9cXCkvKSxcbiAgJ2Rpc2NhcmRhYmxlUmVzdWx0JyxcbiAgJ2R5bmFtaWNDYWxsYWJsZScsXG4gICdkeW5hbWljTWVtYmVyTG9va3VwJyxcbiAgJ2VzY2FwaW5nJyxcbiAgJ2Zyb3plbicsXG4gICdHS0luc3BlY3RhYmxlJyxcbiAgJ0lCQWN0aW9uJyxcbiAgJ0lCRGVzaWduYWJsZScsXG4gICdJQkluc3BlY3RhYmxlJyxcbiAgJ0lCT3V0bGV0JyxcbiAgJ0lCU2VndWVBY3Rpb24nLFxuICAnaW5saW5hYmxlJyxcbiAgJ21haW4nLFxuICAnbm9ub2JqYycsXG4gICdOU0FwcGxpY2F0aW9uTWFpbicsXG4gICdOU0NvcHlpbmcnLFxuICAnTlNNYW5hZ2VkJyxcbiAgY29uY2F0KC9vYmpjXFwoLywgaWRlbnRpZmllciwgL1xcKS8pLFxuICAnb2JqYycsXG4gICdvYmpjTWVtYmVycycsXG4gICdwcm9wZXJ0eVdyYXBwZXInLFxuICAncmVxdWlyZXNfc3RvcmVkX3Byb3BlcnR5X2luaXRzJyxcbiAgJ3Jlc3VsdEJ1aWxkZXInLFxuICAndGVzdGFibGUnLFxuICAnVUlBcHBsaWNhdGlvbk1haW4nLFxuICAndW5rbm93bicsXG4gICd1c2FibGVGcm9tSW5saW5lJ1xuXTtcblxuLy8gQ29udGV4dHVhbCBrZXl3b3JkcyB1c2VkIGluIEBhdmFpbGFibGUgYW5kICModW4pYXZhaWxhYmxlLlxuY29uc3QgYXZhaWxhYmlsaXR5S2V5d29yZHMgPSBbXG4gICdpT1MnLFxuICAnaU9TQXBwbGljYXRpb25FeHRlbnNpb24nLFxuICAnbWFjT1MnLFxuICAnbWFjT1NBcHBsaWNhdGlvbkV4dGVuc2lvbicsXG4gICdtYWNDYXRhbHlzdCcsXG4gICdtYWNDYXRhbHlzdEFwcGxpY2F0aW9uRXh0ZW5zaW9uJyxcbiAgJ3dhdGNoT1MnLFxuICAnd2F0Y2hPU0FwcGxpY2F0aW9uRXh0ZW5zaW9uJyxcbiAgJ3R2T1MnLFxuICAndHZPU0FwcGxpY2F0aW9uRXh0ZW5zaW9uJyxcbiAgJ3N3aWZ0J1xuXTtcblxuLypcbkxhbmd1YWdlOiBTd2lmdFxuRGVzY3JpcHRpb246IFN3aWZ0IGlzIGEgZ2VuZXJhbC1wdXJwb3NlIHByb2dyYW1taW5nIGxhbmd1YWdlIGJ1aWx0IHVzaW5nIGEgbW9kZXJuIGFwcHJvYWNoIHRvIHNhZmV0eSwgcGVyZm9ybWFuY2UsIGFuZCBzb2Z0d2FyZSBkZXNpZ24gcGF0dGVybnMuXG5BdXRob3I6IFN0ZXZlbiBWYW4gSW1wZSA8c3RldmVuLnZhbmltcGVAaWNsb3VkLmNvbT5cbkNvbnRyaWJ1dG9yczogQ2hyaXMgRWlkaG9mIDxjaHJpc0BlaWRob2Yubmw+LCBOYXRlIENvb2sgPG5hdGVjb29rQGdtYWlsLmNvbT4sIEFsZXhhbmRlciBMaWNodGVyIDxtYW5uaUxAZ214Lm5ldD4sIFJpY2hhcmQgR2lic29uIDxnaWJzb24wNDJAZ2l0aHViPlxuV2Vic2l0ZTogaHR0cHM6Ly9zd2lmdC5vcmdcbkNhdGVnb3J5OiBjb21tb24sIHN5c3RlbVxuKi9cblxuLyoqIEB0eXBlIExhbmd1YWdlRm4gKi9cbmZ1bmN0aW9uIHN3aWZ0KGhsanMpIHtcbiAgY29uc3QgV0hJVEVTUEFDRSA9IHtcbiAgICBtYXRjaDogL1xccysvLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICAvLyBodHRwczovL2RvY3Muc3dpZnQub3JnL3N3aWZ0LWJvb2svUmVmZXJlbmNlTWFudWFsL0xleGljYWxTdHJ1Y3R1cmUuaHRtbCNJRDQxMVxuICBjb25zdCBCTE9DS19DT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgICcvXFxcXConLFxuICAgICdcXFxcKi8nLFxuICAgIHsgY29udGFpbnM6IFsgJ3NlbGYnIF0gfVxuICApO1xuICBjb25zdCBDT01NRU5UUyA9IFtcbiAgICBobGpzLkNfTElORV9DT01NRU5UX01PREUsXG4gICAgQkxPQ0tfQ09NTUVOVFxuICBdO1xuXG4gIC8vIGh0dHBzOi8vZG9jcy5zd2lmdC5vcmcvc3dpZnQtYm9vay9SZWZlcmVuY2VNYW51YWwvTGV4aWNhbFN0cnVjdHVyZS5odG1sI0lENDEzXG4gIC8vIGh0dHBzOi8vZG9jcy5zd2lmdC5vcmcvc3dpZnQtYm9vay9SZWZlcmVuY2VNYW51YWwvenpTdW1tYXJ5T2ZUaGVHcmFtbWFyLmh0bWxcbiAgY29uc3QgRE9UX0tFWVdPUkQgPSB7XG4gICAgbWF0Y2g6IFtcbiAgICAgIC9cXC4vLFxuICAgICAgZWl0aGVyKC4uLmRvdEtleXdvcmRzLCAuLi5vcHRpb25hbERvdEtleXdvcmRzKVxuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7IDI6IFwia2V5d29yZFwiIH1cbiAgfTtcbiAgY29uc3QgS0VZV09SRF9HVUFSRCA9IHtcbiAgICAvLyBDb25zdW1lIC5rZXl3b3JkIHRvIHByZXZlbnQgaGlnaGxpZ2h0aW5nIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgYXMga2V5d29yZHMuXG4gICAgbWF0Y2g6IGNvbmNhdCgvXFwuLywgZWl0aGVyKC4uLmtleXdvcmRzKSksXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGNvbnN0IFBMQUlOX0tFWVdPUkRTID0ga2V5d29yZHNcbiAgICAuZmlsdGVyKGt3ID0+IHR5cGVvZiBrdyA9PT0gJ3N0cmluZycpXG4gICAgLmNvbmNhdChbIFwiX3wwXCIgXSk7IC8vIHNlZW1zIGNvbW1vbiwgc28gMCByZWxldmFuY2VcbiAgY29uc3QgUkVHRVhfS0VZV09SRFMgPSBrZXl3b3Jkc1xuICAgIC5maWx0ZXIoa3cgPT4gdHlwZW9mIGt3ICE9PSAnc3RyaW5nJykgLy8gZmluZCByZWdleFxuICAgIC5jb25jYXQoa2V5d29yZFR5cGVzKVxuICAgIC5tYXAoa2V5d29yZFdyYXBwZXIpO1xuICBjb25zdCBLRVlXT1JEID0geyB2YXJpYW50czogW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgbWF0Y2g6IGVpdGhlciguLi5SRUdFWF9LRVlXT1JEUywgLi4ub3B0aW9uYWxEb3RLZXl3b3JkcylcbiAgICB9XG4gIF0gfTtcbiAgLy8gZmluZCBhbGwgdGhlIHJlZ3VsYXIga2V5d29yZHNcbiAgY29uc3QgS0VZV09SRFMgPSB7XG4gICAgJHBhdHRlcm46IGVpdGhlcihcbiAgICAgIC9cXGJcXHcrLywgLy8gcmVndWxhciBrZXl3b3Jkc1xuICAgICAgLyNcXHcrLyAvLyBudW1iZXIga2V5d29yZHNcbiAgICApLFxuICAgIGtleXdvcmQ6IFBMQUlOX0tFWVdPUkRTXG4gICAgICAuY29uY2F0KG51bWJlclNpZ25LZXl3b3JkcyksXG4gICAgbGl0ZXJhbDogbGl0ZXJhbHNcbiAgfTtcbiAgY29uc3QgS0VZV09SRF9NT0RFUyA9IFtcbiAgICBET1RfS0VZV09SRCxcbiAgICBLRVlXT1JEX0dVQVJELFxuICAgIEtFWVdPUkRcbiAgXTtcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvc3dpZnQvdHJlZS9tYWluL3N0ZGxpYi9wdWJsaWMvY29yZVxuICBjb25zdCBCVUlMVF9JTl9HVUFSRCA9IHtcbiAgICAvLyBDb25zdW1lIC5idWlsdF9pbiB0byBwcmV2ZW50IGhpZ2hsaWdodGluZyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzLlxuICAgIG1hdGNoOiBjb25jYXQoL1xcLi8sIGVpdGhlciguLi5idWlsdElucykpLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBjb25zdCBCVUlMVF9JTiA9IHtcbiAgICBjbGFzc05hbWU6ICdidWlsdF9pbicsXG4gICAgbWF0Y2g6IGNvbmNhdCgvXFxiLywgZWl0aGVyKC4uLmJ1aWx0SW5zKSwgLyg/PVxcKCkvKVxuICB9O1xuICBjb25zdCBCVUlMVF9JTlMgPSBbXG4gICAgQlVJTFRfSU5fR1VBUkQsXG4gICAgQlVJTFRfSU5cbiAgXTtcblxuICAvLyBodHRwczovL2RvY3Muc3dpZnQub3JnL3N3aWZ0LWJvb2svUmVmZXJlbmNlTWFudWFsL0xleGljYWxTdHJ1Y3R1cmUuaHRtbCNJRDQxOFxuICBjb25zdCBPUEVSQVRPUl9HVUFSRCA9IHtcbiAgICAvLyBQcmV2ZW50IC0+IGZyb20gYmVpbmcgaGlnaGxpZ2h0aW5nIGFzIGFuIG9wZXJhdG9yLlxuICAgIG1hdGNoOiAvLT4vLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBjb25zdCBPUEVSQVRPUiA9IHtcbiAgICBjbGFzc05hbWU6ICdvcGVyYXRvcicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IG1hdGNoOiBvcGVyYXRvciB9LFxuICAgICAge1xuICAgICAgICAvLyBkb3Qtb3BlcmF0b3I6IG9ubHkgb3BlcmF0b3JzIHRoYXQgc3RhcnQgd2l0aCBhIGRvdCBhcmUgYWxsb3dlZCB0byB1c2UgZG90cyBhc1xuICAgICAgICAvLyBjaGFyYWN0ZXJzICguLi4sIC4uLjwsIC4qLCBldGMpLiBTbyB0aGVyZSBydWxlIGhlcmUgaXM6IGEgZG90IGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlXG4gICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBtYXkgYWxzbyBpbmNsdWRlIGRvdHMuXG4gICAgICAgIG1hdGNoOiBgXFxcXC4oXFxcXC58JHtvcGVyYXRvckNoYXJhY3Rlcn0pK2AgfVxuICAgIF1cbiAgfTtcbiAgY29uc3QgT1BFUkFUT1JTID0gW1xuICAgIE9QRVJBVE9SX0dVQVJELFxuICAgIE9QRVJBVE9SXG4gIF07XG5cbiAgLy8gaHR0cHM6Ly9kb2NzLnN3aWZ0Lm9yZy9zd2lmdC1ib29rL1JlZmVyZW5jZU1hbnVhbC9MZXhpY2FsU3RydWN0dXJlLmh0bWwjZ3JhbW1hcl9udW1lcmljLWxpdGVyYWxcbiAgLy8gVE9ETzogVXBkYXRlIGZvciBsZWFkaW5nIGAtYCBhZnRlciBsb29rYmVoaW5kIGlzIHN1cHBvcnRlZCBldmVyeXdoZXJlXG4gIGNvbnN0IGRlY2ltYWxEaWdpdHMgPSAnKFswLTldXyopKyc7XG4gIGNvbnN0IGhleERpZ2l0cyA9ICcoWzAtOWEtZkEtRl1fKikrJztcbiAgY29uc3QgTlVNQkVSID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyBkZWNpbWFsIGZsb2F0aW5nLXBvaW50LWxpdGVyYWwgKHN1YnN1bWVzIGRlY2ltYWwtbGl0ZXJhbClcbiAgICAgIHsgbWF0Y2g6IGBcXFxcYigke2RlY2ltYWxEaWdpdHN9KShcXFxcLigke2RlY2ltYWxEaWdpdHN9KSk/YCArIGAoW2VFXVsrLV0/KCR7ZGVjaW1hbERpZ2l0c30pKT9cXFxcYmAgfSxcbiAgICAgIC8vIGhleGFkZWNpbWFsIGZsb2F0aW5nLXBvaW50LWxpdGVyYWwgKHN1YnN1bWVzIGhleGFkZWNpbWFsLWxpdGVyYWwpXG4gICAgICB7IG1hdGNoOiBgXFxcXGIweCgke2hleERpZ2l0c30pKFxcXFwuKCR7aGV4RGlnaXRzfSkpP2AgKyBgKFtwUF1bKy1dPygke2RlY2ltYWxEaWdpdHN9KSk/XFxcXGJgIH0sXG4gICAgICAvLyBvY3RhbC1saXRlcmFsXG4gICAgICB7IG1hdGNoOiAvXFxiMG8oWzAtN11fKikrXFxiLyB9LFxuICAgICAgLy8gYmluYXJ5LWxpdGVyYWxcbiAgICAgIHsgbWF0Y2g6IC9cXGIwYihbMDFdXyopK1xcYi8gfVxuICAgIF1cbiAgfTtcblxuICAvLyBodHRwczovL2RvY3Muc3dpZnQub3JnL3N3aWZ0LWJvb2svUmVmZXJlbmNlTWFudWFsL0xleGljYWxTdHJ1Y3R1cmUuaHRtbCNncmFtbWFyX3N0cmluZy1saXRlcmFsXG4gIGNvbnN0IEVTQ0FQRURfQ0hBUkFDVEVSID0gKHJhd0RlbGltaXRlciA9IFwiXCIpID0+ICh7XG4gICAgY2xhc3NOYW1lOiAnc3Vic3QnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IG1hdGNoOiBjb25jYXQoL1xcXFwvLCByYXdEZWxpbWl0ZXIsIC9bMFxcXFx0bnJcIiddLykgfSxcbiAgICAgIHsgbWF0Y2g6IGNvbmNhdCgvXFxcXC8sIHJhd0RlbGltaXRlciwgL3VcXHtbMC05YS1mQS1GXXsxLDh9XFx9LykgfVxuICAgIF1cbiAgfSk7XG4gIGNvbnN0IEVTQ0FQRURfTkVXTElORSA9IChyYXdEZWxpbWl0ZXIgPSBcIlwiKSA9PiAoe1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBtYXRjaDogY29uY2F0KC9cXFxcLywgcmF3RGVsaW1pdGVyLCAvW1xcdCBdKig/OltcXHJcXG5dfFxcclxcbikvKVxuICB9KTtcbiAgY29uc3QgSU5URVJQT0xBVElPTiA9IChyYXdEZWxpbWl0ZXIgPSBcIlwiKSA9PiAoe1xuICAgIGNsYXNzTmFtZTogJ3N1YnN0JyxcbiAgICBsYWJlbDogXCJpbnRlcnBvbFwiLFxuICAgIGJlZ2luOiBjb25jYXQoL1xcXFwvLCByYXdEZWxpbWl0ZXIsIC9cXCgvKSxcbiAgICBlbmQ6IC9cXCkvXG4gIH0pO1xuICBjb25zdCBNVUxUSUxJTkVfU1RSSU5HID0gKHJhd0RlbGltaXRlciA9IFwiXCIpID0+ICh7XG4gICAgYmVnaW46IGNvbmNhdChyYXdEZWxpbWl0ZXIsIC9cIlwiXCIvKSxcbiAgICBlbmQ6IGNvbmNhdCgvXCJcIlwiLywgcmF3RGVsaW1pdGVyKSxcbiAgICBjb250YWluczogW1xuICAgICAgRVNDQVBFRF9DSEFSQUNURVIocmF3RGVsaW1pdGVyKSxcbiAgICAgIEVTQ0FQRURfTkVXTElORShyYXdEZWxpbWl0ZXIpLFxuICAgICAgSU5URVJQT0xBVElPTihyYXdEZWxpbWl0ZXIpXG4gICAgXVxuICB9KTtcbiAgY29uc3QgU0lOR0xFX0xJTkVfU1RSSU5HID0gKHJhd0RlbGltaXRlciA9IFwiXCIpID0+ICh7XG4gICAgYmVnaW46IGNvbmNhdChyYXdEZWxpbWl0ZXIsIC9cIi8pLFxuICAgIGVuZDogY29uY2F0KC9cIi8sIHJhd0RlbGltaXRlciksXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEVTQ0FQRURfQ0hBUkFDVEVSKHJhd0RlbGltaXRlciksXG4gICAgICBJTlRFUlBPTEFUSU9OKHJhd0RlbGltaXRlcilcbiAgICBdXG4gIH0pO1xuICBjb25zdCBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgTVVMVElMSU5FX1NUUklORygpLFxuICAgICAgTVVMVElMSU5FX1NUUklORyhcIiNcIiksXG4gICAgICBNVUxUSUxJTkVfU1RSSU5HKFwiIyNcIiksXG4gICAgICBNVUxUSUxJTkVfU1RSSU5HKFwiIyMjXCIpLFxuICAgICAgU0lOR0xFX0xJTkVfU1RSSU5HKCksXG4gICAgICBTSU5HTEVfTElORV9TVFJJTkcoXCIjXCIpLFxuICAgICAgU0lOR0xFX0xJTkVfU1RSSU5HKFwiIyNcIiksXG4gICAgICBTSU5HTEVfTElORV9TVFJJTkcoXCIjIyNcIilcbiAgICBdXG4gIH07XG5cbiAgLy8gaHR0cHM6Ly9kb2NzLnN3aWZ0Lm9yZy9zd2lmdC1ib29rL1JlZmVyZW5jZU1hbnVhbC9MZXhpY2FsU3RydWN0dXJlLmh0bWwjSUQ0MTJcbiAgY29uc3QgUVVPVEVEX0lERU5USUZJRVIgPSB7IG1hdGNoOiBjb25jYXQoL2AvLCBpZGVudGlmaWVyLCAvYC8pIH07XG4gIGNvbnN0IElNUExJQ0lUX1BBUkFNRVRFUiA9IHtcbiAgICBjbGFzc05hbWU6ICd2YXJpYWJsZScsXG4gICAgbWF0Y2g6IC9cXCRcXGQrL1xuICB9O1xuICBjb25zdCBQUk9QRVJUWV9XUkFQUEVSX1BST0pFQ1RJT04gPSB7XG4gICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgIG1hdGNoOiBgXFxcXCQke2lkZW50aWZpZXJDaGFyYWN0ZXJ9K2BcbiAgfTtcbiAgY29uc3QgSURFTlRJRklFUlMgPSBbXG4gICAgUVVPVEVEX0lERU5USUZJRVIsXG4gICAgSU1QTElDSVRfUEFSQU1FVEVSLFxuICAgIFBST1BFUlRZX1dSQVBQRVJfUFJPSkVDVElPTlxuICBdO1xuXG4gIC8vIGh0dHBzOi8vZG9jcy5zd2lmdC5vcmcvc3dpZnQtYm9vay9SZWZlcmVuY2VNYW51YWwvQXR0cmlidXRlcy5odG1sXG4gIGNvbnN0IEFWQUlMQUJMRV9BVFRSSUJVVEUgPSB7XG4gICAgbWF0Y2g6IC8oQHwjKHVuKT8pYXZhaWxhYmxlLyxcbiAgICBjbGFzc05hbWU6IFwia2V5d29yZFwiLFxuICAgIHN0YXJ0czogeyBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBiZWdpbjogL1xcKC8sXG4gICAgICAgIGVuZDogL1xcKS8sXG4gICAgICAgIGtleXdvcmRzOiBhdmFpbGFiaWxpdHlLZXl3b3JkcyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAuLi5PUEVSQVRPUlMsXG4gICAgICAgICAgTlVNQkVSLFxuICAgICAgICAgIFNUUklOR1xuICAgICAgICBdXG4gICAgICB9XG4gICAgXSB9XG4gIH07XG4gIGNvbnN0IEtFWVdPUkRfQVRUUklCVVRFID0ge1xuICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgIG1hdGNoOiBjb25jYXQoL0AvLCBlaXRoZXIoLi4ua2V5d29yZEF0dHJpYnV0ZXMpKVxuICB9O1xuICBjb25zdCBVU0VSX0RFRklORURfQVRUUklCVVRFID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIG1hdGNoOiBjb25jYXQoL0AvLCBpZGVudGlmaWVyKVxuICB9O1xuICBjb25zdCBBVFRSSUJVVEVTID0gW1xuICAgIEFWQUlMQUJMRV9BVFRSSUJVVEUsXG4gICAgS0VZV09SRF9BVFRSSUJVVEUsXG4gICAgVVNFUl9ERUZJTkVEX0FUVFJJQlVURVxuICBdO1xuXG4gIC8vIGh0dHBzOi8vZG9jcy5zd2lmdC5vcmcvc3dpZnQtYm9vay9SZWZlcmVuY2VNYW51YWwvVHlwZXMuaHRtbFxuICBjb25zdCBUWVBFID0ge1xuICAgIG1hdGNoOiBsb29rYWhlYWQoL1xcYltBLVpdLyksXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IC8vIENvbW1vbiBBcHBsZSBmcmFtZXdvcmtzLCBmb3IgcmVsZXZhbmNlIGJvb3N0XG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBtYXRjaDogY29uY2F0KC8oQVZ8Q0F8Q0Z8Q0d8Q0l8Q0x8Q018Q058Q1R8TUt8TVB8TVRLfE1UTHxOU3xTQ058U0t8VUl8V0t8WEMpLywgaWRlbnRpZmllckNoYXJhY3RlciwgJysnKVxuICAgICAgfSxcbiAgICAgIHsgLy8gVHlwZSBpZGVudGlmaWVyXG4gICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICBtYXRjaDogdHlwZUlkZW50aWZpZXIsXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIHsgLy8gT3B0aW9uYWwgdHlwZVxuICAgICAgICBtYXRjaDogL1s/IV0rLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgeyAvLyBWYXJpYWRpYyBwYXJhbWV0ZXJcbiAgICAgICAgbWF0Y2g6IC9cXC5cXC5cXC4vLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH0sXG4gICAgICB7IC8vIFByb3RvY29sIGNvbXBvc2l0aW9uXG4gICAgICAgIG1hdGNoOiBjb25jYXQoL1xccysmXFxzKy8sIGxvb2thaGVhZCh0eXBlSWRlbnRpZmllcikpLFxuICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIGNvbnN0IEdFTkVSSUNfQVJHVU1FTlRTID0ge1xuICAgIGJlZ2luOiAvPC8sXG4gICAgZW5kOiAvPi8sXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAuLi5DT01NRU5UUyxcbiAgICAgIC4uLktFWVdPUkRfTU9ERVMsXG4gICAgICAuLi5BVFRSSUJVVEVTLFxuICAgICAgT1BFUkFUT1JfR1VBUkQsXG4gICAgICBUWVBFXG4gICAgXVxuICB9O1xuICBUWVBFLmNvbnRhaW5zLnB1c2goR0VORVJJQ19BUkdVTUVOVFMpO1xuXG4gIC8vIGh0dHBzOi8vZG9jcy5zd2lmdC5vcmcvc3dpZnQtYm9vay9SZWZlcmVuY2VNYW51YWwvRXhwcmVzc2lvbnMuaHRtbCNJRDU1MlxuICAvLyBQcmV2ZW50cyBlbGVtZW50IG5hbWVzIGZyb20gYmVpbmcgaGlnaGxpZ2h0ZWQgYXMga2V5d29yZHMuXG4gIGNvbnN0IFRVUExFX0VMRU1FTlRfTkFNRSA9IHtcbiAgICBtYXRjaDogY29uY2F0KGlkZW50aWZpZXIsIC9cXHMqOi8pLFxuICAgIGtleXdvcmRzOiBcIl98MFwiLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICAvLyBNYXRjaGVzIHR1cGxlcyBhcyB3ZWxsIGFzIHRoZSBwYXJhbWV0ZXIgbGlzdCBvZiBhIGZ1bmN0aW9uIHR5cGUuXG4gIGNvbnN0IFRVUExFID0ge1xuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgICdzZWxmJyxcbiAgICAgIFRVUExFX0VMRU1FTlRfTkFNRSxcbiAgICAgIC4uLkNPTU1FTlRTLFxuICAgICAgLi4uS0VZV09SRF9NT0RFUyxcbiAgICAgIC4uLkJVSUxUX0lOUyxcbiAgICAgIC4uLk9QRVJBVE9SUyxcbiAgICAgIE5VTUJFUixcbiAgICAgIFNUUklORyxcbiAgICAgIC4uLklERU5USUZJRVJTLFxuICAgICAgLi4uQVRUUklCVVRFUyxcbiAgICAgIFRZUEVcbiAgICBdXG4gIH07XG5cbiAgY29uc3QgR0VORVJJQ19QQVJBTUVURVJTID0ge1xuICAgIGJlZ2luOiAvPC8sXG4gICAgZW5kOiAvPi8sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIC4uLkNPTU1FTlRTLFxuICAgICAgVFlQRVxuICAgIF1cbiAgfTtcbiAgY29uc3QgRlVOQ1RJT05fUEFSQU1FVEVSX05BTUUgPSB7XG4gICAgYmVnaW46IGVpdGhlcihcbiAgICAgIGxvb2thaGVhZChjb25jYXQoaWRlbnRpZmllciwgL1xccyo6LykpLFxuICAgICAgbG9va2FoZWFkKGNvbmNhdChpZGVudGlmaWVyLCAvXFxzKy8sIGlkZW50aWZpZXIsIC9cXHMqOi8pKVxuICAgICksXG4gICAgZW5kOiAvOi8sXG4gICAgcmVsZXZhbmNlOiAwLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBtYXRjaDogL1xcYl9cXGIvXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgICAgICBtYXRjaDogaWRlbnRpZmllclxuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgY29uc3QgRlVOQ1RJT05fUEFSQU1FVEVSUyA9IHtcbiAgICBiZWdpbjogL1xcKC8sXG4gICAgZW5kOiAvXFwpLyxcbiAgICBrZXl3b3JkczogS0VZV09SRFMsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEZVTkNUSU9OX1BBUkFNRVRFUl9OQU1FLFxuICAgICAgLi4uQ09NTUVOVFMsXG4gICAgICAuLi5LRVlXT1JEX01PREVTLFxuICAgICAgLi4uT1BFUkFUT1JTLFxuICAgICAgTlVNQkVSLFxuICAgICAgU1RSSU5HLFxuICAgICAgLi4uQVRUUklCVVRFUyxcbiAgICAgIFRZUEUsXG4gICAgICBUVVBMRVxuICAgIF0sXG4gICAgZW5kc1BhcmVudDogdHJ1ZSxcbiAgICBpbGxlZ2FsOiAvW1wiJ10vXG4gIH07XG4gIC8vIGh0dHBzOi8vZG9jcy5zd2lmdC5vcmcvc3dpZnQtYm9vay9SZWZlcmVuY2VNYW51YWwvRGVjbGFyYXRpb25zLmh0bWwjSUQzNjJcbiAgY29uc3QgRlVOQ1RJT04gPSB7XG4gICAgbWF0Y2g6IFtcbiAgICAgIC9mdW5jLyxcbiAgICAgIC9cXHMrLyxcbiAgICAgIGVpdGhlcihRVU9URURfSURFTlRJRklFUi5tYXRjaCwgaWRlbnRpZmllciwgb3BlcmF0b3IpXG4gICAgXSxcbiAgICBjbGFzc05hbWU6IHtcbiAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgMzogXCJ0aXRsZS5mdW5jdGlvblwiXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgR0VORVJJQ19QQVJBTUVURVJTLFxuICAgICAgRlVOQ1RJT05fUEFSQU1FVEVSUyxcbiAgICAgIFdISVRFU1BBQ0VcbiAgICBdLFxuICAgIGlsbGVnYWw6IFtcbiAgICAgIC9cXFsvLFxuICAgICAgLyUvXG4gICAgXVxuICB9O1xuXG4gIC8vIGh0dHBzOi8vZG9jcy5zd2lmdC5vcmcvc3dpZnQtYm9vay9SZWZlcmVuY2VNYW51YWwvRGVjbGFyYXRpb25zLmh0bWwjSUQzNzVcbiAgLy8gaHR0cHM6Ly9kb2NzLnN3aWZ0Lm9yZy9zd2lmdC1ib29rL1JlZmVyZW5jZU1hbnVhbC9EZWNsYXJhdGlvbnMuaHRtbCNJRDM3OVxuICBjb25zdCBJTklUX1NVQlNDUklQVCA9IHtcbiAgICBtYXRjaDogW1xuICAgICAgL1xcYig/OnN1YnNjcmlwdHxpbml0Wz8hXT8pLyxcbiAgICAgIC9cXHMqKD89WzwoXSkvLFxuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7IDE6IFwia2V5d29yZFwiIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIEdFTkVSSUNfUEFSQU1FVEVSUyxcbiAgICAgIEZVTkNUSU9OX1BBUkFNRVRFUlMsXG4gICAgICBXSElURVNQQUNFXG4gICAgXSxcbiAgICBpbGxlZ2FsOiAvXFxbfCUvXG4gIH07XG4gIC8vIGh0dHBzOi8vZG9jcy5zd2lmdC5vcmcvc3dpZnQtYm9vay9SZWZlcmVuY2VNYW51YWwvRGVjbGFyYXRpb25zLmh0bWwjSUQzODBcbiAgY29uc3QgT1BFUkFUT1JfREVDTEFSQVRJT04gPSB7XG4gICAgbWF0Y2g6IFtcbiAgICAgIC9vcGVyYXRvci8sXG4gICAgICAvXFxzKy8sXG4gICAgICBvcGVyYXRvclxuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDM6IFwidGl0bGVcIlxuICAgIH1cbiAgfTtcblxuICAvLyBodHRwczovL2RvY3Muc3dpZnQub3JnL3N3aWZ0LWJvb2svUmVmZXJlbmNlTWFudWFsL0RlY2xhcmF0aW9ucy5odG1sI0lENTUwXG4gIGNvbnN0IFBSRUNFREVOQ0VHUk9VUCA9IHtcbiAgICBiZWdpbjogW1xuICAgICAgL3ByZWNlZGVuY2Vncm91cC8sXG4gICAgICAvXFxzKy8sXG4gICAgICB0eXBlSWRlbnRpZmllclxuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDM6IFwidGl0bGVcIlxuICAgIH0sXG4gICAgY29udGFpbnM6IFsgVFlQRSBdLFxuICAgIGtleXdvcmRzOiBbXG4gICAgICAuLi5wcmVjZWRlbmNlZ3JvdXBLZXl3b3JkcyxcbiAgICAgIC4uLmxpdGVyYWxzXG4gICAgXSxcbiAgICBlbmQ6IC99L1xuICB9O1xuXG4gIC8vIEFkZCBzdXBwb3J0ZWQgc3VibW9kZXMgdG8gc3RyaW5nIGludGVycG9sYXRpb24uXG4gIGZvciAoY29uc3QgdmFyaWFudCBvZiBTVFJJTkcudmFyaWFudHMpIHtcbiAgICBjb25zdCBpbnRlcnBvbGF0aW9uID0gdmFyaWFudC5jb250YWlucy5maW5kKG1vZGUgPT4gbW9kZS5sYWJlbCA9PT0gXCJpbnRlcnBvbFwiKTtcbiAgICAvLyBUT0RPOiBJbnRlcnBvbGF0aW9uIGNhbiBjb250YWluIGFueSBleHByZXNzaW9uLCBzbyB0aGVyZSdzIHJvb20gZm9yIGltcHJvdmVtZW50IGhlcmUuXG4gICAgaW50ZXJwb2xhdGlvbi5rZXl3b3JkcyA9IEtFWVdPUkRTO1xuICAgIGNvbnN0IHN1Ym1vZGVzID0gW1xuICAgICAgLi4uS0VZV09SRF9NT0RFUyxcbiAgICAgIC4uLkJVSUxUX0lOUyxcbiAgICAgIC4uLk9QRVJBVE9SUyxcbiAgICAgIE5VTUJFUixcbiAgICAgIFNUUklORyxcbiAgICAgIC4uLklERU5USUZJRVJTXG4gICAgXTtcbiAgICBpbnRlcnBvbGF0aW9uLmNvbnRhaW5zID0gW1xuICAgICAgLi4uc3VibW9kZXMsXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgZW5kOiAvXFwpLyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAnc2VsZicsXG4gICAgICAgICAgLi4uc3VibW9kZXNcbiAgICAgICAgXVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdTd2lmdCcsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICAuLi5DT01NRU5UUyxcbiAgICAgIEZVTkNUSU9OLFxuICAgICAgSU5JVF9TVUJTQ1JJUFQsXG4gICAgICB7XG4gICAgICAgIGJlZ2luS2V5d29yZHM6ICdzdHJ1Y3QgcHJvdG9jb2wgY2xhc3MgZXh0ZW5zaW9uIGVudW0gYWN0b3InLFxuICAgICAgICBlbmQ6ICdcXFxceycsXG4gICAgICAgIGV4Y2x1ZGVFbmQ6IHRydWUsXG4gICAgICAgIGtleXdvcmRzOiBLRVlXT1JEUyxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBobGpzLmluaGVyaXQoaGxqcy5USVRMRV9NT0RFLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IFwidGl0bGUuY2xhc3NcIixcbiAgICAgICAgICAgIGJlZ2luOiAvW0EtWmEteiRfXVtcXHUwMEMwLVxcdTAyQjgwLTlBLVphLXokX10qL1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLktFWVdPUkRfTU9ERVNcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIE9QRVJBVE9SX0RFQ0xBUkFUSU9OLFxuICAgICAgUFJFQ0VERU5DRUdST1VQLFxuICAgICAge1xuICAgICAgICBiZWdpbktleXdvcmRzOiAnaW1wb3J0JyxcbiAgICAgICAgZW5kOiAvJC8sXG4gICAgICAgIGNvbnRhaW5zOiBbIC4uLkNPTU1FTlRTIF0sXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIC4uLktFWVdPUkRfTU9ERVMsXG4gICAgICAuLi5CVUlMVF9JTlMsXG4gICAgICAuLi5PUEVSQVRPUlMsXG4gICAgICBOVU1CRVIsXG4gICAgICBTVFJJTkcsXG4gICAgICAuLi5JREVOVElGSUVSUyxcbiAgICAgIC4uLkFUVFJJQlVURVMsXG4gICAgICBUWVBFLFxuICAgICAgVFVQTEVcbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IHN3aWZ0IGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJzb3VyY2UiLCJyZSIsImxvb2thaGVhZCIsImNvbmNhdCIsImFyZ3MiLCJqb2luZWQiLCJtYXAiLCJ4Iiwiam9pbiIsInN0cmlwT3B0aW9uc0Zyb21BcmdzIiwib3B0cyIsImxlbmd0aCIsImNvbnN0cnVjdG9yIiwiT2JqZWN0Iiwic3BsaWNlIiwiZWl0aGVyIiwiY2FwdHVyZSIsImtleXdvcmRXcmFwcGVyIiwia2V5d29yZCIsInRlc3QiLCJkb3RLZXl3b3JkcyIsIm9wdGlvbmFsRG90S2V5d29yZHMiLCJrZXl3b3JkVHlwZXMiLCJrZXl3b3JkcyIsImxpdGVyYWxzIiwicHJlY2VkZW5jZWdyb3VwS2V5d29yZHMiLCJudW1iZXJTaWduS2V5d29yZHMiLCJidWlsdElucyIsIm9wZXJhdG9ySGVhZCIsIm9wZXJhdG9yQ2hhcmFjdGVyIiwib3BlcmF0b3IiLCJpZGVudGlmaWVySGVhZCIsImlkZW50aWZpZXJDaGFyYWN0ZXIiLCJpZGVudGlmaWVyIiwidHlwZUlkZW50aWZpZXIiLCJrZXl3b3JkQXR0cmlidXRlcyIsImF2YWlsYWJpbGl0eUtleXdvcmRzIiwic3dpZnQiLCJobGpzIiwiV0hJVEVTUEFDRSIsIm1hdGNoIiwicmVsZXZhbmNlIiwiQkxPQ0tfQ09NTUVOVCIsIkNPTU1FTlQiLCJjb250YWlucyIsIkNPTU1FTlRTIiwiQ19MSU5FX0NPTU1FTlRfTU9ERSIsIkRPVF9LRVlXT1JEIiwiY2xhc3NOYW1lIiwiS0VZV09SRF9HVUFSRCIsIlBMQUlOX0tFWVdPUkRTIiwiZmlsdGVyIiwia3ciLCJSRUdFWF9LRVlXT1JEUyIsIktFWVdPUkQiLCJ2YXJpYW50cyIsIktFWVdPUkRTIiwiJHBhdHRlcm4iLCJsaXRlcmFsIiwiS0VZV09SRF9NT0RFUyIsIkJVSUxUX0lOX0dVQVJEIiwiQlVJTFRfSU4iLCJCVUlMVF9JTlMiLCJPUEVSQVRPUl9HVUFSRCIsIk9QRVJBVE9SIiwiT1BFUkFUT1JTIiwiZGVjaW1hbERpZ2l0cyIsImhleERpZ2l0cyIsIk5VTUJFUiIsIkVTQ0FQRURfQ0hBUkFDVEVSIiwicmF3RGVsaW1pdGVyIiwiRVNDQVBFRF9ORVdMSU5FIiwiSU5URVJQT0xBVElPTiIsImxhYmVsIiwiYmVnaW4iLCJlbmQiLCJNVUxUSUxJTkVfU1RSSU5HIiwiU0lOR0xFX0xJTkVfU1RSSU5HIiwiU1RSSU5HIiwiUVVPVEVEX0lERU5USUZJRVIiLCJJTVBMSUNJVF9QQVJBTUVURVIiLCJQUk9QRVJUWV9XUkFQUEVSX1BST0pFQ1RJT04iLCJJREVOVElGSUVSUyIsIkFWQUlMQUJMRV9BVFRSSUJVVEUiLCJzdGFydHMiLCJLRVlXT1JEX0FUVFJJQlVURSIsIlVTRVJfREVGSU5FRF9BVFRSSUJVVEUiLCJBVFRSSUJVVEVTIiwiVFlQRSIsIkdFTkVSSUNfQVJHVU1FTlRTIiwicHVzaCIsIlRVUExFX0VMRU1FTlRfTkFNRSIsIlRVUExFIiwiR0VORVJJQ19QQVJBTUVURVJTIiwiRlVOQ1RJT05fUEFSQU1FVEVSX05BTUUiLCJGVU5DVElPTl9QQVJBTUVURVJTIiwiZW5kc1BhcmVudCIsImlsbGVnYWwiLCJGVU5DVElPTiIsIklOSVRfU1VCU0NSSVBUIiwiT1BFUkFUT1JfREVDTEFSQVRJT04iLCJQUkVDRURFTkNFR1JPVVAiLCJ2YXJpYW50IiwiaW50ZXJwb2xhdGlvbiIsImZpbmQiLCJtb2RlIiwic3VibW9kZXMiLCJuYW1lIiwiYmVnaW5LZXl3b3JkcyIsImV4Y2x1ZGVFbmQiLCJpbmhlcml0IiwiVElUTEVfTU9ERSIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/swift.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/typescript.js":
/*!**************************************************************!*\
!*** ./node_modules/highlight.js/es/languages/typescript.js ***!
\**************************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ typescript)\n/* harmony export */ });\nconst IDENT_RE = \"[A-Za-z$_][0-9A-Za-z$_]*\";\nconst KEYWORDS = [\n \"as\",\n \"in\",\n \"of\",\n \"if\",\n \"for\",\n \"while\",\n \"finally\",\n \"var\",\n \"new\",\n \"function\",\n \"do\",\n \"return\",\n \"void\",\n \"else\",\n \"break\",\n \"catch\",\n \"instanceof\",\n \"with\",\n \"throw\",\n \"case\",\n \"default\",\n \"try\",\n \"switch\",\n \"continue\",\n \"typeof\",\n \"delete\",\n \"let\",\n \"yield\",\n \"const\",\n \"class\",\n // JS handles these with a special rule\n // \"get\",\n // \"set\",\n \"debugger\",\n \"async\",\n \"await\",\n \"static\",\n \"import\",\n \"from\",\n \"export\",\n \"extends\"\n];\nconst LITERALS = [\n \"true\",\n \"false\",\n \"null\",\n \"undefined\",\n \"NaN\",\n \"Infinity\"\n];\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\nconst TYPES = [\n // Fundamental objects\n \"Object\",\n \"Function\",\n \"Boolean\",\n \"Symbol\",\n // numbers and dates\n \"Math\",\n \"Date\",\n \"Number\",\n \"BigInt\",\n // text\n \"String\",\n \"RegExp\",\n // Indexed collections\n \"Array\",\n \"Float32Array\",\n \"Float64Array\",\n \"Int8Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"Int16Array\",\n \"Int32Array\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n // Keyed collections\n \"Set\",\n \"Map\",\n \"WeakSet\",\n \"WeakMap\",\n // Structured data\n \"ArrayBuffer\",\n \"SharedArrayBuffer\",\n \"Atomics\",\n \"DataView\",\n \"JSON\",\n // Control abstraction objects\n \"Promise\",\n \"Generator\",\n \"GeneratorFunction\",\n \"AsyncFunction\",\n // Reflection\n \"Reflect\",\n \"Proxy\",\n // Internationalization\n \"Intl\",\n // WebAssembly\n \"WebAssembly\"\n];\nconst ERROR_TYPES = [\n \"Error\",\n \"EvalError\",\n \"InternalError\",\n \"RangeError\",\n \"ReferenceError\",\n \"SyntaxError\",\n \"TypeError\",\n \"URIError\"\n];\nconst BUILT_IN_GLOBALS = [\n \"setInterval\",\n \"setTimeout\",\n \"clearInterval\",\n \"clearTimeout\",\n \"require\",\n \"exports\",\n \"eval\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"unescape\"\n];\nconst BUILT_IN_VARIABLES = [\n \"arguments\",\n \"this\",\n \"super\",\n \"console\",\n \"window\",\n \"document\",\n \"localStorage\",\n \"module\",\n \"global\" // Node.js\n];\nconst BUILT_INS = [].concat(BUILT_IN_GLOBALS, TYPES, ERROR_TYPES);\n/*\nLanguage: JavaScript\nDescription: JavaScript (JS) is a lightweight, interpreted, or just-in-time compiled programming language with first-class functions.\nCategory: common, scripting, web\nWebsite: https://developer.mozilla.org/en-US/docs/Web/JavaScript\n*/ /** @type LanguageFn */ function javascript(hljs) {\n const regex = hljs.regex;\n /**\n * Takes a string like \"<Booger\" and checks to see\n * if we can find a matching \"</Booger\" later in the\n * content.\n * @param {RegExpMatchArray} match\n * @param {{after:number}} param1\n */ const hasClosingTag = (match, { after })=>{\n const tag = \"</\" + match[0].slice(1);\n const pos = match.input.indexOf(tag, after);\n return pos !== -1;\n };\n const IDENT_RE$1 = IDENT_RE;\n const FRAGMENT = {\n begin: \"<>\",\n end: \"</>\"\n };\n // to avoid some special cases inside isTrulyOpeningTag\n const XML_SELF_CLOSING = /<[A-Za-z0-9\\\\._:-]+\\s*\\/>/;\n const XML_TAG = {\n begin: /<[A-Za-z0-9\\\\._:-]+/,\n end: /\\/[A-Za-z0-9\\\\._:-]+>|\\/>/,\n /**\n * @param {RegExpMatchArray} match\n * @param {CallbackResponse} response\n */ isTrulyOpeningTag: (match, response)=>{\n const afterMatchIndex = match[0].length + match.index;\n const nextChar = match.input[afterMatchIndex];\n if (// HTML should not include another raw `<` inside a tag\n // nested type?\n // `<Array<Array<number>>`, etc.\n nextChar === \"<\" || // the , gives away that this is not HTML\n // `<T, A extends keyof T, V>`\n nextChar === \",\") {\n response.ignoreMatch();\n return;\n }\n // `<something>`\n // Quite possibly a tag, lets look for a matching closing tag...\n if (nextChar === \">\") {\n // if we cannot find a matching closing tag, then we\n // will ignore it\n if (!hasClosingTag(match, {\n after: afterMatchIndex\n })) {\n response.ignoreMatch();\n }\n }\n // `<blah />` (self-closing)\n // handled by simpleSelfClosing rule\n let m;\n const afterMatch = match.input.substring(afterMatchIndex);\n // some more template typing stuff\n // <T = any>(key?: string) => Modify<\n if (m = afterMatch.match(/^\\s*=/)) {\n response.ignoreMatch();\n return;\n }\n // `<From extends string>`\n // technically this could be HTML, but it smells like a type\n // NOTE: This is ugh, but added specifically for https://github.com/highlightjs/highlight.js/issues/3276\n if (m = afterMatch.match(/^\\s+extends\\s+/)) {\n if (m.index === 0) {\n response.ignoreMatch();\n // eslint-disable-next-line no-useless-return\n return;\n }\n }\n }\n };\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILT_INS,\n \"variable.language\": BUILT_IN_VARIABLES\n };\n // https://tc39.es/ecma262/#sec-literals-numeric-literals\n const decimalDigits = \"[0-9](_?[0-9])*\";\n const frac = `\\\\.(${decimalDigits})`;\n // DecimalIntegerLiteral, including Annex B NonOctalDecimalIntegerLiteral\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;\n const NUMBER = {\n className: \"number\",\n variants: [\n // DecimalLiteral\n {\n begin: `(\\\\b(${decimalInteger})((${frac})|\\\\.)?|(${frac}))` + `[eE][+-]?(${decimalDigits})\\\\b`\n },\n {\n begin: `\\\\b(${decimalInteger})\\\\b((${frac})\\\\b|\\\\.)?|(${frac})\\\\b`\n },\n // DecimalBigIntegerLiteral\n {\n begin: `\\\\b(0|[1-9](_?[0-9])*)n\\\\b`\n },\n // NonDecimalIntegerLiteral\n {\n begin: \"\\\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\\\b\"\n },\n {\n begin: \"\\\\b0[bB][0-1](_?[0-1])*n?\\\\b\"\n },\n {\n begin: \"\\\\b0[oO][0-7](_?[0-7])*n?\\\\b\"\n },\n // LegacyOctalIntegerLiteral (does not include underscore separators)\n // https://tc39.es/ecma262/#sec-additional-syntax-numeric-literals\n {\n begin: \"\\\\b0[0-7]+n?\\\\b\"\n }\n ],\n relevance: 0\n };\n const SUBST = {\n className: \"subst\",\n begin: \"\\\\$\\\\{\",\n end: \"\\\\}\",\n keywords: KEYWORDS$1,\n contains: [] // defined later\n };\n const HTML_TEMPLATE = {\n begin: \"html`\",\n end: \"\",\n starts: {\n end: \"`\",\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: \"xml\"\n }\n };\n const CSS_TEMPLATE = {\n begin: \"css`\",\n end: \"\",\n starts: {\n end: \"`\",\n returnEnd: false,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ],\n subLanguage: \"css\"\n }\n };\n const TEMPLATE_STRING = {\n className: \"string\",\n begin: \"`\",\n end: \"`\",\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n const JSDOC_COMMENT = hljs.COMMENT(/\\/\\*\\*(?!\\/)/, \"\\\\*/\", {\n relevance: 0,\n contains: [\n {\n begin: \"(?=@[A-Za-z]+)\",\n relevance: 0,\n contains: [\n {\n className: \"doctag\",\n begin: \"@[A-Za-z]+\"\n },\n {\n className: \"type\",\n begin: \"\\\\{\",\n end: \"\\\\}\",\n excludeEnd: true,\n excludeBegin: true,\n relevance: 0\n },\n {\n className: \"variable\",\n begin: IDENT_RE$1 + \"(?=\\\\s*(-)|$)\",\n endsParent: true,\n relevance: 0\n },\n // eat spaces (not newlines) so we can find\n // types or variables\n {\n begin: /(?=[^\\n])\\s/,\n relevance: 0\n }\n ]\n }\n ]\n });\n const COMMENT = {\n className: \"comment\",\n variants: [\n JSDOC_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n };\n const SUBST_INTERNALS = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n // Skip numbers when they are part of a variable name\n {\n match: /\\$\\d+/\n },\n NUMBER\n ];\n SUBST.contains = SUBST_INTERNALS.concat({\n // we need to pair up {} inside our subst to prevent\n // it from ending too early by matching another }\n begin: /\\{/,\n end: /\\}/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_INTERNALS)\n });\n const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);\n const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([\n // eat recursive parens in sub expressions\n {\n begin: /\\(/,\n end: /\\)/,\n keywords: KEYWORDS$1,\n contains: [\n \"self\"\n ].concat(SUBST_AND_COMMENTS)\n }\n ]);\n const PARAMS = {\n className: \"params\",\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n };\n // ES6 classes\n const CLASS_OR_EXTENDS = {\n variants: [\n // class Car extends vehicle\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1,\n /\\s+/,\n /extends/,\n /\\s+/,\n regex.concat(IDENT_RE$1, \"(\", regex.concat(/\\./, IDENT_RE$1), \")*\")\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\",\n 5: \"keyword\",\n 7: \"title.class.inherited\"\n }\n },\n // class Car\n {\n match: [\n /class/,\n /\\s+/,\n IDENT_RE$1\n ],\n scope: {\n 1: \"keyword\",\n 3: \"title.class\"\n }\n }\n ]\n };\n const CLASS_REFERENCE = {\n relevance: 0,\n match: regex.either(// Hard coded exceptions\n /\\bJSON/, // Float32Array, OutT\n /\\b[A-Z][a-z]+([A-Z][a-z]*|\\d)*/, // CSSFactory, CSSFactoryT\n /\\b[A-Z]{2,}([A-Z][a-z]+|\\d)+([A-Z][a-z]*)*/, // FPs, FPsT\n /\\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\\d)*([A-Z][a-z]*)*/),\n className: \"title.class\",\n keywords: {\n _: [\n // se we still get relevance credit for JS library classes\n ...TYPES,\n ...ERROR_TYPES\n ]\n }\n };\n const USE_STRICT = {\n label: \"use_strict\",\n className: \"meta\",\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n };\n const FUNCTION_DEFINITION = {\n variants: [\n {\n match: [\n /function/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\s*\\()/\n ]\n },\n // anonymous function\n {\n match: [\n /function/,\n /\\s*(?=\\()/\n ]\n }\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n label: \"func.def\",\n contains: [\n PARAMS\n ],\n illegal: /%/\n };\n const UPPER_CASE_CONSTANT = {\n relevance: 0,\n match: /\\b[A-Z][A-Z_0-9]+\\b/,\n className: \"variable.constant\"\n };\n function noneOf(list) {\n return regex.concat(\"(?!\", list.join(\"|\"), \")\");\n }\n const FUNCTION_CALL = {\n match: regex.concat(/\\b/, noneOf([\n ...BUILT_IN_GLOBALS,\n \"super\",\n \"import\"\n ]), IDENT_RE$1, regex.lookahead(/\\(/)),\n className: \"title.function\",\n relevance: 0\n };\n const PROPERTY_ACCESS = {\n begin: regex.concat(/\\./, regex.lookahead(regex.concat(IDENT_RE$1, /(?![0-9A-Za-z$_(])/))),\n end: IDENT_RE$1,\n excludeBegin: true,\n keywords: \"prototype\",\n className: \"property\",\n relevance: 0\n };\n const GETTER_OR_SETTER = {\n match: [\n /get|set/,\n /\\s+/,\n IDENT_RE$1,\n /(?=\\()/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n {\n begin: /\\(\\)/\n },\n PARAMS\n ]\n };\n const FUNC_LEAD_IN_RE = \"(\\\\(\" + \"[^()]*(\\\\(\" + \"[^()]*(\\\\(\" + \"[^()]*\" + \"\\\\)[^()]*)*\" + \"\\\\)[^()]*)*\" + \"\\\\)|\" + hljs.UNDERSCORE_IDENT_RE + \")\\\\s*=>\";\n const FUNCTION_VARIABLE = {\n match: [\n /const|var|let/,\n /\\s+/,\n IDENT_RE$1,\n /\\s*/,\n /=\\s*/,\n /(async\\s*)?/,\n regex.lookahead(FUNC_LEAD_IN_RE)\n ],\n keywords: \"async\",\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n };\n return {\n name: \"Javascript\",\n aliases: [\n \"js\",\n \"jsx\",\n \"mjs\",\n \"cjs\"\n ],\n keywords: KEYWORDS$1,\n // this will be extended by TypeScript\n exports: {\n PARAMS_CONTAINS,\n CLASS_REFERENCE\n },\n illegal: /#(?![$_A-z])/,\n contains: [\n hljs.SHEBANG({\n label: \"shebang\",\n binary: \"node\",\n relevance: 5\n }),\n USE_STRICT,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n HTML_TEMPLATE,\n CSS_TEMPLATE,\n TEMPLATE_STRING,\n COMMENT,\n // Skip numbers when they are part of a variable name\n {\n match: /\\$\\d+/\n },\n NUMBER,\n CLASS_REFERENCE,\n {\n className: \"attr\",\n begin: IDENT_RE$1 + regex.lookahead(\":\"),\n relevance: 0\n },\n FUNCTION_VARIABLE,\n {\n begin: \"(\" + hljs.RE_STARTERS_RE + \"|\\\\b(case|return|throw)\\\\b)\\\\s*\",\n keywords: \"return throw case\",\n relevance: 0,\n contains: [\n COMMENT,\n hljs.REGEXP_MODE,\n {\n className: \"function\",\n // we have to count the parens to make sure we actually have the\n // correct bounding ( ) before the =>. There could be any number of\n // sub-expressions inside also surrounded by parens.\n begin: FUNC_LEAD_IN_RE,\n returnBegin: true,\n end: \"\\\\s*=>\",\n contains: [\n {\n className: \"params\",\n variants: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n className: null,\n begin: /\\(\\s*\\)/,\n skip: true\n },\n {\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS$1,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n {\n begin: /,/,\n relevance: 0\n },\n {\n match: /\\s+/,\n relevance: 0\n },\n {\n variants: [\n {\n begin: FRAGMENT.begin,\n end: FRAGMENT.end\n },\n {\n match: XML_SELF_CLOSING\n },\n {\n begin: XML_TAG.begin,\n // we carefully check the opening tag to see if it truly\n // is a tag and not a false positive\n \"on:begin\": XML_TAG.isTrulyOpeningTag,\n end: XML_TAG.end\n }\n ],\n subLanguage: \"xml\",\n contains: [\n {\n begin: XML_TAG.begin,\n end: XML_TAG.end,\n skip: true,\n contains: [\n \"self\"\n ]\n }\n ]\n }\n ]\n },\n FUNCTION_DEFINITION,\n {\n // prevent this from getting swallowed up by function\n // since they appear \"function like\"\n beginKeywords: \"while if switch catch for\"\n },\n {\n // we have to count the parens to make sure we actually have the correct\n // bounding ( ). There could be any number of sub-expressions inside\n // also surrounded by parens.\n begin: \"\\\\b(?!function)\" + hljs.UNDERSCORE_IDENT_RE + \"\\\\(\" + // first parens\n \"[^()]*(\\\\(\" + \"[^()]*(\\\\(\" + \"[^()]*\" + \"\\\\)[^()]*)*\" + \"\\\\)[^()]*)*\" + \"\\\\)\\\\s*\\\\{\",\n returnBegin: true,\n label: \"func.def\",\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, {\n begin: IDENT_RE$1,\n className: \"title.function\"\n })\n ]\n },\n // catch ... so it won't trigger the property rule below\n {\n match: /\\.\\.\\./,\n relevance: 0\n },\n PROPERTY_ACCESS,\n // hack: prevents detection of keywords in some circumstances\n // .keyword()\n // $keyword = x\n {\n match: \"\\\\$\" + IDENT_RE$1,\n relevance: 0\n },\n {\n match: [\n /\\bconstructor(?=\\s*\\()/\n ],\n className: {\n 1: \"title.function\"\n },\n contains: [\n PARAMS\n ]\n },\n FUNCTION_CALL,\n UPPER_CASE_CONSTANT,\n CLASS_OR_EXTENDS,\n GETTER_OR_SETTER,\n {\n match: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n }\n ]\n };\n}\n/*\nLanguage: TypeScript\nAuthor: Panu Horsmalahti <panu.horsmalahti@iki.fi>\nContributors: Ike Ku <dempfi@yahoo.com>\nDescription: TypeScript is a strict superset of JavaScript\nWebsite: https://www.typescriptlang.org\nCategory: common, scripting\n*/ /** @type LanguageFn */ function typescript(hljs) {\n const tsLanguage = javascript(hljs);\n const IDENT_RE$1 = IDENT_RE;\n const TYPES = [\n \"any\",\n \"void\",\n \"number\",\n \"boolean\",\n \"string\",\n \"object\",\n \"never\",\n \"symbol\",\n \"bigint\",\n \"unknown\"\n ];\n const NAMESPACE = {\n beginKeywords: \"namespace\",\n end: /\\{/,\n excludeEnd: true,\n contains: [\n tsLanguage.exports.CLASS_REFERENCE\n ]\n };\n const INTERFACE = {\n beginKeywords: \"interface\",\n end: /\\{/,\n excludeEnd: true,\n keywords: {\n keyword: \"interface extends\",\n built_in: TYPES\n },\n contains: [\n tsLanguage.exports.CLASS_REFERENCE\n ]\n };\n const USE_STRICT = {\n className: \"meta\",\n relevance: 10,\n begin: /^\\s*['\"]use strict['\"]/\n };\n const TS_SPECIFIC_KEYWORDS = [\n \"type\",\n \"namespace\",\n \"interface\",\n \"public\",\n \"private\",\n \"protected\",\n \"implements\",\n \"declare\",\n \"abstract\",\n \"readonly\",\n \"enum\",\n \"override\"\n ];\n const KEYWORDS$1 = {\n $pattern: IDENT_RE,\n keyword: KEYWORDS.concat(TS_SPECIFIC_KEYWORDS),\n literal: LITERALS,\n built_in: BUILT_INS.concat(TYPES),\n \"variable.language\": BUILT_IN_VARIABLES\n };\n const DECORATOR = {\n className: \"meta\",\n begin: \"@\" + IDENT_RE$1\n };\n const swapMode = (mode, label, replacement)=>{\n const indx = mode.contains.findIndex((m)=>m.label === label);\n if (indx === -1) {\n throw new Error(\"can not find mode to replace\");\n }\n mode.contains.splice(indx, 1, replacement);\n };\n // this should update anywhere keywords is used since\n // it will be the same actual JS object\n Object.assign(tsLanguage.keywords, KEYWORDS$1);\n tsLanguage.exports.PARAMS_CONTAINS.push(DECORATOR);\n tsLanguage.contains = tsLanguage.contains.concat([\n DECORATOR,\n NAMESPACE,\n INTERFACE\n ]);\n // TS gets a simpler shebang rule than JS\n swapMode(tsLanguage, \"shebang\", hljs.SHEBANG());\n // JS use strict rule purposely excludes `asm` which makes no sense\n swapMode(tsLanguage, \"use_strict\", USE_STRICT);\n const functionDeclaration = tsLanguage.contains.find((m)=>m.label === \"func.def\");\n functionDeclaration.relevance = 0; // () => {} is more typical in TypeScript\n Object.assign(tsLanguage, {\n name: \"TypeScript\",\n aliases: [\n \"ts\",\n \"tsx\"\n ]\n });\n return tsLanguage;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy90eXBlc2NyaXB0LmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxNQUFNQSxXQUFXO0FBQ2pCLE1BQU1DLFdBQVc7SUFDZjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSx1Q0FBdUM7SUFDdkMsU0FBUztJQUNULFNBQVM7SUFDVDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFDRCxNQUFNQyxXQUFXO0lBQ2Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFRCxtRkFBbUY7QUFDbkYsTUFBTUMsUUFBUTtJQUNaLHNCQUFzQjtJQUN0QjtJQUNBO0lBQ0E7SUFDQTtJQUNBLG9CQUFvQjtJQUNwQjtJQUNBO0lBQ0E7SUFDQTtJQUNBLE9BQU87SUFDUDtJQUNBO0lBQ0Esc0JBQXNCO0lBQ3RCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLG9CQUFvQjtJQUNwQjtJQUNBO0lBQ0E7SUFDQTtJQUNBLGtCQUFrQjtJQUNsQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsOEJBQThCO0lBQzlCO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsYUFBYTtJQUNiO0lBQ0E7SUFDQSx1QkFBdUI7SUFDdkI7SUFDQSxjQUFjO0lBQ2Q7Q0FDRDtBQUVELE1BQU1DLGNBQWM7SUFDbEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsTUFBTUMsbUJBQW1CO0lBQ3ZCO0lBQ0E7SUFDQTtJQUNBO0lBRUE7SUFDQTtJQUVBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFD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QU1DLE9BQU9GLEtBQUs1RCxRQUFRLENBQUMrRCxTQUFTLENBQUNoRixDQUFBQSxJQUFLQSxFQUFFNEMsS0FBSyxLQUFLQTtRQUN0RCxJQUFJbUMsU0FBUyxDQUFDLEdBQUc7WUFBRSxNQUFNLElBQUlFLE1BQU07UUFBaUM7UUFFcEVKLEtBQUs1RCxRQUFRLENBQUNpRSxNQUFNLENBQUNILE1BQU0sR0FBR0Q7SUFDaEM7SUFHQSxxREFBcUQ7SUFDckQsdUNBQXVDO0lBQ3ZDSyxPQUFPQyxNQUFNLENBQUNiLFdBQVd2RCxRQUFRLEVBQUViO0lBRW5Db0UsV0FBV1gsT0FBTyxDQUFDeEIsZUFBZSxDQUFDaUQsSUFBSSxDQUFDVjtJQUN4Q0osV0FBV3RELFFBQVEsR0FBR3NELFdBQVd0RCxRQUFRLENBQUMxQyxNQUFNLENBQUM7UUFDL0NvRztRQUNBSDtRQUNBQztLQUNEO0lBRUQseUNBQXlDO0lBQ3pDRyxTQUFTTCxZQUFZLFdBQVc5RixLQUFLb0YsT0FBTztJQUM1QyxtRUFBbUU7SUFDbkVlLFNBQVNMLFlBQVksY0FBYzVCO0lBRW5DLE1BQU0yQyxzQkFBc0JmLFdBQVd0RCxRQUFRLENBQUNzRSxJQUFJLENBQUN2RixDQUFBQSxJQUFLQSxFQUFFNEMsS0FBSyxLQUFLO0lBQ3RFMEMsb0JBQW9CeEUsU0FBUyxHQUFHLEdBQUcseUNBQXlDO0lBRTVFcUUsT0FBT0MsTUFBTSxDQUFDYixZQUFZO1FBQ3hCYixNQUFNO1FBQ05DLFNBQVM7WUFDUDtZQUNBO1NBQ0Q7SUFDSDtJQUVBLE9BQU9ZO0FBQ1Q7QUFFaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9oaWdobGlnaHQuanMvZXMvbGFuZ3VhZ2VzL3R5cGVzY3JpcHQuanM/ZGQ5OCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBJREVOVF9SRSA9ICdbQS1aYS16JF9dWzAtOUEtWmEteiRfXSonO1xuY29uc3QgS0VZV09SRFMgPSBbXG4gIFwiYXNcIiwgLy8gZm9yIGV4cG9ydHNcbiAgXCJpblwiLFxuICBcIm9mXCIsXG4gIFwiaWZcIixcbiAgXCJmb3JcIixcbiAgXCJ3aGlsZVwiLFxuICBcImZpbmFsbHlcIixcbiAgXCJ2YXJcIixcbiAgXCJuZXdcIixcbiAgXCJmdW5jdGlvblwiLFxuICBcImRvXCIsXG4gIFwicmV0dXJuXCIsXG4gIFwidm9pZFwiLFxuICBcImVsc2VcIixcbiAgXCJicmVha1wiLFxuICBcImNhdGNoXCIsXG4gIFwiaW5zdGFuY2VvZlwiLFxuICBcIndpdGhcIixcbiAgXCJ0aHJvd1wiLFxuICBcImNhc2VcIixcbiAgXCJkZWZhdWx0XCIsXG4gIFwidHJ5XCIsXG4gIFwic3dpdGNoXCIsXG4gIFwiY29udGludWVcIixcbiAgXCJ0eXBlb2ZcIixcbiAgXCJkZWxldGVcIixcbiAgXCJsZXRcIixcbiAgXCJ5aWVsZFwiLFxuICBcImNvbnN0XCIsXG4gIFwiY2xhc3NcIixcbiAgLy8gSlMgaGFuZGxlcyB0aGVzZSB3aXRoIGEgc3BlY2lhbCBydWxlXG4gIC8vIFwiZ2V0XCIsXG4gIC8vIFwic2V0XCIsXG4gIFwiZGVidWdnZXJcIixcbiAgXCJhc3luY1wiLFxuICBcImF3YWl0XCIsXG4gIFwic3RhdGljXCIsXG4gIFwiaW1wb3J0XCIsXG4gIFwiZnJvbVwiLFxuICBcImV4cG9ydFwiLFxuICBcImV4dGVuZHNcIlxuXTtcbmNvbnN0IExJVEVSQUxTID0gW1xuICBcInRydWVcIixcbiAgXCJmYWxzZVwiLFxuICBcIm51bGxcIixcbiAgXCJ1bmRlZmluZWRcIixcbiAgXCJOYU5cIixcbiAgXCJJbmZpbml0eVwiXG5dO1xuXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0c1xuY29uc3QgVFlQRVMgPSBbXG4gIC8vIEZ1bmRhbWVudGFsIG9iamVjdHNcbiAgXCJPYmplY3RcIixcbiAgXCJGdW5jdGlvblwiLFxuICBcIkJvb2xlYW5cIixcbiAgXCJTeW1ib2xcIixcbiAgLy8gbnVtYmVycyBhbmQgZGF0ZXNcbiAgXCJNYXRoXCIsXG4gIFwiRGF0ZVwiLFxuICBcIk51bWJlclwiLFxuICBcIkJpZ0ludFwiLFxuICAvLyB0ZXh0XG4gIFwiU3RyaW5nXCIsXG4gIFwiUmVnRXhwXCIsXG4gIC8vIEluZGV4ZWQgY29sbGVjdGlvbnNcbiAgXCJBcnJheVwiLFxuICBcIkZsb2F0MzJBcnJheVwiLFxuICBcIkZsb2F0NjRBcnJheVwiLFxuICBcIkludDhBcnJheVwiLFxuICBcIlVpbnQ4QXJyYXlcIixcbiAgXCJVaW50OENsYW1wZWRBcnJheVwiLFxuICBcIkludDE2QXJyYXlcIixcbiAgXCJJbnQzMkFycmF5XCIsXG4gIFwiVWludDE2QXJyYXlcIixcbiAgXCJVaW50MzJBcnJheVwiLFxuICBcIkJpZ0ludDY0QXJyYXlcIixcbiAgXCJCaWdVaW50NjRBcnJheVwiLFxuICAvLyBLZXllZCBjb2xsZWN0aW9uc1xuICBcIlNldFwiLFxuICBcIk1hcFwiLFxuICBcIldlYWtTZXRcIixcbiAgXCJXZWFrTWFwXCIsXG4gIC8vIFN0cnVjdHVyZWQgZGF0YVxuICBcIkFycmF5QnVmZmVyXCIsXG4gIFwiU2hhcmVkQXJyYXlCdWZmZXJcIixcbiAgXCJBdG9taWNzXCIsXG4gIFwiRGF0YVZpZXdcIixcbiAgXCJKU09OXCIsXG4gIC8vIENvbnRyb2wgYWJzdHJhY3Rpb24gb2JqZWN0c1xuICBcIlByb21pc2VcIixcbiAgXCJHZW5lcmF0b3JcIixcbiAgXCJHZW5lcmF0b3JGdW5jdGlvblwiLFxuICBcIkFzeW5jRnVuY3Rpb25cIixcbiAgLy8gUmVmbGVjdGlvblxuICBcIlJlZmxlY3RcIixcbiAgXCJQcm94eVwiLFxuICAvLyBJbnRlcm5hdGlvbmFsaXphdGlvblxuICBcIkludGxcIixcbiAgLy8gV2ViQXNzZW1ibHlcbiAgXCJXZWJBc3NlbWJseVwiXG5dO1xuXG5jb25zdCBFUlJPUl9UWVBFUyA9IFtcbiAgXCJFcnJvclwiLFxuICBcIkV2YWxFcnJvclwiLFxuICBcIkludGVybmFsRXJyb3JcIixcbiAgXCJSYW5nZUVycm9yXCIsXG4gIFwiUmVmZXJlbmNlRXJyb3JcIixcbiAgXCJTeW50YXhFcnJvclwiLFxuICBcIlR5cGVFcnJvclwiLFxuICBcIlVSSUVycm9yXCJcbl07XG5cbmNvbnN0IEJVSUxUX0lOX0dMT0JBTFMgPSBbXG4gIFwic2V0SW50ZXJ2YWxcIixcbiAgXCJzZXRUaW1lb3V0XCIsXG4gIFwiY2xlYXJJbnRlcnZhbFwiLFxuICBcImNsZWFyVGltZW91dFwiLFxuXG4gIFwicmVxdWlyZVwiLFxuICBcImV4cG9ydHNcIixcblxuICBcImV2YWxcIixcbiAgXCJpc0Zpbml0ZVwiLFxuICBcImlzTmFOXCIsXG4gIFwicGFyc2VGbG9hdFwiLFxuICBcInBhcnNlSW50XCIsXG4gIFwiZGVjb2RlVVJJXCIsXG4gIFwiZGVjb2RlVVJJQ29tcG9uZW50XCIsXG4gIFwiZW5jb2RlVVJJXCIsXG4gIFwiZW5jb2RlVVJJQ29tcG9uZW50XCIsXG4gIFwiZXNjYXBlXCIsXG4gIFwidW5lc2NhcGVcIlxuXTtcblxuY29uc3QgQlVJTFRfSU5fVkFSSUFCTEVTID0gW1xuICBcImFyZ3VtZW50c1wiLFxuICBcInRoaXNcIixcbiAgXCJzdXBlclwiLFxuICBcImNvbnNvbGVcIixcbiAgXCJ3aW5kb3dcIixcbiAgXCJkb2N1bWVudFwiLFxuICBcImxvY2FsU3RvcmFnZVwiLFxuICBcIm1vZHVsZVwiLFxuICBcImdsb2JhbFwiIC8vIE5vZGUuanNcbl07XG5cbmNvbnN0IEJVSUxUX0lOUyA9IFtdLmNvbmNhdChcbiAgQlVJTFRfSU5fR0xPQkFMUyxcbiAgVFlQRVMsXG4gIEVSUk9SX1RZUEVTXG4pO1xuXG4vKlxuTGFuZ3VhZ2U6IEphdmFTY3JpcHRcbkRlc2NyaXB0aW9uOiBKYXZhU2NyaXB0IChKUykgaXMgYSBsaWdodHdlaWdodCwgaW50ZXJwcmV0ZWQsIG9yIGp1c3QtaW4tdGltZSBjb21waWxlZCBwcm9ncmFtbWluZyBsYW5ndWFnZSB3aXRoIGZpcnN0LWNsYXNzIGZ1bmN0aW9ucy5cbkNhdGVnb3J5OiBjb21tb24sIHNjcmlwdGluZywgd2ViXG5XZWJzaXRlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0XG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gamF2YXNjcmlwdChobGpzKSB7XG4gIGNvbnN0IHJlZ2V4ID0gaGxqcy5yZWdleDtcbiAgLyoqXG4gICAqIFRha2VzIGEgc3RyaW5nIGxpa2UgXCI8Qm9vZ2VyXCIgYW5kIGNoZWNrcyB0byBzZWVcbiAgICogaWYgd2UgY2FuIGZpbmQgYSBtYXRjaGluZyBcIjwvQm9vZ2VyXCIgbGF0ZXIgaW4gdGhlXG4gICAqIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7UmVnRXhwTWF0Y2hBcnJheX0gbWF0Y2hcbiAgICogQHBhcmFtIHt7YWZ0ZXI6bnVtYmVyfX0gcGFyYW0xXG4gICAqL1xuICBjb25zdCBoYXNDbG9zaW5nVGFnID0gKG1hdGNoLCB7IGFmdGVyIH0pID0+IHtcbiAgICBjb25zdCB0YWcgPSBcIjwvXCIgKyBtYXRjaFswXS5zbGljZSgxKTtcbiAgICBjb25zdCBwb3MgPSBtYXRjaC5pbnB1dC5pbmRleE9mKHRhZywgYWZ0ZXIpO1xuICAgIHJldHVybiBwb3MgIT09IC0xO1xuICB9O1xuXG4gIGNvbnN0IElERU5UX1JFJDEgPSBJREVOVF9SRTtcbiAgY29uc3QgRlJBR01FTlQgPSB7XG4gICAgYmVnaW46ICc8PicsXG4gICAgZW5kOiAnPC8+J1xuICB9O1xuICAvLyB0byBhdm9pZCBzb21lIHNwZWNpYWwgY2FzZXMgaW5zaWRlIGlzVHJ1bHlPcGVuaW5nVGFnXG4gIGNvbnN0IFhNTF9TRUxGX0NMT1NJTkcgPSAvPFtBLVphLXowLTlcXFxcLl86LV0rXFxzKlxcLz4vO1xuICBjb25zdCBYTUxfVEFHID0ge1xuICAgIGJlZ2luOiAvPFtBLVphLXowLTlcXFxcLl86LV0rLyxcbiAgICBlbmQ6IC9cXC9bQS1aYS16MC05XFxcXC5fOi1dKz58XFwvPi8sXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtSZWdFeHBNYXRjaEFycmF5fSBtYXRjaFxuICAgICAqIEBwYXJhbSB7Q2FsbGJhY2tSZXNwb25zZX0gcmVzcG9uc2VcbiAgICAgKi9cbiAgICBpc1RydWx5T3BlbmluZ1RhZzogKG1hdGNoLCByZXNwb25zZSkgPT4ge1xuICAgICAgY29uc3QgYWZ0ZXJNYXRjaEluZGV4ID0gbWF0Y2hbMF0ubGVuZ3RoICsgbWF0Y2guaW5kZXg7XG4gICAgICBjb25zdCBuZXh0Q2hhciA9IG1hdGNoLmlucHV0W2FmdGVyTWF0Y2hJbmRleF07XG4gICAgICBpZiAoXG4gICAgICAgIC8vIEhUTUwgc2hvdWxkIG5vdCBpbmNsdWRlIGFub3RoZXIgcmF3IGA8YCBpbnNpZGUgYSB0YWdcbiAgICAgICAgLy8gbmVzdGVkIHR5cGU/XG4gICAgICAgIC8vIGA8QXJyYXk8QXJyYXk8bnVtYmVyPj5gLCBldGMuXG4gICAgICAgIG5leHRDaGFyID09PSBcIjxcIiB8fFxuICAgICAgICAvLyB0aGUgLCBnaXZlcyBhd2F5IHRoYXQgdGhpcyBpcyBub3QgSFRNTFxuICAgICAgICAvLyBgPFQsIEEgZXh0ZW5kcyBrZXlvZiBULCBWPmBcbiAgICAgICAgbmV4dENoYXIgPT09IFwiLFwiXG4gICAgICAgICkge1xuICAgICAgICByZXNwb25zZS5pZ25vcmVNYXRjaCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGA8c29tZXRoaW5nPmBcbiAgICAgIC8vIFF1aXRlIHBvc3NpYmx5IGEgdGFnLCBsZXRzIGxvb2sgZm9yIGEgbWF0Y2hpbmcgY2xvc2luZyB0YWcuLi5cbiAgICAgIGlmIChuZXh0Q2hhciA9PT0gXCI+XCIpIHtcbiAgICAgICAgLy8gaWYgd2UgY2Fubm90IGZpbmQgYSBtYXRjaGluZyBjbG9zaW5nIHRhZywgdGhlbiB3ZVxuICAgICAgICAvLyB3aWxsIGlnbm9yZSBpdFxuICAgICAgICBpZiAoIWhhc0Nsb3NpbmdUYWcobWF0Y2gsIHsgYWZ0ZXI6IGFmdGVyTWF0Y2hJbmRleCB9KSkge1xuICAgICAgICAgIHJlc3BvbnNlLmlnbm9yZU1hdGNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gYDxibGFoIC8+YCAoc2VsZi1jbG9zaW5nKVxuICAgICAgLy8gaGFuZGxlZCBieSBzaW1wbGVTZWxmQ2xvc2luZyBydWxlXG5cbiAgICAgIGxldCBtO1xuICAgICAgY29uc3QgYWZ0ZXJNYXRjaCA9IG1hdGNoLmlucHV0LnN1YnN0cmluZyhhZnRlck1hdGNoSW5kZXgpO1xuXG4gICAgICAvLyBzb21lIG1vcmUgdGVtcGxhdGUgdHlwaW5nIHN0dWZmXG4gICAgICAvLyAgPFQgPSBhbnk+KGtleT86IHN0cmluZykgPT4gTW9kaWZ5PFxuICAgICAgaWYgKChtID0gYWZ0ZXJNYXRjaC5tYXRjaCgvXlxccyo9LykpKSB7XG4gICAgICAgIHJlc3BvbnNlLmlnbm9yZU1hdGNoKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gYDxGcm9tIGV4dGVuZHMgc3RyaW5nPmBcbiAgICAgIC8vIHRlY2huaWNhbGx5IHRoaXMgY291bGQgYmUgSFRNTCwgYnV0IGl0IHNtZWxscyBsaWtlIGEgdHlwZVxuICAgICAgLy8gTk9URTogVGhpcyBpcyB1Z2gsIGJ1dCBhZGRlZCBzcGVjaWZpY2FsbHkgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzMyNzZcbiAgICAgIGlmICgobSA9IGFmdGVyTWF0Y2gubWF0Y2goL15cXHMrZXh0ZW5kc1xccysvKSkpIHtcbiAgICAgICAgaWYgKG0uaW5kZXggPT09IDApIHtcbiAgICAgICAgICByZXNwb25zZS5pZ25vcmVNYXRjaCgpO1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLXJldHVyblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgS0VZV09SRFMkMSA9IHtcbiAgICAkcGF0dGVybjogSURFTlRfUkUsXG4gICAga2V5d29yZDogS0VZV09SRFMsXG4gICAgbGl0ZXJhbDogTElURVJBTFMsXG4gICAgYnVpbHRfaW46IEJVSUxUX0lOUyxcbiAgICBcInZhcmlhYmxlLmxhbmd1YWdlXCI6IEJVSUxUX0lOX1ZBUklBQkxFU1xuICB9O1xuXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbGl0ZXJhbHMtbnVtZXJpYy1saXRlcmFsc1xuICBjb25zdCBkZWNpbWFsRGlnaXRzID0gJ1swLTldKF8/WzAtOV0pKic7XG4gIGNvbnN0IGZyYWMgPSBgXFxcXC4oJHtkZWNpbWFsRGlnaXRzfSlgO1xuICAvLyBEZWNpbWFsSW50ZWdlckxpdGVyYWwsIGluY2x1ZGluZyBBbm5leCBCIE5vbk9jdGFsRGVjaW1hbEludGVnZXJMaXRlcmFsXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYWRkaXRpb25hbC1zeW50YXgtbnVtZXJpYy1saXRlcmFsc1xuICBjb25zdCBkZWNpbWFsSW50ZWdlciA9IGAwfFsxLTldKF8/WzAtOV0pKnwwWzAtN10qWzg5XVswLTldKmA7XG4gIGNvbnN0IE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyBEZWNpbWFsTGl0ZXJhbFxuICAgICAgeyBiZWdpbjogYChcXFxcYigke2RlY2ltYWxJbnRlZ2VyfSkoKCR7ZnJhY30pfFxcXFwuKT98KCR7ZnJhY30pKWAgK1xuICAgICAgICBgW2VFXVsrLV0/KCR7ZGVjaW1hbERpZ2l0c30pXFxcXGJgIH0sXG4gICAgICB7IGJlZ2luOiBgXFxcXGIoJHtkZWNpbWFsSW50ZWdlcn0pXFxcXGIoKCR7ZnJhY30pXFxcXGJ8XFxcXC4pP3woJHtmcmFjfSlcXFxcYmAgfSxcblxuICAgICAgLy8gRGVjaW1hbEJpZ0ludGVnZXJMaXRlcmFsXG4gICAgICB7IGJlZ2luOiBgXFxcXGIoMHxbMS05XShfP1swLTldKSopblxcXFxiYCB9LFxuXG4gICAgICAvLyBOb25EZWNpbWFsSW50ZWdlckxpdGVyYWxcbiAgICAgIHsgYmVnaW46IFwiXFxcXGIwW3hYXVswLTlhLWZBLUZdKF8/WzAtOWEtZkEtRl0pKm4/XFxcXGJcIiB9LFxuICAgICAgeyBiZWdpbjogXCJcXFxcYjBbYkJdWzAtMV0oXz9bMC0xXSkqbj9cXFxcYlwiIH0sXG4gICAgICB7IGJlZ2luOiBcIlxcXFxiMFtvT11bMC03XShfP1swLTddKSpuP1xcXFxiXCIgfSxcblxuICAgICAgLy8gTGVnYWN5T2N0YWxJbnRlZ2VyTGl0ZXJhbCAoZG9lcyBub3QgaW5jbHVkZSB1bmRlcnNjb3JlIHNlcGFyYXRvcnMpXG4gICAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFkZGl0aW9uYWwtc3ludGF4LW51bWVyaWMtbGl0ZXJhbHNcbiAgICAgIHsgYmVnaW46IFwiXFxcXGIwWzAtN10rbj9cXFxcYlwiIH0sXG4gICAgXSxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBTVUJTVCA9IHtcbiAgICBjbGFzc05hbWU6ICdzdWJzdCcsXG4gICAgYmVnaW46ICdcXFxcJFxcXFx7JyxcbiAgICBlbmQ6ICdcXFxcfScsXG4gICAga2V5d29yZHM6IEtFWVdPUkRTJDEsXG4gICAgY29udGFpbnM6IFtdIC8vIGRlZmluZWQgbGF0ZXJcbiAgfTtcbiAgY29uc3QgSFRNTF9URU1QTEFURSA9IHtcbiAgICBiZWdpbjogJ2h0bWxgJyxcbiAgICBlbmQ6ICcnLFxuICAgIHN0YXJ0czoge1xuICAgICAgZW5kOiAnYCcsXG4gICAgICByZXR1cm5FbmQ6IGZhbHNlLFxuICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgaGxqcy5CQUNLU0xBU0hfRVNDQVBFLFxuICAgICAgICBTVUJTVFxuICAgICAgXSxcbiAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJ1xuICAgIH1cbiAgfTtcbiAgY29uc3QgQ1NTX1RFTVBMQVRFID0ge1xuICAgIGJlZ2luOiAnY3NzYCcsXG4gICAgZW5kOiAnJyxcbiAgICBzdGFydHM6IHtcbiAgICAgIGVuZDogJ2AnLFxuICAgICAgcmV0dXJuRW5kOiBmYWxzZSxcbiAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgICAgU1VCU1RcbiAgICAgIF0sXG4gICAgICBzdWJMYW5ndWFnZTogJ2NzcydcbiAgICB9XG4gIH07XG4gIGNvbnN0IFRFTVBMQVRFX1NUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAnYCcsXG4gICAgZW5kOiAnYCcsXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFNVQlNUXG4gICAgXVxuICB9O1xuICBjb25zdCBKU0RPQ19DT01NRU5UID0gaGxqcy5DT01NRU5UKFxuICAgIC9cXC9cXCpcXCooPyFcXC8pLyxcbiAgICAnXFxcXCovJyxcbiAgICB7XG4gICAgICByZWxldmFuY2U6IDAsXG4gICAgICBjb250YWluczogW1xuICAgICAgICB7XG4gICAgICAgICAgYmVnaW46ICcoPz1AW0EtWmEtel0rKScsXG4gICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICAgICAgICAgIGJlZ2luOiAnQFtBLVphLXpdKydcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgICAgICAgICBiZWdpbjogJ1xcXFx7JyxcbiAgICAgICAgICAgICAgZW5kOiAnXFxcXH0nLFxuICAgICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiAndmFyaWFibGUnLFxuICAgICAgICAgICAgICBiZWdpbjogSURFTlRfUkUkMSArICcoPz1cXFxccyooLSl8JCknLFxuICAgICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBlYXQgc3BhY2VzIChub3QgbmV3bGluZXMpIHNvIHdlIGNhbiBmaW5kXG4gICAgICAgICAgICAvLyB0eXBlcyBvciB2YXJpYWJsZXNcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYmVnaW46IC8oPz1bXlxcbl0pXFxzLyxcbiAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfVxuICApO1xuICBjb25zdCBDT01NRU5UID0ge1xuICAgIGNsYXNzTmFtZTogXCJjb21tZW50XCIsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIEpTRE9DX0NPTU1FTlQsXG4gICAgICBobGpzLkNfQkxPQ0tfQ09NTUVOVF9NT0RFLFxuICAgICAgaGxqcy5DX0xJTkVfQ09NTUVOVF9NT0RFXG4gICAgXVxuICB9O1xuICBjb25zdCBTVUJTVF9JTlRFUk5BTFMgPSBbXG4gICAgaGxqcy5BUE9TX1NUUklOR19NT0RFLFxuICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgSFRNTF9URU1QTEFURSxcbiAgICBDU1NfVEVNUExBVEUsXG4gICAgVEVNUExBVEVfU1RSSU5HLFxuICAgIC8vIFNraXAgbnVtYmVycyB3aGVuIHRoZXkgYXJlIHBhcnQgb2YgYSB2YXJpYWJsZSBuYW1lXG4gICAgeyBtYXRjaDogL1xcJFxcZCsvIH0sXG4gICAgTlVNQkVSLFxuICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWw6XG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9oaWdobGlnaHRqcy9oaWdobGlnaHQuanMvaXNzdWVzLzMyODhcbiAgICAvLyBobGpzLlJFR0VYUF9NT0RFXG4gIF07XG4gIFNVQlNULmNvbnRhaW5zID0gU1VCU1RfSU5URVJOQUxTXG4gICAgLmNvbmNhdCh7XG4gICAgICAvLyB3ZSBuZWVkIHRvIHBhaXIgdXAge30gaW5zaWRlIG91ciBzdWJzdCB0byBwcmV2ZW50XG4gICAgICAvLyBpdCBmcm9tIGVuZGluZyB0b28gZWFybHkgYnkgbWF0Y2hpbmcgYW5vdGhlciB9XG4gICAgICBiZWdpbjogL1xcey8sXG4gICAgICBlbmQ6IC9cXH0vLFxuICAgICAga2V5d29yZHM6IEtFWVdPUkRTJDEsXG4gICAgICBjb250YWluczogW1xuICAgICAgICBcInNlbGZcIlxuICAgICAgXS5jb25jYXQoU1VCU1RfSU5URVJOQUxTKVxuICAgIH0pO1xuICBjb25zdCBTVUJTVF9BTkRfQ09NTUVOVFMgPSBbXS5jb25jYXQoQ09NTUVOVCwgU1VCU1QuY29udGFpbnMpO1xuICBjb25zdCBQQVJBTVNfQ09OVEFJTlMgPSBTVUJTVF9BTkRfQ09NTUVOVFMuY29uY2F0KFtcbiAgICAvLyBlYXQgcmVjdXJzaXZlIHBhcmVucyBpbiBzdWIgZXhwcmVzc2lvbnNcbiAgICB7XG4gICAgICBiZWdpbjogL1xcKC8sXG4gICAgICBlbmQ6IC9cXCkvLFxuICAgICAga2V5d29yZHM6IEtFWVdPUkRTJDEsXG4gICAgICBjb250YWluczogW1wic2VsZlwiXS5jb25jYXQoU1VCU1RfQU5EX0NPTU1FTlRTKVxuICAgIH1cbiAgXSk7XG4gIGNvbnN0IFBBUkFNUyA9IHtcbiAgICBjbGFzc05hbWU6ICdwYXJhbXMnLFxuICAgIGJlZ2luOiAvXFwoLyxcbiAgICBlbmQ6IC9cXCkvLFxuICAgIGV4Y2x1ZGVCZWdpbjogdHJ1ZSxcbiAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgIGtleXdvcmRzOiBLRVlXT1JEUyQxLFxuICAgIGNvbnRhaW5zOiBQQVJBTVNfQ09OVEFJTlNcbiAgfTtcblxuICAvLyBFUzYgY2xhc3Nlc1xuICBjb25zdCBDTEFTU19PUl9FWFRFTkRTID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICAvLyBjbGFzcyBDYXIgZXh0ZW5kcyB2ZWhpY2xlXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL2NsYXNzLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgSURFTlRfUkUkMSxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgL2V4dGVuZHMvLFxuICAgICAgICAgIC9cXHMrLyxcbiAgICAgICAgICByZWdleC5jb25jYXQoSURFTlRfUkUkMSwgXCIoXCIsIHJlZ2V4LmNvbmNhdCgvXFwuLywgSURFTlRfUkUkMSksIFwiKSpcIilcbiAgICAgICAgXSxcbiAgICAgICAgc2NvcGU6IHtcbiAgICAgICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgICAgICAzOiBcInRpdGxlLmNsYXNzXCIsXG4gICAgICAgICAgNTogXCJrZXl3b3JkXCIsXG4gICAgICAgICAgNzogXCJ0aXRsZS5jbGFzcy5pbmhlcml0ZWRcIlxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gY2xhc3MgQ2FyXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL2NsYXNzLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgSURFTlRfUkUkMVxuICAgICAgICBdLFxuICAgICAgICBzY29wZToge1xuICAgICAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgICAgIDM6IFwidGl0bGUuY2xhc3NcIlxuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IENMQVNTX1JFRkVSRU5DRSA9IHtcbiAgICByZWxldmFuY2U6IDAsXG4gICAgbWF0Y2g6XG4gICAgcmVnZXguZWl0aGVyKFxuICAgICAgLy8gSGFyZCBjb2RlZCBleGNlcHRpb25zXG4gICAgICAvXFxiSlNPTi8sXG4gICAgICAvLyBGbG9hdDMyQXJyYXksIE91dFRcbiAgICAgIC9cXGJbQS1aXVthLXpdKyhbQS1aXVthLXpdKnxcXGQpKi8sXG4gICAgICAvLyBDU1NGYWN0b3J5LCBDU1NGYWN0b3J5VFxuICAgICAgL1xcYltBLVpdezIsfShbQS1aXVthLXpdK3xcXGQpKyhbQS1aXVthLXpdKikqLyxcbiAgICAgIC8vIEZQcywgRlBzVFxuICAgICAgL1xcYltBLVpdezIsfVthLXpdKyhbQS1aXVthLXpdK3xcXGQpKihbQS1aXVthLXpdKikqLyxcbiAgICAgIC8vIFBcbiAgICAgIC8vIHNpbmdsZSBsZXR0ZXJzIGFyZSBub3QgaGlnaGxpZ2h0ZWRcbiAgICAgIC8vIEJMQUhcbiAgICAgIC8vIHRoaXMgd2lsbCBiZSBmbGFnZ2VkIGFzIGEgVVBQRVJfQ0FTRV9DT05TVEFOVCBpbnN0ZWFkXG4gICAgKSxcbiAgICBjbGFzc05hbWU6IFwidGl0bGUuY2xhc3NcIixcbiAgICBrZXl3b3Jkczoge1xuICAgICAgXzogW1xuICAgICAgICAvLyBzZSB3ZSBzdGlsbCBnZXQgcmVsZXZhbmNlIGNyZWRpdCBmb3IgSlMgbGlicmFyeSBjbGFzc2VzXG4gICAgICAgIC4uLlRZUEVTLFxuICAgICAgICAuLi5FUlJPUl9UWVBFU1xuICAgICAgXVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBVU0VfU1RSSUNUID0ge1xuICAgIGxhYmVsOiBcInVzZV9zdHJpY3RcIixcbiAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICByZWxldmFuY2U6IDEwLFxuICAgIGJlZ2luOiAvXlxccypbJ1wiXXVzZSAoc3RyaWN0fGFzbSlbJ1wiXS9cbiAgfTtcblxuICBjb25zdCBGVU5DVElPTl9ERUZJTklUSU9OID0ge1xuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiBbXG4gICAgICAgICAgL2Z1bmN0aW9uLyxcbiAgICAgICAgICAvXFxzKy8sXG4gICAgICAgICAgSURFTlRfUkUkMSxcbiAgICAgICAgICAvKD89XFxzKlxcKCkvXG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICAvLyBhbm9ueW1vdXMgZnVuY3Rpb25cbiAgICAgIHtcbiAgICAgICAgbWF0Y2g6IFtcbiAgICAgICAgICAvZnVuY3Rpb24vLFxuICAgICAgICAgIC9cXHMqKD89XFwoKS9cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDM6IFwidGl0bGUuZnVuY3Rpb25cIlxuICAgIH0sXG4gICAgbGFiZWw6IFwiZnVuYy5kZWZcIixcbiAgICBjb250YWluczogWyBQQVJBTVMgXSxcbiAgICBpbGxlZ2FsOiAvJS9cbiAgfTtcblxuICBjb25zdCBVUFBFUl9DQVNFX0NPTlNUQU5UID0ge1xuICAgIHJlbGV2YW5jZTogMCxcbiAgICBtYXRjaDogL1xcYltBLVpdW0EtWl8wLTldK1xcYi8sXG4gICAgY2xhc3NOYW1lOiBcInZhcmlhYmxlLmNvbnN0YW50XCJcbiAgfTtcblxuICBmdW5jdGlvbiBub25lT2YobGlzdCkge1xuICAgIHJldHVybiByZWdleC5jb25jYXQoXCIoPyFcIiwgbGlzdC5qb2luKFwifFwiKSwgXCIpXCIpO1xuICB9XG5cbiAgY29uc3QgRlVOQ1RJT05fQ0FMTCA9IHtcbiAgICBtYXRjaDogcmVnZXguY29uY2F0KFxuICAgICAgL1xcYi8sXG4gICAgICBub25lT2YoW1xuICAgICAgICAuLi5CVUlMVF9JTl9HTE9CQUxTLFxuICAgICAgICBcInN1cGVyXCIsXG4gICAgICAgIFwiaW1wb3J0XCJcbiAgICAgIF0pLFxuICAgICAgSURFTlRfUkUkMSwgcmVnZXgubG9va2FoZWFkKC9cXCgvKSksXG4gICAgY2xhc3NOYW1lOiBcInRpdGxlLmZ1bmN0aW9uXCIsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG5cbiAgY29uc3QgUFJPUEVSVFlfQUNDRVNTID0ge1xuICAgIGJlZ2luOiByZWdleC5jb25jYXQoL1xcLi8sIHJlZ2V4Lmxvb2thaGVhZChcbiAgICAgIHJlZ2V4LmNvbmNhdChJREVOVF9SRSQxLCAvKD8hWzAtOUEtWmEteiRfKF0pLylcbiAgICApKSxcbiAgICBlbmQ6IElERU5UX1JFJDEsXG4gICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgIGtleXdvcmRzOiBcInByb3RvdHlwZVwiLFxuICAgIGNsYXNzTmFtZTogXCJwcm9wZXJ0eVwiLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuXG4gIGNvbnN0IEdFVFRFUl9PUl9TRVRURVIgPSB7XG4gICAgbWF0Y2g6IFtcbiAgICAgIC9nZXR8c2V0LyxcbiAgICAgIC9cXHMrLyxcbiAgICAgIElERU5UX1JFJDEsXG4gICAgICAvKD89XFwoKS9cbiAgICBdLFxuICAgIGNsYXNzTmFtZToge1xuICAgICAgMTogXCJrZXl3b3JkXCIsXG4gICAgICAzOiBcInRpdGxlLmZ1bmN0aW9uXCJcbiAgICB9LFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7IC8vIGVhdCB0byBhdm9pZCBlbXB0eSBwYXJhbXNcbiAgICAgICAgYmVnaW46IC9cXChcXCkvXG4gICAgICB9LFxuICAgICAgUEFSQU1TXG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IEZVTkNfTEVBRF9JTl9SRSA9ICcoXFxcXCgnICtcbiAgICAnW14oKV0qKFxcXFwoJyArXG4gICAgJ1teKCldKihcXFxcKCcgK1xuICAgICdbXigpXSonICtcbiAgICAnXFxcXClbXigpXSopKicgK1xuICAgICdcXFxcKVteKCldKikqJyArXG4gICAgJ1xcXFwpfCcgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgKyAnKVxcXFxzKj0+JztcblxuICBjb25zdCBGVU5DVElPTl9WQVJJQUJMRSA9IHtcbiAgICBtYXRjaDogW1xuICAgICAgL2NvbnN0fHZhcnxsZXQvLCAvXFxzKy8sXG4gICAgICBJREVOVF9SRSQxLCAvXFxzKi8sXG4gICAgICAvPVxccyovLFxuICAgICAgLyhhc3luY1xccyopPy8sIC8vIGFzeW5jIGlzIG9wdGlvbmFsXG4gICAgICByZWdleC5sb29rYWhlYWQoRlVOQ19MRUFEX0lOX1JFKVxuICAgIF0sXG4gICAga2V5d29yZHM6IFwiYXN5bmNcIixcbiAgICBjbGFzc05hbWU6IHtcbiAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgMzogXCJ0aXRsZS5mdW5jdGlvblwiXG4gICAgfSxcbiAgICBjb250YWluczogW1xuICAgICAgUEFSQU1TXG4gICAgXVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0phdmFzY3JpcHQnLFxuICAgIGFsaWFzZXM6IFsnanMnLCAnanN4JywgJ21qcycsICdjanMnXSxcbiAgICBrZXl3b3JkczogS0VZV09SRFMkMSxcbiAgICAvLyB0aGlzIHdpbGwgYmUgZXh0ZW5kZWQgYnkgVHlwZVNjcmlwdFxuICAgIGV4cG9ydHM6IHsgUEFSQU1TX0NPTlRBSU5TLCBDTEFTU19SRUZFUkVOQ0UgfSxcbiAgICBpbGxlZ2FsOiAvIyg/IVskX0Etel0pLyxcbiAgICBjb250YWluczogW1xuICAgICAgaGxqcy5TSEVCQU5HKHtcbiAgICAgICAgbGFiZWw6IFwic2hlYmFuZ1wiLFxuICAgICAgICBiaW5hcnk6IFwibm9kZVwiLFxuICAgICAgICByZWxldmFuY2U6IDVcbiAgICAgIH0pLFxuICAgICAgVVNFX1NUUklDVCxcbiAgICAgIGhsanMuQVBPU19TVFJJTkdfTU9ERSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBIVE1MX1RFTVBMQVRFLFxuICAgICAgQ1NTX1RFTVBMQVRFLFxuICAgICAgVEVNUExBVEVfU1RSSU5HLFxuICAgICAgQ09NTUVOVCxcbiAgICAgIC8vIFNraXAgbnVtYmVycyB3aGVuIHRoZXkgYXJlIHBhcnQgb2YgYSB2YXJpYWJsZSBuYW1lXG4gICAgICB7IG1hdGNoOiAvXFwkXFxkKy8gfSxcbiAgICAgIE5VTUJFUixcbiAgICAgIENMQVNTX1JFRkVSRU5DRSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnYXR0cicsXG4gICAgICAgIGJlZ2luOiBJREVOVF9SRSQxICsgcmVnZXgubG9va2FoZWFkKCc6JyksXG4gICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgfSxcbiAgICAgIEZVTkNUSU9OX1ZBUklBQkxFLFxuICAgICAgeyAvLyBcInZhbHVlXCIgY29udGFpbmVyXG4gICAgICAgIGJlZ2luOiAnKCcgKyBobGpzLlJFX1NUQVJURVJTX1JFICsgJ3xcXFxcYihjYXNlfHJldHVybnx0aHJvdylcXFxcYilcXFxccyonLFxuICAgICAgICBrZXl3b3JkczogJ3JldHVybiB0aHJvdyBjYXNlJyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIENPTU1FTlQsXG4gICAgICAgICAgaGxqcy5SRUdFWFBfTU9ERSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICdmdW5jdGlvbicsXG4gICAgICAgICAgICAvLyB3ZSBoYXZlIHRvIGNvdW50IHRoZSBwYXJlbnMgdG8gbWFrZSBzdXJlIHdlIGFjdHVhbGx5IGhhdmUgdGhlXG4gICAgICAgICAgICAvLyBjb3JyZWN0IGJvdW5kaW5nICggKSBiZWZvcmUgdGhlID0+LiAgVGhlcmUgY291bGQgYmUgYW55IG51bWJlciBvZlxuICAgICAgICAgICAgLy8gc3ViLWV4cHJlc3Npb25zIGluc2lkZSBhbHNvIHN1cnJvdW5kZWQgYnkgcGFyZW5zLlxuICAgICAgICAgICAgYmVnaW46IEZVTkNfTEVBRF9JTl9SRSxcbiAgICAgICAgICAgIHJldHVybkJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgZW5kOiAnXFxcXHMqPT4nLFxuICAgICAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYmVnaW46IGhsanMuVU5ERVJTQ09SRV9JREVOVF9SRSxcbiAgICAgICAgICAgICAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoXFxzKlxcKS8sXG4gICAgICAgICAgICAgICAgICAgIHNraXA6IHRydWVcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJlZ2luOiAvXFwoLyxcbiAgICAgICAgICAgICAgICAgICAgZW5kOiAvXFwpLyxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUJlZ2luOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBrZXl3b3JkczogS0VZV09SRFMkMSxcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbnM6IFBBUkFNU19DT05UQUlOU1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyAvLyBjb3VsZCBiZSBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIHBhcmFtcyB0byBhIGZ1bmN0aW9uIGNhbGxcbiAgICAgICAgICAgIGJlZ2luOiAvLC8sXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1hdGNoOiAvXFxzKy8sXG4gICAgICAgICAgICByZWxldmFuY2U6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgLy8gSlNYXG4gICAgICAgICAgICB2YXJpYW50czogW1xuICAgICAgICAgICAgICB7IGJlZ2luOiBGUkFHTUVOVC5iZWdpbiwgZW5kOiBGUkFHTUVOVC5lbmQgfSxcbiAgICAgICAgICAgICAgeyBtYXRjaDogWE1MX1NFTEZfQ0xPU0lORyB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IFhNTF9UQUcuYmVnaW4sXG4gICAgICAgICAgICAgICAgLy8gd2UgY2FyZWZ1bGx5IGNoZWNrIHRoZSBvcGVuaW5nIHRhZyB0byBzZWUgaWYgaXQgdHJ1bHlcbiAgICAgICAgICAgICAgICAvLyBpcyBhIHRhZyBhbmQgbm90IGEgZmFsc2UgcG9zaXRpdmVcbiAgICAgICAgICAgICAgICAnb246YmVnaW4nOiBYTUxfVEFHLmlzVHJ1bHlPcGVuaW5nVGFnLFxuICAgICAgICAgICAgICAgIGVuZDogWE1MX1RBRy5lbmRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHN1Ykxhbmd1YWdlOiAneG1sJyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBiZWdpbjogWE1MX1RBRy5iZWdpbixcbiAgICAgICAgICAgICAgICBlbmQ6IFhNTF9UQUcuZW5kLFxuICAgICAgICAgICAgICAgIHNraXA6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGFpbnM6IFsnc2VsZiddXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgRlVOQ1RJT05fREVGSU5JVElPTixcbiAgICAgIHtcbiAgICAgICAgLy8gcHJldmVudCB0aGlzIGZyb20gZ2V0dGluZyBzd2FsbG93ZWQgdXAgYnkgZnVuY3Rpb25cbiAgICAgICAgLy8gc2luY2UgdGhleSBhcHBlYXIgXCJmdW5jdGlvbiBsaWtlXCJcbiAgICAgICAgYmVnaW5LZXl3b3JkczogXCJ3aGlsZSBpZiBzd2l0Y2ggY2F0Y2ggZm9yXCJcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIC8vIHdlIGhhdmUgdG8gY291bnQgdGhlIHBhcmVucyB0byBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGF2ZSB0aGUgY29ycmVjdFxuICAgICAgICAvLyBib3VuZGluZyAoICkuICBUaGVyZSBjb3VsZCBiZSBhbnkgbnVtYmVyIG9mIHN1Yi1leHByZXNzaW9ucyBpbnNpZGVcbiAgICAgICAgLy8gYWxzbyBzdXJyb3VuZGVkIGJ5IHBhcmVucy5cbiAgICAgICAgYmVnaW46ICdcXFxcYig/IWZ1bmN0aW9uKScgKyBobGpzLlVOREVSU0NPUkVfSURFTlRfUkUgK1xuICAgICAgICAgICdcXFxcKCcgKyAvLyBmaXJzdCBwYXJlbnNcbiAgICAgICAgICAnW14oKV0qKFxcXFwoJyArXG4gICAgICAgICAgICAnW14oKV0qKFxcXFwoJyArXG4gICAgICAgICAgICAgICdbXigpXSonICtcbiAgICAgICAgICAgICdcXFxcKVteKCldKikqJyArXG4gICAgICAgICAgJ1xcXFwpW14oKV0qKSonICtcbiAgICAgICAgICAnXFxcXClcXFxccypcXFxceycsIC8vIGVuZCBwYXJlbnNcbiAgICAgICAgcmV0dXJuQmVnaW46dHJ1ZSxcbiAgICAgICAgbGFiZWw6IFwiZnVuYy5kZWZcIixcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBQQVJBTVMsXG4gICAgICAgICAgaGxqcy5pbmhlcml0KGhsanMuVElUTEVfTU9ERSwgeyBiZWdpbjogSURFTlRfUkUkMSwgY2xhc3NOYW1lOiBcInRpdGxlLmZ1bmN0aW9uXCIgfSlcbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIC8vIGNhdGNoIC4uLiBzbyBpdCB3b24ndCB0cmlnZ2VyIHRoZSBwcm9wZXJ0eSBydWxlIGJlbG93XG4gICAgICB7XG4gICAgICAgIG1hdGNoOiAvXFwuXFwuXFwuLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAgUFJPUEVSVFlfQUNDRVNTLFxuICAgICAgLy8gaGFjazogcHJldmVudHMgZGV0ZWN0aW9uIG9mIGtleXdvcmRzIGluIHNvbWUgY2lyY3Vtc3RhbmNlc1xuICAgICAgLy8gLmtleXdvcmQoKVxuICAgICAgLy8gJGtleXdvcmQgPSB4XG4gICAgICB7XG4gICAgICAgIG1hdGNoOiAnXFxcXCQnICsgSURFTlRfUkUkMSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBtYXRjaDogWyAvXFxiY29uc3RydWN0b3IoPz1cXHMqXFwoKS8gXSxcbiAgICAgICAgY2xhc3NOYW1lOiB7IDE6IFwidGl0bGUuZnVuY3Rpb25cIiB9LFxuICAgICAgICBjb250YWluczogWyBQQVJBTVMgXVxuICAgICAgfSxcbiAgICAgIEZVTkNUSU9OX0NBTEwsXG4gICAgICBVUFBFUl9DQVNFX0NPTlNUQU5ULFxuICAgICAgQ0xBU1NfT1JfRVhURU5EUyxcbiAgICAgIEdFVFRFUl9PUl9TRVRURVIsXG4gICAgICB7XG4gICAgICAgIG1hdGNoOiAvXFwkWyguXS8gLy8gcmVsZXZhbmNlIGJvb3N0ZXIgZm9yIGEgcGF0dGVybiBjb21tb24gdG8gSlMgbGliczogYCQoc29tZXRoaW5nKWAgYW5kIGAkLnNvbWV0aGluZ2BcbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbi8qXG5MYW5ndWFnZTogVHlwZVNjcmlwdFxuQXV0aG9yOiBQYW51IEhvcnNtYWxhaHRpIDxwYW51LmhvcnNtYWxhaHRpQGlraS5maT5cbkNvbnRyaWJ1dG9yczogSWtlIEt1IDxkZW1wZmlAeWFob28uY29tPlxuRGVzY3JpcHRpb246IFR5cGVTY3JpcHQgaXMgYSBzdHJpY3Qgc3VwZXJzZXQgb2YgSmF2YVNjcmlwdFxuV2Vic2l0ZTogaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnXG5DYXRlZ29yeTogY29tbW9uLCBzY3JpcHRpbmdcbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiB0eXBlc2NyaXB0KGhsanMpIHtcbiAgY29uc3QgdHNMYW5ndWFnZSA9IGphdmFzY3JpcHQoaGxqcyk7XG5cbiAgY29uc3QgSURFTlRfUkUkMSA9IElERU5UX1JFO1xuICBjb25zdCBUWVBFUyA9IFtcbiAgICBcImFueVwiLFxuICAgIFwidm9pZFwiLFxuICAgIFwibnVtYmVyXCIsXG4gICAgXCJib29sZWFuXCIsXG4gICAgXCJzdHJpbmdcIixcbiAgICBcIm9iamVjdFwiLFxuICAgIFwibmV2ZXJcIixcbiAgICBcInN5bWJvbFwiLFxuICAgIFwiYmlnaW50XCIsXG4gICAgXCJ1bmtub3duXCJcbiAgXTtcbiAgY29uc3QgTkFNRVNQQUNFID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICduYW1lc3BhY2UnLFxuICAgIGVuZDogL1xcey8sXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBjb250YWluczogWyB0c0xhbmd1YWdlLmV4cG9ydHMuQ0xBU1NfUkVGRVJFTkNFIF1cbiAgfTtcbiAgY29uc3QgSU5URVJGQUNFID0ge1xuICAgIGJlZ2luS2V5d29yZHM6ICdpbnRlcmZhY2UnLFxuICAgIGVuZDogL1xcey8sXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDogJ2ludGVyZmFjZSBleHRlbmRzJyxcbiAgICAgIGJ1aWx0X2luOiBUWVBFU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFsgdHNMYW5ndWFnZS5leHBvcnRzLkNMQVNTX1JFRkVSRU5DRSBdXG4gIH07XG4gIGNvbnN0IFVTRV9TVFJJQ1QgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgcmVsZXZhbmNlOiAxMCxcbiAgICBiZWdpbjogL15cXHMqWydcIl11c2Ugc3RyaWN0WydcIl0vXG4gIH07XG4gIGNvbnN0IFRTX1NQRUNJRklDX0tFWVdPUkRTID0gW1xuICAgIFwidHlwZVwiLFxuICAgIFwibmFtZXNwYWNlXCIsXG4gICAgXCJpbnRlcmZhY2VcIixcbiAgICBcInB1YmxpY1wiLFxuICAgIFwicHJpdmF0ZVwiLFxuICAgIFwicHJvdGVjdGVkXCIsXG4gICAgXCJpbXBsZW1lbnRzXCIsXG4gICAgXCJkZWNsYXJlXCIsXG4gICAgXCJhYnN0cmFjdFwiLFxuICAgIFwicmVhZG9ubHlcIixcbiAgICBcImVudW1cIixcbiAgICBcIm92ZXJyaWRlXCJcbiAgXTtcbiAgY29uc3QgS0VZV09SRFMkMSA9IHtcbiAgICAkcGF0dGVybjogSURFTlRfUkUsXG4gICAga2V5d29yZDogS0VZV09SRFMuY29uY2F0KFRTX1NQRUNJRklDX0tFWVdPUkRTKSxcbiAgICBsaXRlcmFsOiBMSVRFUkFMUyxcbiAgICBidWlsdF9pbjogQlVJTFRfSU5TLmNvbmNhdChUWVBFUyksXG4gICAgXCJ2YXJpYWJsZS5sYW5ndWFnZVwiOiBCVUlMVF9JTl9WQVJJQUJMRVNcbiAgfTtcbiAgY29uc3QgREVDT1JBVE9SID0ge1xuICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgIGJlZ2luOiAnQCcgKyBJREVOVF9SRSQxLFxuICB9O1xuXG4gIGNvbnN0IHN3YXBNb2RlID0gKG1vZGUsIGxhYmVsLCByZXBsYWNlbWVudCkgPT4ge1xuICAgIGNvbnN0IGluZHggPSBtb2RlLmNvbnRhaW5zLmZpbmRJbmRleChtID0+IG0ubGFiZWwgPT09IGxhYmVsKTtcbiAgICBpZiAoaW5keCA9PT0gLTEpIHsgdGhyb3cgbmV3IEVycm9yKFwiY2FuIG5vdCBmaW5kIG1vZGUgdG8gcmVwbGFjZVwiKTsgfVxuXG4gICAgbW9kZS5jb250YWlucy5zcGxpY2UoaW5keCwgMSwgcmVwbGFjZW1lbnQpO1xuICB9O1xuXG5cbiAgLy8gdGhpcyBzaG91bGQgdXBkYXRlIGFueXdoZXJlIGtleXdvcmRzIGlzIHVzZWQgc2luY2VcbiAgLy8gaXQgd2lsbCBiZSB0aGUgc2FtZSBhY3R1YWwgSlMgb2JqZWN0XG4gIE9iamVjdC5hc3NpZ24odHNMYW5ndWFnZS5rZXl3b3JkcywgS0VZV09SRFMkMSk7XG5cbiAgdHNMYW5ndWFnZS5leHBvcnRzLlBBUkFNU19DT05UQUlOUy5wdXNoKERFQ09SQVRPUik7XG4gIHRzTGFuZ3VhZ2UuY29udGFpbnMgPSB0c0xhbmd1YWdlLmNvbnRhaW5zLmNvbmNhdChbXG4gICAgREVDT1JBVE9SLFxuICAgIE5BTUVTUEFDRSxcbiAgICBJTlRFUkZBQ0UsXG4gIF0pO1xuXG4gIC8vIFRTIGdldHMgYSBzaW1wbGVyIHNoZWJhbmcgcnVsZSB0aGFuIEpTXG4gIHN3YXBNb2RlKHRzTGFuZ3VhZ2UsIFwic2hlYmFuZ1wiLCBobGpzLlNIRUJBTkcoKSk7XG4gIC8vIEpTIHVzZSBzdHJpY3QgcnVsZSBwdXJwb3NlbHkgZXhjbHVkZXMgYGFzbWAgd2hpY2ggbWFrZXMgbm8gc2Vuc2VcbiAgc3dhcE1vZGUodHNMYW5ndWFnZSwgXCJ1c2Vfc3RyaWN0XCIsIFVTRV9TVFJJQ1QpO1xuXG4gIGNvbnN0IGZ1bmN0aW9uRGVjbGFyYXRpb24gPSB0c0xhbmd1YWdlLmNvbnRhaW5zLmZpbmQobSA9PiBtLmxhYmVsID09PSBcImZ1bmMuZGVmXCIpO1xuICBmdW5jdGlvbkRlY2xhcmF0aW9uLnJlbGV2YW5jZSA9IDA7IC8vICgpID0+IHt9IGlzIG1vcmUgdHlwaWNhbCBpbiBUeXBlU2NyaXB0XG5cbiAgT2JqZWN0LmFzc2lnbih0c0xhbmd1YWdlLCB7XG4gICAgbmFtZTogJ1R5cGVTY3JpcHQnLFxuICAgIGFsaWFzZXM6IFtcbiAgICAgICd0cycsXG4gICAgICAndHN4J1xuICAgIF1cbiAgfSk7XG5cbiAgcmV0dXJuIHRzTGFuZ3VhZ2U7XG59XG5cbmV4cG9ydCB7IHR5cGVzY3JpcHQgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbIklERU5UX1JFIiwiS0VZV09SRFMiLCJMSVRFUkFMUyIsIlRZUEVTIiwiRVJST1JfVFlQRVMiLCJCVUlMVF9JTl9HTE9CQUxTIiwiQlVJTFRfSU5fVkFSSUFCTEVTIiwiQlVJTFRfSU5TIiwiY29uY2F0IiwiamF2YXNjcmlwdCIsImhsanMiLCJyZWdleCIsImhhc0Nsb3NpbmdUYWciLCJtYXRjaCIsImFmdGVyIiwidGFnIiwic2xpY2UiLCJwb3MiLCJpbnB1dCIsImluZGV4T2YiLCJJREVOVF9SRSQxIiwiRlJBR01FTlQiLCJiZWdpbiIsImVuZCIsIlhNTF9TRUxGX0NMT1NJTkciLCJYTUxfVEFHIiwiaXNUcnVseU9wZW5pbmdUYWciLCJyZXNwb25zZSIsImFmdGVyTWF0Y2hJbmRleCIsImxlbmd0aCIsImluZGV4IiwibmV4dENoYXIiLCJpZ25vcmVNYXRjaCIsIm0iLCJhZnRlck1hdGNoIiwic3Vic3RyaW5nIiwiS0VZV09SRFMkMSIsIiRwYXR0ZXJuIiwia2V5d29yZCIsImxpdGVyYWwiLCJidWlsdF9pbiIsImRlY2ltYWxEaWdpdHMiLCJmcmFjIiwiZGVjaW1hbEludGVnZXIiLCJOVU1CRVIiLCJjbGFzc05hbWUiLCJ2YXJpYW50cyIsInJlbGV2YW5jZSIsIlNVQlNUIiwia2V5d29yZHMiLCJjb250YWlucyIsIkhUTUxfVEVNUExBVEUiLCJzdGFydHMiLCJyZXR1cm5FbmQiLCJCQUNLU0xBU0hfRVNDQVBFIiwic3ViTGFuZ3VhZ2UiLCJDU1NfVEVNUExBVEUiLCJURU1QTEFURV9TVFJJTkciLCJKU0RPQ19DT01NRU5UIiwiQ09NTUVOVCIsImV4Y2x1ZGVFbmQiLCJleGNsdWRlQmVnaW4iLCJlbmRzUGFyZW50IiwiQ19CTE9DS19DT01NRU5UX01PREUiLCJDX0xJTkVfQ09NTUVOVF9NT0RFIiwiU1VCU1RfSU5URVJOQUxTIiwiQVBPU19TVFJJTkdfTU9ERSIsIlFVT1RFX1NUUklOR19NT0RFIiwiU1VCU1RfQU5EX0NPTU1FTlRTIiwiUEFSQU1TX0NPTlRBSU5TIiwiUEFSQU1TIiwiQ0xBU1NfT1JfRVhURU5EUyIsInNjb3BlIiwiQ0xBU1NfUkVGRVJFTkNFIiwiZWl0aGVyIiwiXyIsIlVTRV9TVFJJQ1QiLCJsYWJlbCIsIkZVTkNUSU9OX0RFRklOSVRJT04iLCJpbGxlZ2FsIiwiVVBQRVJfQ0FTRV9DT05TVEFOVCIsIm5vbmVPZiIsImxpc3QiLCJqb2luIiwiRlVOQ1RJT05fQ0FMTCIsImxvb2thaGVhZCIsIlBST1BFUlRZX0FDQ0VTUyIsIkdFVFRFUl9PUl9TRVRURVIiLCJGVU5DX0xFQURfSU5fUkUiLCJVTkRFUlNDT1JFX0lERU5UX1JFIiwiRlVOQ1RJT05fVkFSSUFCTEUiLCJuYW1lIiwiYWxpYXNlcyIsImV4cG9ydHMiLCJTSEVCQU5HIiwiYmluYXJ5IiwiUkVfU1RBUlRFUlNfUkUiLCJSRUdFWFBfTU9ERSIsInJldHVybkJlZ2luIiwic2tpcCIsImJlZ2luS2V5d29yZHMiLCJpbmhlcml0IiwiVElUTEVfTU9ERSIsInR5cGVzY3JpcHQiLCJ0c0xhbmd1YWdlIiwiTkFNRVNQQUNFIiwiSU5URVJGQUNFIiwiVFNfU1BFQ0lGSUNfS0VZV09SRFMiLCJERUNPUkFUT1IiLCJzd2FwTW9kZSIsIm1vZGUiLCJyZXBsYWNlbWVudCIsImluZHgiLCJmaW5kSW5kZXgiLCJFcnJvciIsInNwbGljZSIsIk9iamVjdCIsImFzc2lnbiIsInB1c2giLCJmdW5jdGlvbkRlY2xhcmF0aW9uIiwiZmluZCIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/typescript.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/vbnet.js":
/*!*********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/vbnet.js ***!
\*********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ vbnet)\n/* harmony export */ });\n/*\nLanguage: Visual Basic .NET\nDescription: Visual Basic .NET (VB.NET) is a multi-paradigm, object-oriented programming language, implemented on the .NET Framework.\nAuthors: Poren Chiang <ren.chiang@gmail.com>, Jan Pilzer\nWebsite: https://docs.microsoft.com/dotnet/visual-basic/getting-started\nCategory: common\n*/ /** @type LanguageFn */ function vbnet(hljs) {\n const regex = hljs.regex;\n /**\n * Character Literal\n * Either a single character (\"a\"C) or an escaped double quote (\"\"\"\"C).\n */ const CHARACTER = {\n className: \"string\",\n begin: /\"(\"\"|[^/n])\"C\\b/\n };\n const STRING = {\n className: \"string\",\n begin: /\"/,\n end: /\"/,\n illegal: /\\n/,\n contains: [\n {\n // double quote escape\n begin: /\"\"/\n }\n ]\n };\n /** Date Literals consist of a date, a time, or both separated by whitespace, surrounded by # */ const MM_DD_YYYY = /\\d{1,2}\\/\\d{1,2}\\/\\d{4}/;\n const YYYY_MM_DD = /\\d{4}-\\d{1,2}-\\d{1,2}/;\n const TIME_12H = /(\\d|1[012])(:\\d+){0,2} *(AM|PM)/;\n const TIME_24H = /\\d{1,2}(:\\d{1,2}){1,2}/;\n const DATE = {\n className: \"literal\",\n variants: [\n {\n // #YYYY-MM-DD# (ISO-Date) or #M/D/YYYY# (US-Date)\n begin: regex.concat(/# */, regex.either(YYYY_MM_DD, MM_DD_YYYY), / *#/)\n },\n {\n // #H:mm[:ss]# (24h Time)\n begin: regex.concat(/# */, TIME_24H, / *#/)\n },\n {\n // #h[:mm[:ss]] A# (12h Time)\n begin: regex.concat(/# */, TIME_12H, / *#/)\n },\n {\n // date plus time\n begin: regex.concat(/# */, regex.either(YYYY_MM_DD, MM_DD_YYYY), / +/, regex.either(TIME_12H, TIME_24H), / *#/)\n }\n ]\n };\n const NUMBER = {\n className: \"number\",\n relevance: 0,\n variants: [\n {\n // Float\n begin: /\\b\\d[\\d_]*((\\.[\\d_]+(E[+-]?[\\d_]+)?)|(E[+-]?[\\d_]+))[RFD@!#]?/\n },\n {\n // Integer (base 10)\n begin: /\\b\\d[\\d_]*((U?[SIL])|[%&])?/\n },\n {\n // Integer (base 16)\n begin: /&H[\\dA-F_]+((U?[SIL])|[%&])?/\n },\n {\n // Integer (base 8)\n begin: /&O[0-7_]+((U?[SIL])|[%&])?/\n },\n {\n // Integer (base 2)\n begin: /&B[01_]+((U?[SIL])|[%&])?/\n }\n ]\n };\n const LABEL = {\n className: \"label\",\n begin: /^\\w+:/\n };\n const DOC_COMMENT = hljs.COMMENT(/'''/, /$/, {\n contains: [\n {\n className: \"doctag\",\n begin: /<\\/?/,\n end: />/\n }\n ]\n });\n const COMMENT = hljs.COMMENT(null, /$/, {\n variants: [\n {\n begin: /'/\n },\n {\n // TODO: Use multi-class for leading spaces\n begin: /([\\t ]|^)REM(?=\\s)/\n }\n ]\n });\n const DIRECTIVES = {\n className: \"meta\",\n // TODO: Use multi-class for indentation once available\n begin: /[\\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\\b/,\n end: /$/,\n keywords: {\n keyword: \"const disable else elseif enable end externalsource if region then\"\n },\n contains: [\n COMMENT\n ]\n };\n return {\n name: \"Visual Basic .NET\",\n aliases: [\n \"vb\"\n ],\n case_insensitive: true,\n classNameAliases: {\n label: \"symbol\"\n },\n keywords: {\n keyword: \"addhandler alias aggregate ansi as async assembly auto binary by byref byval \" /* a-b */ + \"call case catch class compare const continue custom declare default delegate dim distinct do \" /* c-d */ + \"each equals else elseif end enum erase error event exit explicit finally for friend from function \" /* e-f */ + \"get global goto group handles if implements imports in inherits interface into iterator \" /* g-i */ + \"join key let lib loop me mid module mustinherit mustoverride mybase myclass \" /* j-m */ + \"namespace narrowing new next notinheritable notoverridable \" /* n */ + \"of off on operator option optional order overloads overridable overrides \" /* o */ + \"paramarray partial preserve private property protected public \" /* p */ + \"raiseevent readonly redim removehandler resume return \" /* r */ + \"select set shadows shared skip static step stop structure strict sub synclock \" /* s */ + \"take text then throw to try unicode until using when where while widening with withevents writeonly yield\" /* t-y */ ,\n built_in: // Operators https://docs.microsoft.com/dotnet/visual-basic/language-reference/operators\n \"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor \" + \"cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort\",\n type: // Data types https://docs.microsoft.com/dotnet/visual-basic/language-reference/data-types\n \"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort\",\n literal: \"true false nothing\"\n },\n illegal: \"//|\\\\{|\\\\}|endif|gosub|variant|wend|^\\\\$ \" /* reserved deprecated keywords */ ,\n contains: [\n CHARACTER,\n STRING,\n DATE,\n NUMBER,\n LABEL,\n DOC_COMMENT,\n COMMENT,\n DIRECTIVES\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy92Ym5ldC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7OztBQU1BLEdBRUEscUJBQXFCLEdBQ3JCLFNBQVNBLE1BQU1DLElBQUk7SUFDakIsTUFBTUMsUUFBUUQsS0FBS0MsS0FBSztJQUN4Qjs7O0dBR0MsR0FDRCxNQUFNQyxZQUFZO1FBQ2hCQyxXQUFXO1FBQ1hDLE9BQU87SUFDVDtJQUVBLE1BQU1DLFNBQVM7UUFDYkYsV0FBVztRQUNYQyxPQUFPO1FBQ1BFLEtBQUs7UUFDTEMsU0FBUztRQUNUQyxVQUFVO1lBQ1I7Z0JBQ0Usc0JBQXNCO2dCQUN0QkosT0FBTztZQUFLO1NBQ2Y7SUFDSDtJQUVBLDhGQUE4RixHQUM5RixNQUFNSyxhQUFhO0lBQ25CLE1BQU1DLGFBQWE7SUFDbkIsTUFBTUMsV0FBVztJQUNqQixNQUFNQyxXQUFXO0lBQ2pCLE1BQU1DLE9BQU87UUFDWFYsV0FBVztRQUNYVyxVQUFVO1lBQ1I7Z0JBQ0Usa0RBQWtEO2dCQUNsRFYsT0FBT0gsTUFBTWMsTUFBTSxDQUFDLE9BQU9kLE1BQU1lLE1BQU0sQ0FBQ04sWUFBWUQsYUFBYTtZQUFPO1lBQzFFO2dCQUNFLHlCQUF5QjtnQkFDekJMLE9BQU9ILE1BQU1jLE1BQU0sQ0FBQyxPQUFPSCxVQUFVO1lBQU87WUFDOUM7Z0JBQ0UsNkJBQTZCO2dCQUM3QlIsT0FBT0gsTUFBTWMsTUFBTSxDQUFDLE9BQU9KLFVBQVU7WUFBTztZQUM5QztnQkFDRSxpQkFBaUI7Z0JBQ2pCUCxPQUFPSCxNQUFNYyxNQUFNLENBQ2pCLE9BQ0FkLE1BQU1lLE1BQU0sQ0FBQ04sWUFBWUQsYUFDekIsTUFDQVIsTUFBTWUsTUFBTSxDQUFDTCxVQUFVQyxXQUN2QjtZQUNBO1NBQ0w7SUFDSDtJQUVBLE1BQU1LLFNBQVM7UUFDYmQsV0FBVztRQUNYZSxXQUFXO1FBQ1hKLFVBQVU7WUFDUjtnQkFDRSxRQUFRO2dCQUNSVixPQUFPO1lBQWdFO1lBQ3pFO2dCQUNFLG9CQUFvQjtnQkFDcEJBLE9BQU87WUFBOEI7WUFDdkM7Z0JBQ0Usb0JBQW9CO2dCQUNwQkEsT0FBTztZQUErQjtZQUN4QztnQkFDRSxtQkFBbUI7Z0JBQ25CQSxPQUFPO1lBQTZCO1lBQ3RDO2dCQUNFLG1CQUFtQjtnQkFDbkJBLE9BQU87WUFBNEI7U0FDdEM7SUFDSDtJQUVBLE1BQU1lLFFBQVE7UUFDWmhCLFdBQVc7UUFDWEMsT0FBTztJQUNUO0lBRUEsTUFBTWdCLGNBQWNwQixLQUFLcUIsT0FBTyxDQUFDLE9BQU8sS0FBSztRQUFFYixVQUFVO1lBQ3ZEO2dCQUNFTCxXQUFXO2dCQUNYQyxPQUFPO2dCQUNQRSxLQUFLO1lBQ1A7U0FDRDtJQUFDO0lBRUYsTUFBTWUsVUFBVXJCLEtBQUtxQixPQUFPLENBQUMsTUFBTSxLQUFLO1FBQUVQLFVBQVU7WUFDbEQ7Z0JBQUVWLE9BQU87WUFBSTtZQUNiO2dCQUNFLDJDQUEyQztnQkFDM0NBLE9BQU87WUFBcUI7U0FDL0I7SUFBQztJQUVGLE1BQU1rQixhQUFhO1FBQ2pCbkIsV0FBVztRQUNYLHVEQUF1RDtRQUN2REMsT0FBTztRQUNQRSxLQUFLO1FBQ0xpQixVQUFVO1lBQUVDLFNBQ1I7UUFBcUU7UUFDekVoQixVQUFVO1lBQUVhO1NBQVM7SUFDdkI7SUFFQSxPQUFPO1FBQ0xJLE1BQU07UUFDTkMsU0FBUztZQUFFO1NBQU07UUFDakJDLGtCQUFrQjtRQUNsQkMsa0JBQWtCO1lBQUVDLE9BQU87UUFBUztRQUNwQ04sVUFBVTtZQUNSQyxTQUNFLGdGQUFnRixPQUFPLE1BQ3JGLGdHQUFnRyxPQUFPLE1BQ3ZHLHFHQUFxRyxPQUFPLE1BQzVHLDJGQUEyRixPQUFPLE1BQ2xHLCtFQUErRSxPQUFPLE1BQ3RGLDhEQUE4RCxLQUFLLE1BQ25FLDRFQUE0RSxLQUFLLE1BQ2pGLGlFQUFpRSxLQUFLLE1BQ3RFLHlEQUF5RCxLQUFLLE1BQzlELGlGQUFpRixLQUFLLE1BQ3RGLDRHQUE0RyxPQUFPO1lBQ3ZITSxVQUNFLHdGQUF3RjtZQUN4RixpSkFFRTtZQUNKQyxNQUNFLDBGQUEwRjtZQUMxRjtZQUNGQyxTQUFTO1FBQ1g7UUFDQXpCLFNBQ0UsNENBQTRDLGdDQUFnQztRQUM5RUMsVUFBVTtZQUNSTjtZQUNBRztZQUNBUTtZQUNBSTtZQUNBRTtZQUNBQztZQUNBQztZQUNBQztTQUNEO0lBQ0g7QUFDRjtBQUU0QiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvdmJuZXQuanM/ZmZkNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuTGFuZ3VhZ2U6IFZpc3VhbCBCYXNpYyAuTkVUXG5EZXNjcmlwdGlvbjogVmlzdWFsIEJhc2ljIC5ORVQgKFZCLk5FVCkgaXMgYSBtdWx0aS1wYXJhZGlnbSwgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGxhbmd1YWdlLCBpbXBsZW1lbnRlZCBvbiB0aGUgLk5FVCBGcmFtZXdvcmsuXG5BdXRob3JzOiBQb3JlbiBDaGlhbmcgPHJlbi5jaGlhbmdAZ21haWwuY29tPiwgSmFuIFBpbHplclxuV2Vic2l0ZTogaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZG90bmV0L3Zpc3VhbC1iYXNpYy9nZXR0aW5nLXN0YXJ0ZWRcbkNhdGVnb3J5OiBjb21tb25cbiovXG5cbi8qKiBAdHlwZSBMYW5ndWFnZUZuICovXG5mdW5jdGlvbiB2Ym5ldChobGpzKSB7XG4gIGNvbnN0IHJlZ2V4ID0gaGxqcy5yZWdleDtcbiAgLyoqXG4gICAqIENoYXJhY3RlciBMaXRlcmFsXG4gICAqIEVpdGhlciBhIHNpbmdsZSBjaGFyYWN0ZXIgKFwiYVwiQykgb3IgYW4gZXNjYXBlZCBkb3VibGUgcXVvdGUgKFwiXCJcIlwiQykuXG4gICAqL1xuICBjb25zdCBDSEFSQUNURVIgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICBiZWdpbjogL1wiKFwiXCJ8W14vbl0pXCJDXFxiL1xuICB9O1xuXG4gIGNvbnN0IFNUUklORyA9IHtcbiAgICBjbGFzc05hbWU6ICdzdHJpbmcnLFxuICAgIGJlZ2luOiAvXCIvLFxuICAgIGVuZDogL1wiLyxcbiAgICBpbGxlZ2FsOiAvXFxuLyxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICAvLyBkb3VibGUgcXVvdGUgZXNjYXBlXG4gICAgICAgIGJlZ2luOiAvXCJcIi8gfVxuICAgIF1cbiAgfTtcblxuICAvKiogRGF0ZSBMaXRlcmFscyBjb25zaXN0IG9mIGEgZGF0ZSwgYSB0aW1lLCBvciBib3RoIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLCBzdXJyb3VuZGVkIGJ5ICMgKi9cbiAgY29uc3QgTU1fRERfWVlZWSA9IC9cXGR7MSwyfVxcL1xcZHsxLDJ9XFwvXFxkezR9LztcbiAgY29uc3QgWVlZWV9NTV9ERCA9IC9cXGR7NH0tXFxkezEsMn0tXFxkezEsMn0vO1xuICBjb25zdCBUSU1FXzEySCA9IC8oXFxkfDFbMDEyXSkoOlxcZCspezAsMn0gKihBTXxQTSkvO1xuICBjb25zdCBUSU1FXzI0SCA9IC9cXGR7MSwyfSg6XFxkezEsMn0pezEsMn0vO1xuICBjb25zdCBEQVRFID0ge1xuICAgIGNsYXNzTmFtZTogJ2xpdGVyYWwnLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIC8vICNZWVlZLU1NLUREIyAoSVNPLURhdGUpIG9yICNNL0QvWVlZWSMgKFVTLURhdGUpXG4gICAgICAgIGJlZ2luOiByZWdleC5jb25jYXQoLyMgKi8sIHJlZ2V4LmVpdGhlcihZWVlZX01NX0RELCBNTV9ERF9ZWVlZKSwgLyAqIy8pIH0sXG4gICAgICB7XG4gICAgICAgIC8vICNIOm1tWzpzc10jICgyNGggVGltZSlcbiAgICAgICAgYmVnaW46IHJlZ2V4LmNvbmNhdCgvIyAqLywgVElNRV8yNEgsIC8gKiMvKSB9LFxuICAgICAge1xuICAgICAgICAvLyAjaFs6bW1bOnNzXV0gQSMgKDEyaCBUaW1lKVxuICAgICAgICBiZWdpbjogcmVnZXguY29uY2F0KC8jICovLCBUSU1FXzEySCwgLyAqIy8pIH0sXG4gICAgICB7XG4gICAgICAgIC8vIGRhdGUgcGx1cyB0aW1lXG4gICAgICAgIGJlZ2luOiByZWdleC5jb25jYXQoXG4gICAgICAgICAgLyMgKi8sXG4gICAgICAgICAgcmVnZXguZWl0aGVyKFlZWVlfTU1fREQsIE1NX0REX1lZWVkpLFxuICAgICAgICAgIC8gKy8sXG4gICAgICAgICAgcmVnZXguZWl0aGVyKFRJTUVfMTJILCBUSU1FXzI0SCksXG4gICAgICAgICAgLyAqIy9cbiAgICAgICAgKSB9XG4gICAgXVxuICB9O1xuXG4gIGNvbnN0IE5VTUJFUiA9IHtcbiAgICBjbGFzc05hbWU6ICdudW1iZXInLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICB2YXJpYW50czogW1xuICAgICAge1xuICAgICAgICAvLyBGbG9hdFxuICAgICAgICBiZWdpbjogL1xcYlxcZFtcXGRfXSooKFxcLltcXGRfXSsoRVsrLV0/W1xcZF9dKyk/KXwoRVsrLV0/W1xcZF9dKykpW1JGREAhI10/LyB9LFxuICAgICAge1xuICAgICAgICAvLyBJbnRlZ2VyIChiYXNlIDEwKVxuICAgICAgICBiZWdpbjogL1xcYlxcZFtcXGRfXSooKFU/W1NJTF0pfFslJl0pPy8gfSxcbiAgICAgIHtcbiAgICAgICAgLy8gSW50ZWdlciAoYmFzZSAxNilcbiAgICAgICAgYmVnaW46IC8mSFtcXGRBLUZfXSsoKFU/W1NJTF0pfFslJl0pPy8gfSxcbiAgICAgIHtcbiAgICAgICAgLy8gSW50ZWdlciAoYmFzZSA4KVxuICAgICAgICBiZWdpbjogLyZPWzAtN19dKygoVT9bU0lMXSl8WyUmXSk/LyB9LFxuICAgICAge1xuICAgICAgICAvLyBJbnRlZ2VyIChiYXNlIDIpXG4gICAgICAgIGJlZ2luOiAvJkJbMDFfXSsoKFU/W1NJTF0pfFslJl0pPy8gfVxuICAgIF1cbiAgfTtcblxuICBjb25zdCBMQUJFTCA9IHtcbiAgICBjbGFzc05hbWU6ICdsYWJlbCcsXG4gICAgYmVnaW46IC9eXFx3KzovXG4gIH07XG5cbiAgY29uc3QgRE9DX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoLycnJy8sIC8kLywgeyBjb250YWluczogW1xuICAgIHtcbiAgICAgIGNsYXNzTmFtZTogJ2RvY3RhZycsXG4gICAgICBiZWdpbjogLzxcXC8/LyxcbiAgICAgIGVuZDogLz4vXG4gICAgfVxuICBdIH0pO1xuXG4gIGNvbnN0IENPTU1FTlQgPSBobGpzLkNPTU1FTlQobnVsbCwgLyQvLCB7IHZhcmlhbnRzOiBbXG4gICAgeyBiZWdpbjogLycvIH0sXG4gICAge1xuICAgICAgLy8gVE9ETzogVXNlIG11bHRpLWNsYXNzIGZvciBsZWFkaW5nIHNwYWNlc1xuICAgICAgYmVnaW46IC8oW1xcdCBdfF4pUkVNKD89XFxzKS8gfVxuICBdIH0pO1xuXG4gIGNvbnN0IERJUkVDVElWRVMgPSB7XG4gICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgLy8gVE9ETzogVXNlIG11bHRpLWNsYXNzIGZvciBpbmRlbnRhdGlvbiBvbmNlIGF2YWlsYWJsZVxuICAgIGJlZ2luOiAvW1xcdCBdKiMoY29uc3R8ZGlzYWJsZXxlbHNlfGVsc2VpZnxlbmFibGV8ZW5kfGV4dGVybmFsc291cmNlfGlmfHJlZ2lvbilcXGIvLFxuICAgIGVuZDogLyQvLFxuICAgIGtleXdvcmRzOiB7IGtleXdvcmQ6XG4gICAgICAgICdjb25zdCBkaXNhYmxlIGVsc2UgZWxzZWlmIGVuYWJsZSBlbmQgZXh0ZXJuYWxzb3VyY2UgaWYgcmVnaW9uIHRoZW4nIH0sXG4gICAgY29udGFpbnM6IFsgQ09NTUVOVCBdXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnVmlzdWFsIEJhc2ljIC5ORVQnLFxuICAgIGFsaWFzZXM6IFsgJ3ZiJyBdLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgY2xhc3NOYW1lQWxpYXNlczogeyBsYWJlbDogJ3N5bWJvbCcgfSxcbiAgICBrZXl3b3Jkczoge1xuICAgICAga2V5d29yZDpcbiAgICAgICAgJ2FkZGhhbmRsZXIgYWxpYXMgYWdncmVnYXRlIGFuc2kgYXMgYXN5bmMgYXNzZW1ibHkgYXV0byBiaW5hcnkgYnkgYnlyZWYgYnl2YWwgJyAvKiBhLWIgKi9cbiAgICAgICAgKyAnY2FsbCBjYXNlIGNhdGNoIGNsYXNzIGNvbXBhcmUgY29uc3QgY29udGludWUgY3VzdG9tIGRlY2xhcmUgZGVmYXVsdCBkZWxlZ2F0ZSBkaW0gZGlzdGluY3QgZG8gJyAvKiBjLWQgKi9cbiAgICAgICAgKyAnZWFjaCBlcXVhbHMgZWxzZSBlbHNlaWYgZW5kIGVudW0gZXJhc2UgZXJyb3IgZXZlbnQgZXhpdCBleHBsaWNpdCBmaW5hbGx5IGZvciBmcmllbmQgZnJvbSBmdW5jdGlvbiAnIC8qIGUtZiAqL1xuICAgICAgICArICdnZXQgZ2xvYmFsIGdvdG8gZ3JvdXAgaGFuZGxlcyBpZiBpbXBsZW1lbnRzIGltcG9ydHMgaW4gaW5oZXJpdHMgaW50ZXJmYWNlIGludG8gaXRlcmF0b3IgJyAvKiBnLWkgKi9cbiAgICAgICAgKyAnam9pbiBrZXkgbGV0IGxpYiBsb29wIG1lIG1pZCBtb2R1bGUgbXVzdGluaGVyaXQgbXVzdG92ZXJyaWRlIG15YmFzZSBteWNsYXNzICcgLyogai1tICovXG4gICAgICAgICsgJ25hbWVzcGFjZSBuYXJyb3dpbmcgbmV3IG5leHQgbm90aW5oZXJpdGFibGUgbm90b3ZlcnJpZGFibGUgJyAvKiBuICovXG4gICAgICAgICsgJ29mIG9mZiBvbiBvcGVyYXRvciBvcHRpb24gb3B0aW9uYWwgb3JkZXIgb3ZlcmxvYWRzIG92ZXJyaWRhYmxlIG92ZXJyaWRlcyAnIC8qIG8gKi9cbiAgICAgICAgKyAncGFyYW1hcnJheSBwYXJ0aWFsIHByZXNlcnZlIHByaXZhdGUgcHJvcGVydHkgcHJvdGVjdGVkIHB1YmxpYyAnIC8qIHAgKi9cbiAgICAgICAgKyAncmFpc2VldmVudCByZWFkb25seSByZWRpbSByZW1vdmVoYW5kbGVyIHJlc3VtZSByZXR1cm4gJyAvKiByICovXG4gICAgICAgICsgJ3NlbGVjdCBzZXQgc2hhZG93cyBzaGFyZWQgc2tpcCBzdGF0aWMgc3RlcCBzdG9wIHN0cnVjdHVyZSBzdHJpY3Qgc3ViIHN5bmNsb2NrICcgLyogcyAqL1xuICAgICAgICArICd0YWtlIHRleHQgdGhlbiB0aHJvdyB0byB0cnkgdW5pY29kZSB1bnRpbCB1c2luZyB3aGVuIHdoZXJlIHdoaWxlIHdpZGVuaW5nIHdpdGggd2l0aGV2ZW50cyB3cml0ZW9ubHkgeWllbGQnIC8qIHQteSAqLyxcbiAgICAgIGJ1aWx0X2luOlxuICAgICAgICAvLyBPcGVyYXRvcnMgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZG90bmV0L3Zpc3VhbC1iYXNpYy9sYW5ndWFnZS1yZWZlcmVuY2Uvb3BlcmF0b3JzXG4gICAgICAgICdhZGRyZXNzb2YgYW5kIGFuZGFsc28gYXdhaXQgZGlyZWN0Y2FzdCBnZXR0eXBlIGdldHhtbG5hbWVzcGFjZSBpcyBpc2ZhbHNlIGlzbm90IGlzdHJ1ZSBsaWtlIG1vZCBuYW1lb2YgbmV3IG5vdCBvciBvcmVsc2UgdHJ5Y2FzdCB0eXBlb2YgeG9yICdcbiAgICAgICAgLy8gVHlwZSBDb252ZXJzaW9uIEZ1bmN0aW9ucyBodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9kb3RuZXQvdmlzdWFsLWJhc2ljL2xhbmd1YWdlLXJlZmVyZW5jZS9mdW5jdGlvbnMvdHlwZS1jb252ZXJzaW9uLWZ1bmN0aW9uc1xuICAgICAgICArICdjYm9vbCBjYnl0ZSBjY2hhciBjZGF0ZSBjZGJsIGNkZWMgY2ludCBjbG5nIGNvYmogY3NieXRlIGNzaG9ydCBjc25nIGNzdHIgY3VpbnQgY3VsbmcgY3VzaG9ydCcsXG4gICAgICB0eXBlOlxuICAgICAgICAvLyBEYXRhIHR5cGVzIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2RvdG5ldC92aXN1YWwtYmFzaWMvbGFuZ3VhZ2UtcmVmZXJlbmNlL2RhdGEtdHlwZXNcbiAgICAgICAgJ2Jvb2xlYW4gYnl0ZSBjaGFyIGRhdGUgZGVjaW1hbCBkb3VibGUgaW50ZWdlciBsb25nIG9iamVjdCBzYnl0ZSBzaG9ydCBzaW5nbGUgc3RyaW5nIHVpbnRlZ2VyIHVsb25nIHVzaG9ydCcsXG4gICAgICBsaXRlcmFsOiAndHJ1ZSBmYWxzZSBub3RoaW5nJ1xuICAgIH0sXG4gICAgaWxsZWdhbDpcbiAgICAgICcvL3xcXFxce3xcXFxcfXxlbmRpZnxnb3N1Ynx2YXJpYW50fHdlbmR8XlxcXFwkICcgLyogcmVzZXJ2ZWQgZGVwcmVjYXRlZCBrZXl3b3JkcyAqLyxcbiAgICBjb250YWluczogW1xuICAgICAgQ0hBUkFDVEVSLFxuICAgICAgU1RSSU5HLFxuICAgICAgREFURSxcbiAgICAgIE5VTUJFUixcbiAgICAgIExBQkVMLFxuICAgICAgRE9DX0NPTU1FTlQsXG4gICAgICBDT01NRU5ULFxuICAgICAgRElSRUNUSVZFU1xuICAgIF1cbiAgfTtcbn1cblxuZXhwb3J0IHsgdmJuZXQgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbInZibmV0IiwiaGxqcyIsInJlZ2V4IiwiQ0hBUkFDVEVSIiwiY2xhc3NOYW1lIiwiYmVnaW4iLCJTVFJJTkciLCJlbmQiLCJpbGxlZ2FsIiwiY29udGFpbnMiLCJNTV9ERF9ZWVlZIiwiWVlZWV9NTV9ERCIsIlRJTUVfMTJIIiwiVElNRV8yNEgiLCJEQVRFIiwidmFyaWFudHMiLCJjb25jYXQiLCJlaXRoZXIiLCJOVU1CRVIiLCJyZWxldmFuY2UiLCJMQUJFTCIsIkRPQ19DT01NRU5UIiwiQ09NTUVOVCIsIkRJUkVDVElWRVMiLCJrZXl3b3JkcyIsImtleXdvcmQiLCJuYW1lIiwiYWxpYXNlcyIsImNhc2VfaW5zZW5zaXRpdmUiLCJjbGFzc05hbWVBbGlhc2VzIiwibGFiZWwiLCJidWlsdF9pbiIsInR5cGUiLCJsaXRlcmFsIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/vbnet.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/wasm.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/wasm.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ wasm)\n/* harmony export */ });\n/*\nLanguage: WebAssembly\nWebsite: https://webassembly.org\nDescription: Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.\nCategory: web, common\nAudit: 2020\n*/ /** @type LanguageFn */ function wasm(hljs) {\n hljs.regex;\n const BLOCK_COMMENT = hljs.COMMENT(/\\(;/, /;\\)/);\n BLOCK_COMMENT.contains.push(\"self\");\n const LINE_COMMENT = hljs.COMMENT(/;;/, /$/);\n const KWS = [\n \"anyfunc\",\n \"block\",\n \"br\",\n \"br_if\",\n \"br_table\",\n \"call\",\n \"call_indirect\",\n \"data\",\n \"drop\",\n \"elem\",\n \"else\",\n \"end\",\n \"export\",\n \"func\",\n \"global.get\",\n \"global.set\",\n \"local.get\",\n \"local.set\",\n \"local.tee\",\n \"get_global\",\n \"get_local\",\n \"global\",\n \"if\",\n \"import\",\n \"local\",\n \"loop\",\n \"memory\",\n \"memory.grow\",\n \"memory.size\",\n \"module\",\n \"mut\",\n \"nop\",\n \"offset\",\n \"param\",\n \"result\",\n \"return\",\n \"select\",\n \"set_global\",\n \"set_local\",\n \"start\",\n \"table\",\n \"tee_local\",\n \"then\",\n \"type\",\n \"unreachable\"\n ];\n const FUNCTION_REFERENCE = {\n begin: [\n /(?:func|call|call_indirect)/,\n /\\s+/,\n /\\$[^\\s)]+/\n ],\n className: {\n 1: \"keyword\",\n 3: \"title.function\"\n }\n };\n const ARGUMENT = {\n className: \"variable\",\n begin: /\\$[\\w_]+/\n };\n const PARENS = {\n match: /(\\((?!;)|\\))+/,\n className: \"punctuation\",\n relevance: 0\n };\n const NUMBER = {\n className: \"number\",\n relevance: 0,\n // borrowed from Prism, TODO: split out into variants\n match: /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/\n };\n const TYPE = {\n // look-ahead prevents us from gobbling up opcodes\n match: /(i32|i64|f32|f64)(?!\\.)/,\n className: \"type\"\n };\n const MATH_OPERATIONS = {\n className: \"keyword\",\n // borrowed from Prism, TODO: split out into variants\n match: /\\b(f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))\\b/\n };\n const OFFSET_ALIGN = {\n match: [\n /(?:offset|align)/,\n /\\s*/,\n /=/\n ],\n className: {\n 1: \"keyword\",\n 3: \"operator\"\n }\n };\n return {\n name: \"WebAssembly\",\n keywords: {\n $pattern: /[\\w.]+/,\n keyword: KWS\n },\n contains: [\n LINE_COMMENT,\n BLOCK_COMMENT,\n OFFSET_ALIGN,\n ARGUMENT,\n PARENS,\n FUNCTION_REFERENCE,\n hljs.QUOTE_STRING_MODE,\n TYPE,\n MATH_OPERATIONS,\n NUMBER\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy93YXNtLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7O0FBTUEsR0FFQSxxQkFBcUIsR0FDckIsU0FBU0EsS0FBS0MsSUFBSTtJQUNoQkEsS0FBS0MsS0FBSztJQUNWLE1BQU1DLGdCQUFnQkYsS0FBS0csT0FBTyxDQUFDLE9BQU87SUFDMUNELGNBQWNFLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDO0lBQzVCLE1BQU1DLGVBQWVOLEtBQUtHLE9BQU8sQ0FBQyxNQUFNO0lBRXhDLE1BQU1JLE1BQU07UUFDVjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELE1BQU1DLHFCQUFxQjtRQUN6QkMsT0FBTztZQUNMO1lBQ0E7WUFDQTtTQUNEO1FBQ0RDLFdBQVc7WUFDVCxHQUFHO1lBQ0gsR0FBRztRQUNMO0lBQ0Y7SUFFQSxNQUFNQyxXQUFXO1FBQ2ZELFdBQVc7UUFDWEQsT0FBTztJQUNUO0lBRUEsTUFBTUcsU0FBUztRQUNiQyxPQUFPO1FBQ1BILFdBQVc7UUFDWEksV0FBVztJQUNiO0lBRUEsTUFBTUMsU0FBUztRQUNiTCxXQUFXO1FBQ1hJLFdBQVc7UUFDWCxxREFBcUQ7UUFDckRELE9BQU87SUFDVDtJQUVBLE1BQU1HLE9BQU87UUFDWCxrREFBa0Q7UUFDbERILE9BQU87UUFDUEgsV0FBVztJQUNiO0lBRUEsTUFBTU8sa0JBQWtCO1FBQ3RCUCxXQUFXO1FBQ1gscURBQXFEO1FBQ3JERyxPQUFPO0lBQ1Q7SUFFQSxNQUFNSyxlQUFlO1FBQ25CTCxPQUFPO1lBQ0w7WUFDQTtZQUNBO1NBQ0Q7UUFDREgsV0FBVztZQUNULEdBQUc7WUFDSCxHQUFHO1FBQ0w7SUFDRjtJQUVBLE9BQU87UUFDTFMsTUFBTTtRQUNOQyxVQUFVO1lBQ1JDLFVBQVU7WUFDVkMsU0FBU2Y7UUFDWDtRQUNBSCxVQUFVO1lBQ1JFO1lBQ0FKO1lBQ0FnQjtZQUNBUDtZQUNBQztZQUNBSjtZQUNBUixLQUFLdUIsaUJBQWlCO1lBQ3RCUDtZQUNBQztZQUNBRjtTQUNEO0lBQ0g7QUFDRjtBQUUyQiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMvd2FzbS5qcz8xMzdhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogV2ViQXNzZW1ibHlcbldlYnNpdGU6IGh0dHBzOi8vd2ViYXNzZW1ibHkub3JnXG5EZXNjcmlwdGlvbjogIFdhc20gaXMgZGVzaWduZWQgYXMgYSBwb3J0YWJsZSBjb21waWxhdGlvbiB0YXJnZXQgZm9yIHByb2dyYW1taW5nIGxhbmd1YWdlcywgZW5hYmxpbmcgZGVwbG95bWVudCBvbiB0aGUgd2ViIGZvciBjbGllbnQgYW5kIHNlcnZlciBhcHBsaWNhdGlvbnMuXG5DYXRlZ29yeTogd2ViLCBjb21tb25cbkF1ZGl0OiAyMDIwXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24gd2FzbShobGpzKSB7XG4gIGhsanMucmVnZXg7XG4gIGNvbnN0IEJMT0NLX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoL1xcKDsvLCAvO1xcKS8pO1xuICBCTE9DS19DT01NRU5ULmNvbnRhaW5zLnB1c2goXCJzZWxmXCIpO1xuICBjb25zdCBMSU5FX0NPTU1FTlQgPSBobGpzLkNPTU1FTlQoLzs7LywgLyQvKTtcblxuICBjb25zdCBLV1MgPSBbXG4gICAgXCJhbnlmdW5jXCIsXG4gICAgXCJibG9ja1wiLFxuICAgIFwiYnJcIixcbiAgICBcImJyX2lmXCIsXG4gICAgXCJicl90YWJsZVwiLFxuICAgIFwiY2FsbFwiLFxuICAgIFwiY2FsbF9pbmRpcmVjdFwiLFxuICAgIFwiZGF0YVwiLFxuICAgIFwiZHJvcFwiLFxuICAgIFwiZWxlbVwiLFxuICAgIFwiZWxzZVwiLFxuICAgIFwiZW5kXCIsXG4gICAgXCJleHBvcnRcIixcbiAgICBcImZ1bmNcIixcbiAgICBcImdsb2JhbC5nZXRcIixcbiAgICBcImdsb2JhbC5zZXRcIixcbiAgICBcImxvY2FsLmdldFwiLFxuICAgIFwibG9jYWwuc2V0XCIsXG4gICAgXCJsb2NhbC50ZWVcIixcbiAgICBcImdldF9nbG9iYWxcIixcbiAgICBcImdldF9sb2NhbFwiLFxuICAgIFwiZ2xvYmFsXCIsXG4gICAgXCJpZlwiLFxuICAgIFwiaW1wb3J0XCIsXG4gICAgXCJsb2NhbFwiLFxuICAgIFwibG9vcFwiLFxuICAgIFwibWVtb3J5XCIsXG4gICAgXCJtZW1vcnkuZ3Jvd1wiLFxuICAgIFwibWVtb3J5LnNpemVcIixcbiAgICBcIm1vZHVsZVwiLFxuICAgIFwibXV0XCIsXG4gICAgXCJub3BcIixcbiAgICBcIm9mZnNldFwiLFxuICAgIFwicGFyYW1cIixcbiAgICBcInJlc3VsdFwiLFxuICAgIFwicmV0dXJuXCIsXG4gICAgXCJzZWxlY3RcIixcbiAgICBcInNldF9nbG9iYWxcIixcbiAgICBcInNldF9sb2NhbFwiLFxuICAgIFwic3RhcnRcIixcbiAgICBcInRhYmxlXCIsXG4gICAgXCJ0ZWVfbG9jYWxcIixcbiAgICBcInRoZW5cIixcbiAgICBcInR5cGVcIixcbiAgICBcInVucmVhY2hhYmxlXCJcbiAgXTtcblxuICBjb25zdCBGVU5DVElPTl9SRUZFUkVOQ0UgPSB7XG4gICAgYmVnaW46IFtcbiAgICAgIC8oPzpmdW5jfGNhbGx8Y2FsbF9pbmRpcmVjdCkvLFxuICAgICAgL1xccysvLFxuICAgICAgL1xcJFteXFxzKV0rL1xuICAgIF0sXG4gICAgY2xhc3NOYW1lOiB7XG4gICAgICAxOiBcImtleXdvcmRcIixcbiAgICAgIDM6IFwidGl0bGUuZnVuY3Rpb25cIlxuICAgIH1cbiAgfTtcblxuICBjb25zdCBBUkdVTUVOVCA9IHtcbiAgICBjbGFzc05hbWU6IFwidmFyaWFibGVcIixcbiAgICBiZWdpbjogL1xcJFtcXHdfXSsvXG4gIH07XG5cbiAgY29uc3QgUEFSRU5TID0ge1xuICAgIG1hdGNoOiAvKFxcKCg/ITspfFxcKSkrLyxcbiAgICBjbGFzc05hbWU6IFwicHVuY3R1YXRpb25cIixcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBOVU1CRVIgPSB7XG4gICAgY2xhc3NOYW1lOiBcIm51bWJlclwiLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICAvLyBib3Jyb3dlZCBmcm9tIFByaXNtLCBUT0RPOiBzcGxpdCBvdXQgaW50byB2YXJpYW50c1xuICAgIG1hdGNoOiAvWystXT9cXGIoPzpcXGQoPzpfP1xcZCkqKD86XFwuXFxkKD86Xz9cXGQpKik/KD86W2VFXVsrLV0/XFxkKD86Xz9cXGQpKik/fDB4W1xcZGEtZkEtRl0oPzpfP1tcXGRhLWZBLUZdKSooPzpcXC5bXFxkYS1mQS1GXSg/Ol8/W1xcZGEtZkEtRF0pKik/KD86W3BQXVsrLV0/XFxkKD86Xz9cXGQpKik/KVxcYnxcXGJpbmZcXGJ8XFxibmFuKD86OjB4W1xcZGEtZkEtRl0oPzpfP1tcXGRhLWZBLURdKSopP1xcYi9cbiAgfTtcblxuICBjb25zdCBUWVBFID0ge1xuICAgIC8vIGxvb2stYWhlYWQgcHJldmVudHMgdXMgZnJvbSBnb2JibGluZyB1cCBvcGNvZGVzXG4gICAgbWF0Y2g6IC8oaTMyfGk2NHxmMzJ8ZjY0KSg/IVxcLikvLFxuICAgIGNsYXNzTmFtZTogXCJ0eXBlXCJcbiAgfTtcblxuICBjb25zdCBNQVRIX09QRVJBVElPTlMgPSB7XG4gICAgY2xhc3NOYW1lOiBcImtleXdvcmRcIixcbiAgICAvLyBib3Jyb3dlZCBmcm9tIFByaXNtLCBUT0RPOiBzcGxpdCBvdXQgaW50byB2YXJpYW50c1xuICAgIG1hdGNoOiAvXFxiKGYzMnxmNjR8aTMyfGk2NCkoPzpcXC4oPzphYnN8YWRkfGFuZHxjZWlsfGNsenxjb25zdHxjb252ZXJ0X1tzdV1cXC9pKD86MzJ8NjQpfGNvcHlzaWdufGN0enxkZW1vdGVcXC9mNjR8ZGl2KD86X1tzdV0pP3xlcXo/fGV4dGVuZF9bc3VdXFwvaTMyfGZsb29yfGdlKD86X1tzdV0pP3xndCg/Ol9bc3VdKT98bGUoPzpfW3N1XSk/fGxvYWQoPzooPzo4fDE2fDMyKV9bc3VdKT98bHQoPzpfW3N1XSk/fG1heHxtaW58bXVsfG5lYXJlc3R8bmVnP3xvcnxwb3BjbnR8cHJvbW90ZVxcL2YzMnxyZWludGVycHJldFxcL1tmaV0oPzozMnw2NCl8cmVtX1tzdV18cm90W2xyXXxzaGx8c2hyX1tzdV18c3RvcmUoPzo4fDE2fDMyKT98c3FydHxzdWJ8dHJ1bmMoPzpfW3N1XVxcL2YoPzozMnw2NCkpP3x3cmFwXFwvaTY0fHhvcikpXFxiL1xuICB9O1xuXG4gIGNvbnN0IE9GRlNFVF9BTElHTiA9IHtcbiAgICBtYXRjaDogW1xuICAgICAgLyg/Om9mZnNldHxhbGlnbikvLFxuICAgICAgL1xccyovLFxuICAgICAgLz0vXG4gICAgXSxcbiAgICBjbGFzc05hbWU6IHtcbiAgICAgIDE6IFwia2V5d29yZFwiLFxuICAgICAgMzogXCJvcGVyYXRvclwiXG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ1dlYkFzc2VtYmx5JyxcbiAgICBrZXl3b3Jkczoge1xuICAgICAgJHBhdHRlcm46IC9bXFx3Ll0rLyxcbiAgICAgIGtleXdvcmQ6IEtXU1xuICAgIH0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIExJTkVfQ09NTUVOVCxcbiAgICAgIEJMT0NLX0NPTU1FTlQsXG4gICAgICBPRkZTRVRfQUxJR04sXG4gICAgICBBUkdVTUVOVCxcbiAgICAgIFBBUkVOUyxcbiAgICAgIEZVTkNUSU9OX1JFRkVSRU5DRSxcbiAgICAgIGhsanMuUVVPVEVfU1RSSU5HX01PREUsXG4gICAgICBUWVBFLFxuICAgICAgTUFUSF9PUEVSQVRJT05TLFxuICAgICAgTlVNQkVSXG4gICAgXVxuICB9O1xufVxuXG5leHBvcnQgeyB3YXNtIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6WyJ3YXNtIiwiaGxqcyIsInJlZ2V4IiwiQkxPQ0tfQ09NTUVOVCIsIkNPTU1FTlQiLCJjb250YWlucyIsInB1c2giLCJMSU5FX0NPTU1FTlQiLCJLV1MiLCJGVU5DVElPTl9SRUZFUkVOQ0UiLCJiZWdpbiIsImNsYXNzTmFtZSIsIkFSR1VNRU5UIiwiUEFSRU5TIiwibWF0Y2giLCJyZWxldmFuY2UiLCJOVU1CRVIiLCJUWVBFIiwiTUFUSF9PUEVSQVRJT05TIiwiT0ZGU0VUX0FMSUdOIiwibmFtZSIsImtleXdvcmRzIiwiJHBhdHRlcm4iLCJrZXl3b3JkIiwiUVVPVEVfU1RSSU5HX01PREUiLCJkZWZhdWx0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/wasm.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/xml.js":
/*!*******************************************************!*\
!*** ./node_modules/highlight.js/es/languages/xml.js ***!
\*******************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ xml)\n/* harmony export */ });\n/*\nLanguage: HTML, XML\nWebsite: https://www.w3.org/XML/\nCategory: common, web\nAudit: 2020\n*/ /** @type LanguageFn */ function xml(hljs) {\n const regex = hljs.regex;\n // XML names can have the following additional letters: https://www.w3.org/TR/xml/#NT-NameChar\n // OTHER_NAME_CHARS = /[:\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]/;\n // Element names start with NAME_START_CHAR followed by optional other Unicode letters, ASCII digits, hyphens, underscores, and periods\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);;\n // const XML_IDENT_RE = /[A-Z_a-z:\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]+/;\n // const TAG_NAME_RE = regex.concat(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/, regex.optional(/[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*:/), /[A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*/);\n // however, to cater for performance and more Unicode support rely simply on the Unicode letter class\n const TAG_NAME_RE = regex.concat(/[\\p{L}_]/u, regex.optional(/[\\p{L}0-9_.-]*:/u), /[\\p{L}0-9_.-]*/u);\n const XML_IDENT_RE = /[\\p{L}0-9._:-]+/u;\n const XML_ENTITIES = {\n className: \"symbol\",\n begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/\n };\n const XML_META_KEYWORDS = {\n begin: /\\s/,\n contains: [\n {\n className: \"keyword\",\n begin: /#?[a-z_][a-z1-9_-]+/,\n illegal: /\\n/\n }\n ]\n };\n const XML_META_PAR_KEYWORDS = hljs.inherit(XML_META_KEYWORDS, {\n begin: /\\(/,\n end: /\\)/\n });\n const APOS_META_STRING_MODE = hljs.inherit(hljs.APOS_STRING_MODE, {\n className: \"string\"\n });\n const QUOTE_META_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n className: \"string\"\n });\n const TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /</,\n relevance: 0,\n contains: [\n {\n className: \"attr\",\n begin: XML_IDENT_RE,\n relevance: 0\n },\n {\n begin: /=\\s*/,\n relevance: 0,\n contains: [\n {\n className: \"string\",\n endsParent: true,\n variants: [\n {\n begin: /\"/,\n end: /\"/,\n contains: [\n XML_ENTITIES\n ]\n },\n {\n begin: /'/,\n end: /'/,\n contains: [\n XML_ENTITIES\n ]\n },\n {\n begin: /[^\\s\"'=<>`]+/\n }\n ]\n }\n ]\n }\n ]\n };\n return {\n name: \"HTML, XML\",\n aliases: [\n \"html\",\n \"xhtml\",\n \"rss\",\n \"atom\",\n \"xjb\",\n \"xsd\",\n \"xsl\",\n \"plist\",\n \"wsf\",\n \"svg\"\n ],\n case_insensitive: true,\n unicodeRegex: true,\n contains: [\n {\n className: \"meta\",\n begin: /<![a-z]/,\n end: />/,\n relevance: 10,\n contains: [\n XML_META_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE,\n XML_META_PAR_KEYWORDS,\n {\n begin: /\\[/,\n end: /\\]/,\n contains: [\n {\n className: \"meta\",\n begin: /<![a-z]/,\n end: />/,\n contains: [\n XML_META_KEYWORDS,\n XML_META_PAR_KEYWORDS,\n QUOTE_META_STRING_MODE,\n APOS_META_STRING_MODE\n ]\n }\n ]\n }\n ]\n },\n hljs.COMMENT(/<!--/, /-->/, {\n relevance: 10\n }),\n {\n begin: /<!\\[CDATA\\[/,\n end: /\\]\\]>/,\n relevance: 10\n },\n XML_ENTITIES,\n // xml processing instructions\n {\n className: \"meta\",\n end: /\\?>/,\n variants: [\n {\n begin: /<\\?xml/,\n relevance: 10,\n contains: [\n QUOTE_META_STRING_MODE\n ]\n },\n {\n begin: /<\\?[a-z][a-z0-9]+/\n }\n ]\n },\n {\n className: \"tag\",\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n '<style' as a single word, followed by a whitespace or an\n ending bracket.\n */ begin: /<style(?=\\s|>)/,\n end: />/,\n keywords: {\n name: \"style\"\n },\n contains: [\n TAG_INTERNALS\n ],\n starts: {\n end: /<\\/style>/,\n returnEnd: true,\n subLanguage: [\n \"css\",\n \"xml\"\n ]\n }\n },\n {\n className: \"tag\",\n // See the comment in the <style tag about the lookahead pattern\n begin: /<script(?=\\s|>)/,\n end: />/,\n keywords: {\n name: \"script\"\n },\n contains: [\n TAG_INTERNALS\n ],\n starts: {\n end: /<\\/script>/,\n returnEnd: true,\n subLanguage: [\n \"javascript\",\n \"handlebars\",\n \"xml\"\n ]\n }\n },\n // we need this for now for jSX\n {\n className: \"tag\",\n begin: /<>|<\\/>/\n },\n // open tag\n {\n className: \"tag\",\n begin: regex.concat(/</, regex.lookahead(regex.concat(TAG_NAME_RE, // <tag/>\n // <tag>\n // <tag ...\n regex.either(/\\/>/, />/, /\\s/)))),\n end: /\\/?>/,\n contains: [\n {\n className: \"name\",\n begin: TAG_NAME_RE,\n relevance: 0,\n starts: TAG_INTERNALS\n }\n ]\n },\n // close tag\n {\n className: \"tag\",\n begin: regex.concat(/<\\//, regex.lookahead(regex.concat(TAG_NAME_RE, />/))),\n contains: [\n {\n className: \"name\",\n begin: TAG_NAME_RE,\n relevance: 0\n },\n {\n begin: />/,\n relevance: 0,\n endsParent: true\n }\n ]\n }\n ]\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy94bWwuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7OztBQUtBLEdBRUEscUJBQXFCLEdBQ3JCLFNBQVNBLElBQUlDLElBQUk7SUFDZixNQUFNQyxRQUFRRCxLQUFLQyxLQUFLO0lBQ3hCLDhGQUE4RjtJQUM5RixrRUFBa0U7SUFDbEUsdUlBQXVJO0lBQ3ZJLHdsQkFBd2xCO0lBQ3hsQiwyTkFBMk47SUFDM04sdWxCQUF1bEI7SUFDdmxCLHFHQUFxRztJQUNyRyxNQUFNQyxjQUFjRCxNQUFNRSxNQUFNLENBQUMsYUFBYUYsTUFBTUcsUUFBUSxDQUFDLHFCQUFxQjtJQUNsRixNQUFNQyxlQUFlO0lBQ3JCLE1BQU1DLGVBQWU7UUFDbkJDLFdBQVc7UUFDWEMsT0FBTztJQUNUO0lBQ0EsTUFBTUMsb0JBQW9CO1FBQ3hCRCxPQUFPO1FBQ1BFLFVBQVU7WUFDUjtnQkFDRUgsV0FBVztnQkFDWEMsT0FBTztnQkFDUEcsU0FBUztZQUNYO1NBQ0Q7SUFDSDtJQUNBLE1BQU1DLHdCQUF3QlosS0FBS2EsT0FBTyxDQUFDSixtQkFBbUI7UUFDNURELE9BQU87UUFDUE0sS0FBSztJQUNQO0lBQ0EsTUFBTUMsd0JBQXdCZixLQUFLYSxPQUFPLENBQUNiLEtBQUtnQixnQkFBZ0IsRUFBRTtRQUFFVCxXQUFXO0lBQVM7SUFDeEYsTUFBTVUseUJBQXlCakIsS0FBS2EsT0FBTyxDQUFDYixLQUFLa0IsaUJBQWlCLEVBQUU7UUFBRVgsV0FBVztJQUFTO0lBQzFGLE1BQU1ZLGdCQUFnQjtRQUNwQkMsZ0JBQWdCO1FBQ2hCVCxTQUFTO1FBQ1RVLFdBQVc7UUFDWFgsVUFBVTtZQUNSO2dCQUNFSCxXQUFXO2dCQUNYQyxPQUFPSDtnQkFDUGdCLFdBQVc7WUFDYjtZQUNBO2dCQUNFYixPQUFPO2dCQUNQYSxXQUFXO2dCQUNYWCxVQUFVO29CQUNSO3dCQUNFSCxXQUFXO3dCQUNYZSxZQUFZO3dCQUNaQyxVQUFV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ZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMveG1sLmpzPzFkZjQiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkxhbmd1YWdlOiBIVE1MLCBYTUxcbldlYnNpdGU6IGh0dHBzOi8vd3d3LnczLm9yZy9YTUwvXG5DYXRlZ29yeTogY29tbW9uLCB3ZWJcbkF1ZGl0OiAyMDIwXG4qL1xuXG4vKiogQHR5cGUgTGFuZ3VhZ2VGbiAqL1xuZnVuY3Rpb24geG1sKGhsanMpIHtcbiAgY29uc3QgcmVnZXggPSBobGpzLnJlZ2V4O1xuICAvLyBYTUwgbmFtZXMgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGxldHRlcnM6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi94bWwvI05ULU5hbWVDaGFyXG4gIC8vIE9USEVSX05BTUVfQ0hBUlMgPSAvWzpcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0vO1xuICAvLyBFbGVtZW50IG5hbWVzIHN0YXJ0IHdpdGggTkFNRV9TVEFSVF9DSEFSIGZvbGxvd2VkIGJ5IG9wdGlvbmFsIG90aGVyIFVuaWNvZGUgbGV0dGVycywgQVNDSUkgZGlnaXRzLCBoeXBoZW5zLCB1bmRlcnNjb3JlcywgYW5kIHBlcmlvZHNcbiAgLy8gY29uc3QgVEFHX05BTUVfUkUgPSByZWdleC5jb25jYXQoL1tBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXS8sIHJlZ2V4Lm9wdGlvbmFsKC9bQS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSo6LyksIC9bQS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSovKTs7XG4gIC8vIGNvbnN0IFhNTF9JREVOVF9SRSA9IC9bQS1aX2EtejpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1MjA0MF0rLztcbiAgLy8gY29uc3QgVEFHX05BTUVfUkUgPSByZWdleC5jb25jYXQoL1tBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXS8sIHJlZ2V4Lm9wdGlvbmFsKC9bQS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSo6LyksIC9bQS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSovKTtcbiAgLy8gaG93ZXZlciwgdG8gY2F0ZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBtb3JlIFVuaWNvZGUgc3VwcG9ydCByZWx5IHNpbXBseSBvbiB0aGUgVW5pY29kZSBsZXR0ZXIgY2xhc3NcbiAgY29uc3QgVEFHX05BTUVfUkUgPSByZWdleC5jb25jYXQoL1tcXHB7TH1fXS91LCByZWdleC5vcHRpb25hbCgvW1xccHtMfTAtOV8uLV0qOi91KSwgL1tcXHB7TH0wLTlfLi1dKi91KTtcbiAgY29uc3QgWE1MX0lERU5UX1JFID0gL1tcXHB7TH0wLTkuXzotXSsvdTtcbiAgY29uc3QgWE1MX0VOVElUSUVTID0ge1xuICAgIGNsYXNzTmFtZTogJ3N5bWJvbCcsXG4gICAgYmVnaW46IC8mW2Etel0rO3wmI1swLTldKzt8JiN4W2EtZjAtOV0rOy9cbiAgfTtcbiAgY29uc3QgWE1MX01FVEFfS0VZV09SRFMgPSB7XG4gICAgYmVnaW46IC9cXHMvLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ2tleXdvcmQnLFxuICAgICAgICBiZWdpbjogLyM/W2Etel9dW2EtejEtOV8tXSsvLFxuICAgICAgICBpbGxlZ2FsOiAvXFxuL1xuICAgICAgfVxuICAgIF1cbiAgfTtcbiAgY29uc3QgWE1MX01FVEFfUEFSX0tFWVdPUkRTID0gaGxqcy5pbmhlcml0KFhNTF9NRVRBX0tFWVdPUkRTLCB7XG4gICAgYmVnaW46IC9cXCgvLFxuICAgIGVuZDogL1xcKS9cbiAgfSk7XG4gIGNvbnN0IEFQT1NfTUVUQV9TVFJJTkdfTU9ERSA9IGhsanMuaW5oZXJpdChobGpzLkFQT1NfU1RSSU5HX01PREUsIHsgY2xhc3NOYW1lOiAnc3RyaW5nJyB9KTtcbiAgY29uc3QgUVVPVEVfTUVUQV9TVFJJTkdfTU9ERSA9IGhsanMuaW5oZXJpdChobGpzLlFVT1RFX1NUUklOR19NT0RFLCB7IGNsYXNzTmFtZTogJ3N0cmluZycgfSk7XG4gIGNvbnN0IFRBR19JTlRFUk5BTFMgPSB7XG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgaWxsZWdhbDogLzwvLFxuICAgIHJlbGV2YW5jZTogMCxcbiAgICBjb250YWluczogW1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdhdHRyJyxcbiAgICAgICAgYmVnaW46IFhNTF9JREVOVF9SRSxcbiAgICAgICAgcmVsZXZhbmNlOiAwXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBiZWdpbjogLz1cXHMqLyxcbiAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gICAgICAgICAgICBlbmRzUGFyZW50OiB0cnVlLFxuICAgICAgICAgICAgdmFyaWFudHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICAgICAgICAgIGVuZDogL1wiLyxcbiAgICAgICAgICAgICAgICBjb250YWluczogWyBYTUxfRU5USVRJRVMgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYmVnaW46IC8nLyxcbiAgICAgICAgICAgICAgICBlbmQ6IC8nLyxcbiAgICAgICAgICAgICAgICBjb250YWluczogWyBYTUxfRU5USVRJRVMgXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7IGJlZ2luOiAvW15cXHNcIic9PD5gXSsvIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ0hUTUwsIFhNTCcsXG4gICAgYWxpYXNlczogW1xuICAgICAgJ2h0bWwnLFxuICAgICAgJ3hodG1sJyxcbiAgICAgICdyc3MnLFxuICAgICAgJ2F0b20nLFxuICAgICAgJ3hqYicsXG4gICAgICAneHNkJyxcbiAgICAgICd4c2wnLFxuICAgICAgJ3BsaXN0JyxcbiAgICAgICd3c2YnLFxuICAgICAgJ3N2ZydcbiAgICBdLFxuICAgIGNhc2VfaW5zZW5zaXRpdmU6IHRydWUsXG4gICAgdW5pY29kZVJlZ2V4OiB0cnVlLFxuICAgIGNvbnRhaW5zOiBbXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ21ldGEnLFxuICAgICAgICBiZWdpbjogLzwhW2Etel0vLFxuICAgICAgICBlbmQ6IC8+LyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMCxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICBYTUxfTUVUQV9LRVlXT1JEUyxcbiAgICAgICAgICBRVU9URV9NRVRBX1NUUklOR19NT0RFLFxuICAgICAgICAgIEFQT1NfTUVUQV9TVFJJTkdfTU9ERSxcbiAgICAgICAgICBYTUxfTUVUQV9QQVJfS0VZV09SRFMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC9cXFsvLFxuICAgICAgICAgICAgZW5kOiAvXFxdLyxcbiAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgICAgICAgICBiZWdpbjogLzwhW2Etel0vLFxuICAgICAgICAgICAgICAgIGVuZDogLz4vLFxuICAgICAgICAgICAgICAgIGNvbnRhaW5zOiBbXG4gICAgICAgICAgICAgICAgICBYTUxfTUVUQV9LRVlXT1JEUyxcbiAgICAgICAgICAgICAgICAgIFhNTF9NRVRBX1BBUl9LRVlXT1JEUyxcbiAgICAgICAgICAgICAgICAgIFFVT1RFX01FVEFfU1RSSU5HX01PREUsXG4gICAgICAgICAgICAgICAgICBBUE9TX01FVEFfU1RSSU5HX01PREVcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBobGpzLkNPTU1FTlQoXG4gICAgICAgIC88IS0tLyxcbiAgICAgICAgLy0tPi8sXG4gICAgICAgIHsgcmVsZXZhbmNlOiAxMCB9XG4gICAgICApLFxuICAgICAge1xuICAgICAgICBiZWdpbjogLzwhXFxbQ0RBVEFcXFsvLFxuICAgICAgICBlbmQ6IC9cXF1cXF0+LyxcbiAgICAgICAgcmVsZXZhbmNlOiAxMFxuICAgICAgfSxcbiAgICAgIFhNTF9FTlRJVElFUyxcbiAgICAgIC8vIHhtbCBwcm9jZXNzaW5nIGluc3RydWN0aW9uc1xuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgICAgZW5kOiAvXFw/Pi8sXG4gICAgICAgIHZhcmlhbnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC88XFw/eG1sLyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMTAsXG4gICAgICAgICAgICBjb250YWluczogW1xuICAgICAgICAgICAgICBRVU9URV9NRVRBX1NUUklOR19NT0RFXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBiZWdpbjogLzxcXD9bYS16XVthLXowLTldKy8sXG4gICAgICAgICAgfVxuICAgICAgICBdXG5cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIC8qXG4gICAgICAgIFRoZSBsb29rYWhlYWQgcGF0dGVybiAoPz0uLi4pIGVuc3VyZXMgdGhhdCAnYmVnaW4nIG9ubHkgbWF0Y2hlc1xuICAgICAgICAnPHN0eWxlJyBhcyBhIHNpbmdsZSB3b3JkLCBmb2xsb3dlZCBieSBhIHdoaXRlc3BhY2Ugb3IgYW5cbiAgICAgICAgZW5kaW5nIGJyYWNrZXQuXG4gICAgICAgICovXG4gICAgICAgIGJlZ2luOiAvPHN0eWxlKD89XFxzfD4pLyxcbiAgICAgICAgZW5kOiAvPi8sXG4gICAgICAgIGtleXdvcmRzOiB7IG5hbWU6ICdzdHlsZScgfSxcbiAgICAgICAgY29udGFpbnM6IFsgVEFHX0lOVEVSTkFMUyBdLFxuICAgICAgICBzdGFydHM6IHtcbiAgICAgICAgICBlbmQ6IC88XFwvc3R5bGU+LyxcbiAgICAgICAgICByZXR1cm5FbmQ6IHRydWUsXG4gICAgICAgICAgc3ViTGFuZ3VhZ2U6IFtcbiAgICAgICAgICAgICdjc3MnLFxuICAgICAgICAgICAgJ3htbCdcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIC8vIFNlZSB0aGUgY29tbWVudCBpbiB0aGUgPHN0eWxlIHRhZyBhYm91dCB0aGUgbG9va2FoZWFkIHBhdHRlcm5cbiAgICAgICAgYmVnaW46IC88c2NyaXB0KD89XFxzfD4pLyxcbiAgICAgICAgZW5kOiAvPi8sXG4gICAgICAgIGtleXdvcmRzOiB7IG5hbWU6ICdzY3JpcHQnIH0sXG4gICAgICAgIGNvbnRhaW5zOiBbIFRBR19JTlRFUk5BTFMgXSxcbiAgICAgICAgc3RhcnRzOiB7XG4gICAgICAgICAgZW5kOiAvPFxcL3NjcmlwdD4vLFxuICAgICAgICAgIHJldHVybkVuZDogdHJ1ZSxcbiAgICAgICAgICBzdWJMYW5ndWFnZTogW1xuICAgICAgICAgICAgJ2phdmFzY3JpcHQnLFxuICAgICAgICAgICAgJ2hhbmRsZWJhcnMnLFxuICAgICAgICAgICAgJ3htbCdcbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyB3ZSBuZWVkIHRoaXMgZm9yIG5vdyBmb3IgalNYXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIGJlZ2luOiAvPD58PFxcLz4vXG4gICAgICB9LFxuICAgICAgLy8gb3BlbiB0YWdcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAndGFnJyxcbiAgICAgICAgYmVnaW46IHJlZ2V4LmNvbmNhdChcbiAgICAgICAgICAvPC8sXG4gICAgICAgICAgcmVnZXgubG9va2FoZWFkKHJlZ2V4LmNvbmNhdChcbiAgICAgICAgICAgIFRBR19OQU1FX1JFLFxuICAgICAgICAgICAgLy8gPHRhZy8+XG4gICAgICAgICAgICAvLyA8dGFnPlxuICAgICAgICAgICAgLy8gPHRhZyAuLi5cbiAgICAgICAgICAgIHJlZ2V4LmVpdGhlcigvXFwvPi8sIC8+LywgL1xccy8pXG4gICAgICAgICAgKSlcbiAgICAgICAgKSxcbiAgICAgICAgZW5kOiAvXFwvPz4vLFxuICAgICAgICBjb250YWluczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgYmVnaW46IFRBR19OQU1FX1JFLFxuICAgICAgICAgICAgcmVsZXZhbmNlOiAwLFxuICAgICAgICAgICAgc3RhcnRzOiBUQUdfSU5URVJOQUxTXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgLy8gY2xvc2UgdGFnXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3RhZycsXG4gICAgICAgIGJlZ2luOiByZWdleC5jb25jYXQoXG4gICAgICAgICAgLzxcXC8vLFxuICAgICAgICAgIHJlZ2V4Lmxvb2thaGVhZChyZWdleC5jb25jYXQoXG4gICAgICAgICAgICBUQUdfTkFNRV9SRSwgLz4vXG4gICAgICAgICAgKSlcbiAgICAgICAgKSxcbiAgICAgICAgY29udGFpbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjbGFzc05hbWU6ICduYW1lJyxcbiAgICAgICAgICAgIGJlZ2luOiBUQUdfTkFNRV9SRSxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmVnaW46IC8+LyxcbiAgICAgICAgICAgIHJlbGV2YW5jZTogMCxcbiAgICAgICAgICAgIGVuZHNQYXJlbnQ6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH1cbiAgICBdXG4gIH07XG59XG5cbmV4cG9ydCB7IHhtbCBhcyBkZWZhdWx0IH07XG4iXSwibmFtZXMiOlsieG1sIiwiaGxqcyIsInJlZ2V4IiwiVEFHX05BTUVfUkUiLCJjb25jYXQiLCJvcHRpb25hbCIsIlhNTF9JREVOVF9SRSIsIlhNTF9FTlRJVElFUyIsImNsYXNzTmFtZSIsImJlZ2luIiwiWE1MX01FVEFfS0VZV09SRFMiLCJjb250YWlucyIsImlsbGVnYWwiLCJYTUxfTUVUQV9QQVJfS0VZV09SRFMiLCJpbmhlcml0IiwiZW5kIiwiQVBPU19NRVRBX1NUUklOR19NT0RFIiwiQVBPU19TVFJJTkdfTU9ERSIsIlFVT1RFX01FVEFfU1RSSU5HX01PREUiLCJRVU9URV9TVFJJTkdfTU9ERSIsIlRBR19JTlRFUk5BTFMiLCJlbmRzV2l0aFBhcmVudCIsInJlbGV2YW5jZSIsImVuZHNQYXJlbnQiLCJ2YXJpYW50cyIsIm5hbWUiLCJhbGlhc2VzIiwiY2FzZV9pbnNlbnNpdGl2ZSIsInVuaWNvZGVSZWdleCIsIkNPTU1FTlQiLCJrZXl3b3JkcyIsInN0YXJ0cyIsInJldHVybkVuZCIsInN1Ykxhbmd1YWdlIiwibG9va2FoZWFkIiwiZWl0aGVyIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/xml.js\n");
/***/ }),
/***/ "(ssr)/./node_modules/highlight.js/es/languages/yaml.js":
/*!********************************************************!*\
!*** ./node_modules/highlight.js/es/languages/yaml.js ***!
\********************************************************/
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ yaml)\n/* harmony export */ });\n/*\nLanguage: YAML\nDescription: Yet Another Markdown Language\nAuthor: Stefan Wienert <stwienert@gmail.com>\nContributors: Carl Baxter <carl@cbax.tech>\nRequires: ruby.js\nWebsite: https://yaml.org\nCategory: common, config\n*/ function yaml(hljs) {\n const LITERALS = \"true false yes no null\";\n // YAML spec allows non-reserved URI characters in tags.\n const URI_CHARACTERS = \"[\\\\w#;/?:@&=+$,.~*'()[\\\\]]+\";\n // Define keys as starting with a word character\n // ...containing word chars, spaces, colons, forward-slashes, hyphens and periods\n // ...and ending with a colon followed immediately by a space, tab or newline.\n // The YAML spec allows for much more than this, but this covers most use-cases.\n const KEY = {\n className: \"attr\",\n variants: [\n {\n begin: \"\\\\w[\\\\w :\\\\/.-]*:(?=[ \t]|$)\"\n },\n {\n begin: '\"\\\\w[\\\\w :\\\\/.-]*\":(?=[ \t]|$)'\n },\n {\n begin: \"'\\\\w[\\\\w :\\\\/.-]*':(?=[ \t]|$)\"\n }\n ]\n };\n const TEMPLATE_VARIABLES = {\n className: \"template-variable\",\n variants: [\n {\n begin: /\\{\\{/,\n end: /\\}\\}/\n },\n {\n begin: /%\\{/,\n end: /\\}/\n }\n ]\n };\n const STRING = {\n className: \"string\",\n relevance: 0,\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /\\S+/\n }\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n // Strings inside of value containers (objects) can't contain braces,\n // brackets, or commas\n const CONTAINER_STRING = hljs.inherit(STRING, {\n variants: [\n {\n begin: /'/,\n end: /'/\n },\n {\n begin: /\"/,\n end: /\"/\n },\n {\n begin: /[^\\s,{}[\\]]+/\n }\n ]\n });\n const DATE_RE = \"[0-9]{4}(-[0-9][0-9]){0,2}\";\n const TIME_RE = \"([Tt \\\\t][0-9][0-9]?(:[0-9][0-9]){2})?\";\n const FRACTION_RE = \"(\\\\.[0-9]*)?\";\n const ZONE_RE = \"([ \\\\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\";\n const TIMESTAMP = {\n className: \"number\",\n begin: \"\\\\b\" + DATE_RE + TIME_RE + FRACTION_RE + ZONE_RE + \"\\\\b\"\n };\n const VALUE_CONTAINER = {\n end: \",\",\n endsWithParent: true,\n excludeEnd: true,\n keywords: LITERALS,\n relevance: 0\n };\n const OBJECT = {\n begin: /\\{/,\n end: /\\}/,\n contains: [\n VALUE_CONTAINER\n ],\n illegal: \"\\\\n\",\n relevance: 0\n };\n const ARRAY = {\n begin: \"\\\\[\",\n end: \"\\\\]\",\n contains: [\n VALUE_CONTAINER\n ],\n illegal: \"\\\\n\",\n relevance: 0\n };\n const MODES = [\n KEY,\n {\n className: \"meta\",\n begin: \"^---\\\\s*$\",\n relevance: 10\n },\n {\n // Blocks start with a | or > followed by a newline\n //\n // Indentation of subsequent lines must be the same to\n // be considered part of the block\n className: \"string\",\n begin: \"[\\\\|>]([1-9]?[+-])?[ ]*\\\\n( +)[^ ][^\\\\n]*\\\\n(\\\\2[^\\\\n]+\\\\n?)*\"\n },\n {\n begin: \"<%[%=-]?\",\n end: \"[%-]?%>\",\n subLanguage: \"ruby\",\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n {\n className: \"type\",\n begin: \"!\\\\w+!\" + URI_CHARACTERS\n },\n // https://yaml.org/spec/1.2/spec.html#id2784064\n {\n className: \"type\",\n begin: \"!<\" + URI_CHARACTERS + \">\"\n },\n {\n className: \"type\",\n begin: \"!\" + URI_CHARACTERS\n },\n {\n className: \"type\",\n begin: \"!!\" + URI_CHARACTERS\n },\n {\n className: \"meta\",\n begin: \"&\" + hljs.UNDERSCORE_IDENT_RE + \"$\"\n },\n {\n className: \"meta\",\n begin: \"\\\\*\" + hljs.UNDERSCORE_IDENT_RE + \"$\"\n },\n {\n className: \"bullet\",\n // TODO: remove |$ hack when we have proper look-ahead support\n begin: \"-(?=[ ]|$)\",\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: {\n literal: LITERALS\n }\n },\n TIMESTAMP,\n // numbers are any valid C-style number that\n // sit isolated from other words\n {\n className: \"number\",\n begin: hljs.C_NUMBER_RE + \"\\\\b\",\n relevance: 0\n },\n OBJECT,\n ARRAY,\n STRING\n ];\n const VALUE_MODES = [\n ...MODES\n ];\n VALUE_MODES.pop();\n VALUE_MODES.push(CONTAINER_STRING);\n VALUE_CONTAINER.contains = VALUE_MODES;\n return {\n name: \"YAML\",\n case_insensitive: true,\n aliases: [\n \"yml\"\n ],\n contains: MODES\n };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvaGlnaGxpZ2h0LmpzL2VzL2xhbmd1YWdlcy95YW1sLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7QUFRQSxHQUNBLFNBQVNBLEtBQUtDLElBQUk7SUFDaEIsTUFBTUMsV0FBVztJQUVqQix3REFBd0Q7SUFDeEQsTUFBTUMsaUJBQWlCO0lBRXZCLGdEQUFnRDtJQUNoRCxpRkFBaUY7SUFDakYsOEVBQThFO0lBQzlFLGdGQUFnRjtJQUNoRixNQUFNQyxNQUFNO1FBQ1ZDLFdBQVc7UUFDWEMsVUFBVTtZQUNSO2dCQUFFQyxPQUFPO1lBQStCO1lBQ3hDO2dCQUNFQSxPQUFPO1lBQWlDO1lBQzFDO2dCQUNFQSxPQUFPO1lBQW1DO1NBQzdDO0lBQ0g7SUFFQSxNQUFNQyxxQkFBcUI7UUFDekJILFdBQVc7UUFDWEMsVUFBVTtZQUNSO2dCQUNFQyxPQUFPO2dCQUNQRSxLQUFLO1lBQ1A7WUFDQTtnQkFDRUYsT0FBTztnQkFDUEUsS0FBSztZQUNQO1NBQ0Q7SUFDSDtJQUNBLE1BQU1DLFNBQVM7UUFDYkwsV0FBVztRQUNYTSxXQUFXO1FBQ1hMLFVBQVU7WUFDUjtnQkFDRUMsT0FBTztnQkFDUEUsS0FBSztZQUNQO1lBQ0E7Z0JBQ0VGLE9BQU87Z0JBQ1BFLEtBQUs7WUFDUDtZQUNBO2dCQUFFRixPQUFPO1lBQU07U0FDaEI7UUFDREssVUFBVTtZQUNSWCxLQUFLWSxnQkFBZ0I7WUFDckJMO1NBQ0Q7SUFDSDtJQUVBLHFFQUFxRTtJQUNyRSxzQkFBc0I7SUFDdEIsTUFBTU0sbUJBQW1CYixLQUFLYyxPQUFPLENBQUNMLFFBQVE7UUFBRUosVUFBVTtZQUN4RDtnQkFDRUMsT0FBTztnQkFDUEUsS0FBSztZQUNQO1lBQ0E7Z0JBQ0VGLE9BQU87Z0JBQ1BFLEtBQUs7WUFDUDtZQUNBO2dCQUFFRixPQUFPO1lBQWU7U0FDekI7SUFBQztJQUVGLE1BQU1TLFVBQVU7SUFDaEIsTUFBTUMsVUFBVTtJQUNoQixNQUFNQyxjQUFjO0lBQ3BCLE1BQU1DLFVBQVU7SUFDaEIsTUFBTUMsWUFBWTtRQUNoQmYsV0FBVztRQUNYRSxPQUFPLFFBQVFTLFVBQVVDLFVBQVVDLGNBQWNDLFVBQVU7SUFDN0Q7SUFFQSxNQUFNRSxrQkFBa0I7UUFDdEJaLEtBQUs7UUFDTGEsZ0JBQWdCO1FBQ2hCQyxZQUFZO1FBQ1pDLFVBQVV0QjtRQUNWUyxXQUFXO0lBQ2I7SUFDQSxNQUFNYyxTQUFTO1FBQ2JsQixPQUFPO1FBQ1BFLEtBQUs7UUFDTEcsVUFBVTtZQUFFUztTQUFpQjtRQUM3QkssU0FBUztRQUNUZixXQUFXO0lBQ2I7SUFDQSxNQUFNZ0IsUUFBUTtRQUNacEIsT0FBTztRQUNQRSxLQUFLO1FBQ0xHLFVBQVU7WUFBRVM7U0FBaUI7UUFDN0JLLFNBQVM7UUFDVGYsV0FBVztJQUNiO0lBRUEsTUFBTWlCLFFBQVE7UUFDWnhCO1FBQ0E7WUFDRUMsV0FBVztZQUNYRSxPQUFPO1lBQ1BJLFdBQVc7UUFDYjtRQUNBO1lBQ0UsbURBQW1EO1lBQ25ELEVBQUU7WUFDRixzREFBc0Q7WUFDdEQsa0NBQWtDO1lBQ2xDTixXQUFXO1lBQ1hFLE9BQU87UUFDVDtRQUNBO1lBQ0VBLE9BQU87WUFDUEUsS0FBSztZQUNMb0IsYUFBYTtZQUNiQyxjQUFjO1lBQ2RQLFlBQVk7WUFDWlosV0FBVztRQUNiO1FBQ0E7WUFDRU4sV0FBVztZQUNYRSxPQUFPLFdBQVdKO1FBQ3BCO1FBQ0EsZ0RBQWdEO1FBQ2hEO1lBQ0VFLFdBQVc7WUFDWEUsT0FBTyxPQUFPSixpQkFBaUI7UUFDakM7UUFDQTtZQUNFRSxXQUFXO1lBQ1hFLE9BQU8sTUFBTUo7UUFDZjtRQUNBO1lBQ0VFLFdBQVc7WUFDWEUsT0FBTyxPQUFPSjtRQUNoQjtRQUNBO1lBQ0VFLFdBQVc7WUFDWEUsT0FBTyxNQUFNTixLQUFLOEIsbUJBQW1CLEdBQUc7UUFDMUM7UUFDQTtZQUNFMUIsV0FBVztZQUNYRSxPQUFPLFFBQVFOLEtBQUs4QixtQkFBbUIsR0FBRztRQUM1QztRQUNBO1lBQ0UxQixXQUFXO1lBQ1gsOERBQThEO1lBQzlERSxPQUFPO1lBQ1BJLFdBQVc7UUFDYjtRQUNBVixLQUFLK0IsaUJBQWlCO1FBQ3RCO1lBQ0VDLGVBQWUvQjtZQUNmc0IsVUFBVTtnQkFBRVUsU0FBU2hDO1lBQVM7UUFDaEM7UUFDQWtCO1FBQ0EsNENBQTRDO1FBQzVDLGdDQUFnQztRQUNoQztZQUNFZixXQUFXO1lBQ1hFLE9BQU9OLEtBQUtrQyxXQUFXLEdBQUc7WUFDMUJ4QixXQUFXO1FBQ2I7UUFDQWM7UUFDQUU7UUFDQWpCO0tBQ0Q7SUFFRCxNQUFNMEIsY0FBYztXQUFLUjtLQUFPO0lBQ2hDUSxZQUFZQyxHQUFHO0lBQ2ZELFlBQVlFLElBQUksQ0FBQ3hCO0lBQ2pCTyxnQkFBZ0JULFFBQVEsR0FBR3dCO0lBRTNCLE9BQU87UUFDTEcsTUFBTTtRQUNOQyxrQkFBa0I7UUFDbEJDLFNBQVM7WUFBRTtTQUFPO1FBQ2xCN0IsVUFBVWdCO0lBQ1o7QUFDRjtBQUUyQiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL2hpZ2hsaWdodC5qcy9lcy9sYW5ndWFnZXMveWFtbC5qcz9hM2NlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5MYW5ndWFnZTogWUFNTFxuRGVzY3JpcHRpb246IFlldCBBbm90aGVyIE1hcmtkb3duIExhbmd1YWdlXG5BdXRob3I6IFN0ZWZhbiBXaWVuZXJ0IDxzdHdpZW5lcnRAZ21haWwuY29tPlxuQ29udHJpYnV0b3JzOiBDYXJsIEJheHRlciA8Y2FybEBjYmF4LnRlY2g+XG5SZXF1aXJlczogcnVieS5qc1xuV2Vic2l0ZTogaHR0cHM6Ly95YW1sLm9yZ1xuQ2F0ZWdvcnk6IGNvbW1vbiwgY29uZmlnXG4qL1xuZnVuY3Rpb24geWFtbChobGpzKSB7XG4gIGNvbnN0IExJVEVSQUxTID0gJ3RydWUgZmFsc2UgeWVzIG5vIG51bGwnO1xuXG4gIC8vIFlBTUwgc3BlYyBhbGxvd3Mgbm9uLXJlc2VydmVkIFVSSSBjaGFyYWN0ZXJzIGluIHRhZ3MuXG4gIGNvbnN0IFVSSV9DSEFSQUNURVJTID0gJ1tcXFxcdyM7Lz86QCY9KyQsLn4qXFwnKClbXFxcXF1dKyc7XG5cbiAgLy8gRGVmaW5lIGtleXMgYXMgc3RhcnRpbmcgd2l0aCBhIHdvcmQgY2hhcmFjdGVyXG4gIC8vIC4uLmNvbnRhaW5pbmcgd29yZCBjaGFycywgc3BhY2VzLCBjb2xvbnMsIGZvcndhcmQtc2xhc2hlcywgaHlwaGVucyBhbmQgcGVyaW9kc1xuICAvLyAuLi5hbmQgZW5kaW5nIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSBhIHNwYWNlLCB0YWIgb3IgbmV3bGluZS5cbiAgLy8gVGhlIFlBTUwgc3BlYyBhbGxvd3MgZm9yIG11Y2ggbW9yZSB0aGFuIHRoaXMsIGJ1dCB0aGlzIGNvdmVycyBtb3N0IHVzZS1jYXNlcy5cbiAgY29uc3QgS0VZID0ge1xuICAgIGNsYXNzTmFtZTogJ2F0dHInLFxuICAgIHZhcmlhbnRzOiBbXG4gICAgICB7IGJlZ2luOiAnXFxcXHdbXFxcXHcgOlxcXFwvLi1dKjooPz1bIFxcdF18JCknIH0sXG4gICAgICB7IC8vIGRvdWJsZSBxdW90ZWQga2V5c1xuICAgICAgICBiZWdpbjogJ1wiXFxcXHdbXFxcXHcgOlxcXFwvLi1dKlwiOig/PVsgXFx0XXwkKScgfSxcbiAgICAgIHsgLy8gc2luZ2xlIHF1b3RlZCBrZXlzXG4gICAgICAgIGJlZ2luOiAnXFwnXFxcXHdbXFxcXHcgOlxcXFwvLi1dKlxcJzooPz1bIFxcdF18JCknIH1cbiAgICBdXG4gIH07XG5cbiAgY29uc3QgVEVNUExBVEVfVkFSSUFCTEVTID0ge1xuICAgIGNsYXNzTmFtZTogJ3RlbXBsYXRlLXZhcmlhYmxlJyxcbiAgICB2YXJpYW50czogW1xuICAgICAgeyAvLyBqaW5qYSB0ZW1wbGF0ZXMgQW5zaWJsZVxuICAgICAgICBiZWdpbjogL1xce1xcey8sXG4gICAgICAgIGVuZDogL1xcfVxcfS9cbiAgICAgIH0sXG4gICAgICB7IC8vIFJ1YnkgaTE4blxuICAgICAgICBiZWdpbjogLyVcXHsvLFxuICAgICAgICBlbmQ6IC9cXH0vXG4gICAgICB9XG4gICAgXVxuICB9O1xuICBjb25zdCBTVFJJTkcgPSB7XG4gICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICByZWxldmFuY2U6IDAsXG4gICAgdmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgYmVnaW46IC8nLyxcbiAgICAgICAgZW5kOiAvJy9cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGJlZ2luOiAvXCIvLFxuICAgICAgICBlbmQ6IC9cIi9cbiAgICAgIH0sXG4gICAgICB7IGJlZ2luOiAvXFxTKy8gfVxuICAgIF0sXG4gICAgY29udGFpbnM6IFtcbiAgICAgIGhsanMuQkFDS1NMQVNIX0VTQ0FQRSxcbiAgICAgIFRFTVBMQVRFX1ZBUklBQkxFU1xuICAgIF1cbiAgfTtcblxuICAvLyBTdHJpbmdzIGluc2lkZSBvZiB2YWx1ZSBjb250YWluZXJzIChvYmplY3RzKSBjYW4ndCBjb250YWluIGJyYWNlcyxcbiAgLy8gYnJhY2tldHMsIG9yIGNvbW1hc1xuICBjb25zdCBDT05UQUlORVJfU1RSSU5HID0gaGxqcy5pbmhlcml0KFNUUklORywgeyB2YXJpYW50czogW1xuICAgIHtcbiAgICAgIGJlZ2luOiAvJy8sXG4gICAgICBlbmQ6IC8nL1xuICAgIH0sXG4gICAge1xuICAgICAgYmVnaW46IC9cIi8sXG4gICAgICBlbmQ6IC9cIi9cbiAgICB9LFxuICAgIHsgYmVnaW46IC9bXlxccyx7fVtcXF1dKy8gfVxuICBdIH0pO1xuXG4gIGNvbnN0IERBVEVfUkUgPSAnWzAtOV17NH0oLVswLTldWzAtOV0pezAsMn0nO1xuICBjb25zdCBUSU1FX1JFID0gJyhbVHQgXFxcXHRdWzAtOV1bMC05XT8oOlswLTldWzAtOV0pezJ9KT8nO1xuICBjb25zdCBGUkFDVElPTl9SRSA9ICcoXFxcXC5bMC05XSopPyc7XG4gIGNvbnN0IFpPTkVfUkUgPSAnKFsgXFxcXHRdKSooWnxbLStdWzAtOV1bMC05XT8oOlswLTldWzAtOV0pPyk/JztcbiAgY29uc3QgVElNRVNUQU1QID0ge1xuICAgIGNsYXNzTmFtZTogJ251bWJlcicsXG4gICAgYmVnaW46ICdcXFxcYicgKyBEQVRFX1JFICsgVElNRV9SRSArIEZSQUNUSU9OX1JFICsgWk9ORV9SRSArICdcXFxcYidcbiAgfTtcblxuICBjb25zdCBWQUxVRV9DT05UQUlORVIgPSB7XG4gICAgZW5kOiAnLCcsXG4gICAgZW5kc1dpdGhQYXJlbnQ6IHRydWUsXG4gICAgZXhjbHVkZUVuZDogdHJ1ZSxcbiAgICBrZXl3b3JkczogTElURVJBTFMsXG4gICAgcmVsZXZhbmNlOiAwXG4gIH07XG4gIGNvbnN0IE9CSkVDVCA9IHtcbiAgICBiZWdpbjogL1xcey8sXG4gICAgZW5kOiAvXFx9LyxcbiAgICBjb250YWluczogWyBWQUxVRV9DT05UQUlORVIgXSxcbiAgICBpbGxlZ2FsOiAnXFxcXG4nLFxuICAgIHJlbGV2YW5jZTogMFxuICB9O1xuICBjb25zdCBBUlJBWSA9IHtcbiAgICBiZWdpbjogJ1xcXFxbJyxcbiAgICBlbmQ6ICdcXFxcXScsXG4gICAgY29udGFpbnM6IFsgVkFMVUVfQ09OVEFJTkVSIF0sXG4gICAgaWxsZWdhbDogJ1xcXFxuJyxcbiAgICByZWxldmFuY2U6IDBcbiAgfTtcblxuICBjb25zdCBNT0RFUyA9IFtcbiAgICBLRVksXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICBiZWdpbjogJ14tLS1cXFxccyokJyxcbiAgICAgIHJlbGV2YW5jZTogMTBcbiAgICB9LFxuICAgIHsgLy8gbXVsdGkgbGluZSBzdHJpbmdcbiAgICAgIC8vIEJsb2NrcyBzdGFydCB3aXRoIGEgfCBvciA+IGZvbGxvd2VkIGJ5IGEgbmV3bGluZVxuICAgICAgLy9cbiAgICAgIC8vIEluZGVudGF0aW9uIG9mIHN1YnNlcXVlbnQgbGluZXMgbXVzdCBiZSB0aGUgc2FtZSB0b1xuICAgICAgLy8gYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBibG9ja1xuICAgICAgY2xhc3NOYW1lOiAnc3RyaW5nJyxcbiAgICAgIGJlZ2luOiAnW1xcXFx8Pl0oWzEtOV0/WystXSk/WyBdKlxcXFxuKCArKVteIF1bXlxcXFxuXSpcXFxcbihcXFxcMlteXFxcXG5dK1xcXFxuPykqJ1xuICAgIH0sXG4gICAgeyAvLyBSdWJ5L1JhaWxzIGVyYlxuICAgICAgYmVnaW46ICc8JVslPS1dPycsXG4gICAgICBlbmQ6ICdbJS1dPyU+JyxcbiAgICAgIHN1Ykxhbmd1YWdlOiAncnVieScsXG4gICAgICBleGNsdWRlQmVnaW46IHRydWUsXG4gICAgICBleGNsdWRlRW5kOiB0cnVlLFxuICAgICAgcmVsZXZhbmNlOiAwXG4gICAgfSxcbiAgICB7IC8vIG5hbWVkIHRhZ3NcbiAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgYmVnaW46ICchXFxcXHcrIScgKyBVUklfQ0hBUkFDVEVSU1xuICAgIH0sXG4gICAgLy8gaHR0cHM6Ly95YW1sLm9yZy9zcGVjLzEuMi9zcGVjLmh0bWwjaWQyNzg0MDY0XG4gICAgeyAvLyB2ZXJiYXRpbSB0YWdzXG4gICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgIGJlZ2luOiAnITwnICsgVVJJX0NIQVJBQ1RFUlMgKyBcIj5cIlxuICAgIH0sXG4gICAgeyAvLyBwcmltYXJ5IHRhZ3NcbiAgICAgIGNsYXNzTmFtZTogJ3R5cGUnLFxuICAgICAgYmVnaW46ICchJyArIFVSSV9DSEFSQUNURVJTXG4gICAgfSxcbiAgICB7IC8vIHNlY29uZGFyeSB0YWdzXG4gICAgICBjbGFzc05hbWU6ICd0eXBlJyxcbiAgICAgIGJlZ2luOiAnISEnICsgVVJJX0NIQVJBQ1RFUlNcbiAgICB9LFxuICAgIHsgLy8gZnJhZ21lbnQgaWQgJnJlZlxuICAgICAgY2xhc3NOYW1lOiAnbWV0YScsXG4gICAgICBiZWdpbjogJyYnICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJyQnXG4gICAgfSxcbiAgICB7IC8vIGZyYWdtZW50IHJlZmVyZW5jZSAqcmVmXG4gICAgICBjbGFzc05hbWU6ICdtZXRhJyxcbiAgICAgIGJlZ2luOiAnXFxcXConICsgaGxqcy5VTkRFUlNDT1JFX0lERU5UX1JFICsgJyQnXG4gICAgfSxcbiAgICB7IC8vIGFycmF5IGxpc3RpbmdcbiAgICAgIGNsYXNzTmFtZTogJ2J1bGxldCcsXG4gICAgICAvLyBUT0RPOiByZW1vdmUgfCQgaGFjayB3aGVuIHdlIGhhdmUgcHJvcGVyIGxvb2stYWhlYWQgc3VwcG9ydFxuICAgICAgYmVnaW46ICctKD89WyBdfCQpJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAgaGxqcy5IQVNIX0NPTU1FTlRfTU9ERSxcbiAgICB7XG4gICAgICBiZWdpbktleXdvcmRzOiBMSVRFUkFMUyxcbiAgICAgIGtleXdvcmRzOiB7IGxpdGVyYWw6IExJVEVSQUxTIH1cbiAgICB9LFxuICAgIFRJTUVTVEFNUCxcbiAgICAvLyBudW1iZXJzIGFyZSBhbnkgdmFsaWQgQy1zdHlsZSBudW1iZXIgdGhhdFxuICAgIC8vIHNpdCBpc29sYXRlZCBmcm9tIG90aGVyIHdvcmRzXG4gICAge1xuICAgICAgY2xhc3NOYW1lOiAnbnVtYmVyJyxcbiAgICAgIGJlZ2luOiBobGpzLkNfTlVNQkVSX1JFICsgJ1xcXFxiJyxcbiAgICAgIHJlbGV2YW5jZTogMFxuICAgIH0sXG4gICAgT0JKRUNULFxuICAgIEFSUkFZLFxuICAgIFNUUklOR1xuICBdO1xuXG4gIGNvbnN0IFZBTFVFX01PREVTID0gWyAuLi5NT0RFUyBdO1xuICBWQUxVRV9NT0RFUy5wb3AoKTtcbiAgVkFMVUVfTU9ERVMucHVzaChDT05UQUlORVJfU1RSSU5HKTtcbiAgVkFMVUVfQ09OVEFJTkVSLmNvbnRhaW5zID0gVkFMVUVfTU9ERVM7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnWUFNTCcsXG4gICAgY2FzZV9pbnNlbnNpdGl2ZTogdHJ1ZSxcbiAgICBhbGlhc2VzOiBbICd5bWwnIF0sXG4gICAgY29udGFpbnM6IE1PREVTXG4gIH07XG59XG5cbmV4cG9ydCB7IHlhbWwgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbInlhbWwiLCJobGpzIiwiTElURVJBTFMiLCJVUklfQ0hBUkFDVEVSUyIsIktFWSIsImNsYXNzTmFtZSIsInZhcmlhbnRzIiwiYmVnaW4iLCJURU1QTEFURV9WQVJJQUJMRVMiLCJlbmQiLCJTVFJJTkciLCJyZWxldmFuY2UiLCJjb250YWlucyIsIkJBQ0tTTEFTSF9FU0NBUEUiLCJDT05UQUlORVJfU1RSSU5HIiwiaW5oZXJpdCIsIkRBVEVfUkUiLCJUSU1FX1JFIiwiRlJBQ1RJT05fUkUiLCJaT05FX1JFIiwiVElNRVNUQU1QIiwiVkFMVUVfQ09OVEFJTkVSIiwiZW5kc1dpdGhQYXJlbnQiLCJleGNsdWRlRW5kIiwia2V5d29yZHMiLCJPQkpFQ1QiLCJpbGxlZ2FsIiwiQVJSQVkiLCJNT0RFUyIsInN1Ykxhbmd1YWdlIiwiZXhjbHVkZUJlZ2luIiwiVU5ERVJTQ09SRV9JREVOVF9SRSIsIkhBU0hfQ09NTUVOVF9NT0RFIiwiYmVnaW5LZXl3b3JkcyIsImxpdGVyYWwiLCJDX05VTUJFUl9SRSIsIlZBTFVFX01PREVTIiwicG9wIiwicHVzaCIsIm5hbWUiLCJjYXNlX2luc2Vuc2l0aXZlIiwiYWxpYXNlcyIsImRlZmF1bHQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/highlight.js/es/languages/yaml.js\n");
/***/ })
};
;