@inkandswitch/patchwork-pkg-base 0.0.113 → 0.0.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/module-settings-url +1 -1
- package/package.json +1 -1
- package/packages/account/dist/{AccountPicker-L3IHAMPQ.js → AccountPicker-TCOUU4YK.js} +36 -16
- package/packages/account/dist/AccountPicker-TCOUU4YK.js.map +7 -0
- package/packages/account/dist/index.js +1 -1
- package/packages/account/package.json +1 -1
- package/packages/account-history/dist/assets/{HistoryRecorder-mRdg9-Sa.js → HistoryRecorder-DhQqHws4.js} +2 -2
- package/packages/account-history/dist/assets/{HistoryRecorder-mRdg9-Sa.js.map → HistoryRecorder-DhQqHws4.js.map} +1 -1
- package/packages/account-history/dist/assets/{HistoryViewer-yhYv3jqn.js → HistoryViewer-Ba8kq_qW.js} +2 -2
- package/packages/account-history/dist/assets/{HistoryViewer-yhYv3jqn.js.map → HistoryViewer-Ba8kq_qW.js.map} +1 -1
- package/packages/account-history/dist/assets/{NotebookViewer-CLhIU0hN.js → NotebookViewer-io6-qkNu.js} +2 -2
- package/packages/account-history/dist/assets/{NotebookViewer-CLhIU0hN.js.map → NotebookViewer-io6-qkNu.js.map} +1 -1
- package/packages/account-history/dist/assets/{context-CgDNOWHV.js → context-BD8lKU7i.js} +24 -4
- package/packages/account-history/dist/assets/context-BD8lKU7i.js.map +1 -0
- package/packages/account-history/dist/assets/{index-Bx2CKRPA.js → index-BKhVzznZ.js} +5 -5
- package/packages/account-history/dist/assets/{index-Bx2CKRPA.js.map → index-BKhVzznZ.js.map} +1 -1
- package/packages/account-history/dist/index.js +1 -1
- package/packages/account-history/package.json +1 -1
- package/packages/chat/dist/{ChatRoot-Ly8PORLd.js → ChatRoot-BMMhWkHl.js} +1051 -1035
- package/packages/chat/dist/{context-tool-DHIbdY80.js → context-tool-Bcf797I3.js} +2 -2
- package/packages/chat/dist/{index-fGaJgJ-s.js → index-CQ0mHlc4.js} +3 -3
- package/packages/chat/dist/index.js +1 -1
- package/packages/chat/dist/{tool-CpslbjKC.js → tool-DifU2NW5.js} +1 -1
- package/packages/chat/package.json +1 -1
- package/packages/codemirror-base/dist/tool.js +1 -1
- package/packages/codemirror-base/dist/tool.js.map +1 -1
- package/packages/codemirror-base/package.json +1 -1
- package/packages/comments-view/dist/assets/{main-IR1Yfgas.js → main-DXYeEDFB.js} +24 -4
- package/packages/comments-view/dist/assets/main-DXYeEDFB.js.map +1 -0
- package/packages/comments-view/dist/index.js +3 -3
- package/packages/comments-view/package.json +1 -1
- package/packages/drafts/dist/assets/main-CG9HOCai.js.map +1 -1
- package/packages/drafts/package.json +1 -1
- package/packages/file/dist/index.js +1 -1
- package/packages/file/dist/{tool-DMegb4Cw.js → tool-Bucjz6Ay.js} +1803 -1787
- package/packages/file/dist/tool-Bucjz6Ay.js.map +1 -0
- package/packages/file/dist/{typescript-language-server-Cx5RlH3z.js → typescript-language-server-BId-R8tz.js} +2 -2
- package/packages/file/dist/{typescript-language-server-Cx5RlH3z.js.map → typescript-language-server-BId-R8tz.js.map} +1 -1
- package/packages/file/package.json +1 -1
- package/packages/history-view/dist/assets/{HistoryTimeline-DOndzpUR.js → HistoryTimeline-CdCl4jqV.js} +25 -5
- package/packages/history-view/dist/assets/HistoryTimeline-CdCl4jqV.js.map +1 -0
- package/packages/history-view/dist/assets/{index-D7nqWI0b.js → index-R__PBggS.js} +2 -2
- package/packages/history-view/dist/assets/{index-D7nqWI0b.js.map → index-R__PBggS.js.map} +1 -1
- package/packages/history-view/dist/index.js +1 -1
- package/packages/history-view/package.json +1 -1
- package/packages/settings/dist/assets/FrameConfigurator-M-u9az7g.js +3 -0
- package/packages/settings/dist/assets/FrameConfigurator-M-u9az7g.js.map +1 -0
- package/packages/settings/dist/index.js +1 -1
- package/packages/settings/package.json +1 -1
- package/packages/sideboard/dist/account-bar-6WTRIGGE.js +2 -0
- package/packages/sideboard/dist/chunk-3Q7KVV6Y.js +2 -0
- package/packages/sideboard/dist/chunk-3Q7KVV6Y.js.map +7 -0
- package/packages/sideboard/dist/{chunk-XIUFUJKM.js → chunk-EQ26U6B2.js} +2 -2
- package/packages/sideboard/dist/{chunk-XIUFUJKM.js.map → chunk-EQ26U6B2.js.map} +1 -1
- package/packages/sideboard/dist/{chunk-6KORX3GC.js → chunk-JE5VBSXY.js} +2 -2
- package/packages/sideboard/dist/document-list-panel-OKR5ALTE.js +2 -0
- package/packages/sideboard/dist/index.js +1 -1
- package/packages/sideboard/dist/sideboard/sideboard.js +1 -1
- package/packages/sideboard/package.json +1 -1
- package/packages/sync-indicator/dist/assets/SyncIndicator-oVMcVRXg.js.map +1 -1
- package/packages/sync-indicator/package.json +1 -1
- package/packages/threepane/dist/IsolatedDocumentArea-3HGASUGM.js +2 -0
- package/packages/threepane/dist/{PatchworkFrame-HCSYM5W5.js → PatchworkFrame-22ABHJVG.js} +2 -2
- package/packages/threepane/dist/{chunk-HXEHZ5WC.js → chunk-34WWZW2V.js} +6 -6
- package/packages/threepane/dist/chunk-34WWZW2V.js.map +7 -0
- package/packages/threepane/dist/index.js +1 -1
- package/packages/threepane/package.json +1 -1
- package/plugin-registry-url +1 -1
- package/packages/account/dist/AccountPicker-L3IHAMPQ.js.map +0 -7
- package/packages/account-history/dist/assets/context-CgDNOWHV.js.map +0 -1
- package/packages/comments-view/dist/assets/main-IR1Yfgas.js.map +0 -1
- package/packages/file/dist/tool-DMegb4Cw.js.map +0 -1
- package/packages/history-view/dist/assets/HistoryTimeline-DOndzpUR.js.map +0 -1
- package/packages/settings/dist/assets/FrameConfigurator-C0ZRifTs.js +0 -3
- package/packages/settings/dist/assets/FrameConfigurator-C0ZRifTs.js.map +0 -1
- package/packages/sideboard/dist/account-bar-67PDNT3H.js +0 -2
- package/packages/sideboard/dist/chunk-FFQGRRLJ.js +0 -2
- package/packages/sideboard/dist/chunk-FFQGRRLJ.js.map +0 -7
- package/packages/sideboard/dist/document-list-panel-SPPMZDMX.js +0 -2
- package/packages/threepane/dist/IsolatedDocumentArea-E3VEPUEG.js +0 -2
- package/packages/threepane/dist/chunk-HXEHZ5WC.js.map +0 -7
- /package/packages/sideboard/dist/{account-bar-67PDNT3H.js.map → account-bar-6WTRIGGE.js.map} +0 -0
- /package/packages/sideboard/dist/{chunk-6KORX3GC.js.map → chunk-JE5VBSXY.js.map} +0 -0
- /package/packages/sideboard/dist/{document-list-panel-SPPMZDMX.js.map → document-list-panel-OKR5ALTE.js.map} +0 -0
- /package/packages/threepane/dist/{IsolatedDocumentArea-E3VEPUEG.js.map → IsolatedDocumentArea-3HGASUGM.js.map} +0 -0
- /package/packages/threepane/dist/{PatchworkFrame-HCSYM5W5.js.map → PatchworkFrame-22ABHJVG.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-DMegb4Cw.js","sources":["../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js","../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js","../node_modules/.pnpm/cabbages@0.2.10/node_modules/cabbages/output/cabbages.js","../node_modules/.pnpm/solid-automerge@2.1.0_@automerge+automerge-repo@2.6.0-subduction.48_solid-js@1.9.11/node_modules/solid-automerge/out/autoproduce.js","../node_modules/.pnpm/solid-automerge@2.1.0_@automerge+automerge-repo@2.6.0-subduction.48_solid-js@1.9.11/node_modules/solid-automerge/out/makeDocumentProjection.js","../node_modules/.pnpm/@solid-primitives+utils@6.4.1_solid-js@1.9.11/node_modules/@solid-primitives/utils/dist/index.js","../node_modules/.pnpm/solid-automerge@2.1.0_@automerge+automerge-repo@2.6.0-subduction.48_solid-js@1.9.11/node_modules/solid-automerge/out/createDocumentProjection.js","../node_modules/.pnpm/solid-automerge@2.1.0_@automerge+automerge-repo@2.6.0-subduction.48_solid-js@1.9.11/node_modules/solid-automerge/out/context.js","../node_modules/.pnpm/solid-automerge@2.1.0_@automerge+automerge-repo@2.6.0-subduction.48_solid-js@1.9.11/node_modules/solid-automerge/out/useDocHandle.js","../src/components/HTMLFileViewer.tsx","../src/components/ImageFileViewer.tsx","../src/components/PDFFileViewer.tsx","../src/components/AudioFileViewer.tsx","../src/components/VideoFileViewer.tsx","../node_modules/.pnpm/crelt@1.0.6/node_modules/crelt/index.js","../node_modules/.pnpm/@codemirror+search@6.6.0/node_modules/@codemirror/search/dist/index.js","../node_modules/.pnpm/@automerge+automerge-codemirror@0.1.0/node_modules/@automerge/automerge-codemirror/dist/codeMirrorToAm.js","../node_modules/.pnpm/@automerge+automerge-codemirror@0.1.0/node_modules/@automerge/automerge-codemirror/dist/amToCodemirror.js","../node_modules/.pnpm/@automerge+automerge-codemirror@0.1.0/node_modules/@automerge/automerge-codemirror/dist/plugin.js","../src/components/codemirror-extensions.ts","../node_modules/.pnpm/@inkandswitch+patchwork-providers-solid@0.2.8_@automerge+automerge-repo@2.6.0-subductio_fc71ce1b7a7a18bc3d9d6959a9b23458/node_modules/@inkandswitch/patchwork-providers-solid/dist/index.js","../src/components/comments/threads.ts","../src/components/comments/commentUI.ts","../src/components/comments/index.ts","../node_modules/.pnpm/@lezer+common@1.5.1/node_modules/@lezer/common/dist/index.js","../node_modules/.pnpm/@lezer+highlight@1.2.3/node_modules/@lezer/highlight/dist/index.js","../src/codemirror-theme.ts","../node_modules/.pnpm/@lezer+lr@1.4.8/node_modules/@lezer/lr/dist/index.js","../node_modules/.pnpm/@lezer+javascript@1.5.4/node_modules/@lezer/javascript/dist/index.js","../node_modules/.pnpm/@codemirror+autocomplete@6.20.3/node_modules/@codemirror/autocomplete/dist/index.js","../node_modules/.pnpm/@codemirror+lang-javascript@6.2.5/node_modules/@codemirror/lang-javascript/dist/index.js","../node_modules/.pnpm/@lezer+css@1.3.1/node_modules/@lezer/css/dist/index.js","../node_modules/.pnpm/@codemirror+lang-css@6.3.1/node_modules/@codemirror/lang-css/dist/index.js","../node_modules/.pnpm/@lezer+html@1.3.13/node_modules/@lezer/html/dist/index.js","../node_modules/.pnpm/@codemirror+lang-html@6.4.11/node_modules/@codemirror/lang-html/dist/index.js","../node_modules/.pnpm/@lezer+json@1.0.3/node_modules/@lezer/json/dist/index.js","../node_modules/.pnpm/@codemirror+lang-json@6.0.2/node_modules/@codemirror/lang-json/dist/index.js","../node_modules/.pnpm/@lezer+markdown@1.6.3/node_modules/@lezer/markdown/dist/index.js","../node_modules/.pnpm/@codemirror+lang-markdown@6.5.0/node_modules/@codemirror/lang-markdown/dist/index.js","../node_modules/.pnpm/@lezer+python@1.1.18/node_modules/@lezer/python/dist/index.js","../node_modules/.pnpm/@codemirror+lang-python@6.2.1/node_modules/@codemirror/lang-python/dist/index.js","../node_modules/.pnpm/@lezer+xml@1.0.6/node_modules/@lezer/xml/dist/index.js","../node_modules/.pnpm/@codemirror+lang-xml@6.1.0/node_modules/@codemirror/lang-xml/dist/index.js","../node_modules/.pnpm/@lezer+yaml@1.0.4/node_modules/@lezer/yaml/dist/index.js","../node_modules/.pnpm/@codemirror+lang-yaml@6.1.2/node_modules/@codemirror/lang-yaml/dist/index.js","../node_modules/.pnpm/@lezer+rust@1.0.2/node_modules/@lezer/rust/dist/index.js","../node_modules/.pnpm/@codemirror+lang-rust@6.0.2/node_modules/@codemirror/lang-rust/dist/index.js","../node_modules/.pnpm/@lezer+cpp@1.1.5/node_modules/@lezer/cpp/dist/index.js","../node_modules/.pnpm/@codemirror+lang-cpp@6.0.3/node_modules/@codemirror/lang-cpp/dist/index.js","../node_modules/.pnpm/@lezer+java@1.1.3/node_modules/@lezer/java/dist/index.js","../node_modules/.pnpm/@codemirror+lang-java@6.0.2/node_modules/@codemirror/lang-java/dist/index.js","../node_modules/.pnpm/@lezer+php@1.0.5/node_modules/@lezer/php/dist/index.js","../node_modules/.pnpm/@codemirror+lang-php@6.0.2/node_modules/@codemirror/lang-php/dist/index.js","../node_modules/.pnpm/@codemirror+lang-sql@6.10.0/node_modules/@codemirror/lang-sql/dist/index.js","../node_modules/.pnpm/@codemirror+lang-wast@6.0.2/node_modules/@codemirror/lang-wast/dist/index.js","../src/languages.ts","../src/components/TextFileEditor.tsx","../src/components/ReadOnlyTextViewer.tsx","../src/components/FileEditor.tsx","../src/tool.tsx"],"sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","// cabbages.ts\nimport debug from \"debug\";\nvar log = debug(\"cabbages\");\nfunction pojo(target) {\n return typeof target == \"object\" && typeof target != null && Object.getPrototypeOf(target) == Object.prototype;\n}\nvar BLOCK_MARKER = \"\\uFFFC\";\nfunction apply(target, ...rest) {\n if (rest.length == 0) {\n log(\"empty patch\");\n return;\n }\n const [path, range, val] = rest;\n let p = [...path];\n while (true) {\n let key = p.shift();\n if (!p.length) {\n const RANGE_ARRAY = Array.isArray(range);\n if (pojo(target) && RANGE_ARRAY && typeof key == \"undefined\" && typeof range[0] == \"string\") {\n delete target[range[0]];\n return;\n }\n if (RANGE_ARRAY || typeof range == \"number\") {\n if (typeof key == \"undefined\") {\n throw new Error(\"cant treat top level as a seq\");\n }\n key = key;\n let [start, end] = Array.isArray(range) ? range : [range, range + 1];\n const ZERO_LENGTH = Array.isArray(range) && range.length == 0;\n if (!ZERO_LENGTH && (start == null || end == null)) {\n throw new RangeError(\"it's all or nothing, no half measures\");\n }\n const DELETE = typeof val == \"undefined\";\n const INSERT = start === end && !DELETE;\n const APPEND = ZERO_LENGTH && !DELETE;\n const REPLACE = !INSERT && !DELETE && !APPEND;\n if (typeof target[key] == \"undefined\") {\n if (typeof target == \"string\") {\n return;\n } else if (typeof val == \"string\") {\n target[key] = \"\";\n } else {\n target[key] = [];\n }\n }\n let seq = target[key];\n if (Array.isArray(seq)) {\n if (APPEND) {\n Array.isArray(val) ? seq.push(...val) : seq.push(val);\n return;\n }\n if (INSERT || REPLACE) {\n Array.isArray(val) ? seq.splice(start, end - start, ...val) : seq.splice(start, end - start, val);\n return;\n }\n if (DELETE) {\n seq.splice(start, end - start);\n return;\n }\n throw new Error(\"i don't know what happened\");\n }\n if (typeof seq == \"string\") {\n if (APPEND) {\n target[key] = seq + val;\n return;\n }\n if (REPLACE || INSERT) {\n target[key] = seq.slice(0, start) + (typeof val == \"string\" ? val : val.map(\n (n) => typeof n == \"string\" ? n : BLOCK_MARKER\n ).join(\"\")) + seq.slice(end);\n return;\n }\n if (DELETE) {\n target[key] = seq.slice(0, start) + seq.slice(end);\n return;\n }\n throw new Error(\"i don't know what happened\");\n }\n if (pojo(seq) && RANGE_ARRAY && typeof range[0] == \"string\") {\n delete seq[range[0]];\n return;\n }\n throw new Error(\"not implemented\");\n }\n if (typeof key == \"undefined\") {\n if (typeof range != \"string\") {\n throw new Error(`can't index top-level map with ${range}`);\n }\n if (typeof val == \"undefined\") {\n delete target[range];\n } else {\n target[range] = val;\n }\n return;\n }\n if (typeof target[key] == \"undefined\") {\n target[key] = {};\n }\n if (RANGE_ARRAY) {\n let [a, b] = range;\n if (a != null && b != null) {\n if (typeof val == \"undefined\" && a != null && b != null) {\n delete target[key][a || b];\n } else {\n target[key][a || b] = val;\n }\n }\n } else {\n if (typeof val == \"undefined\") {\n delete target[key][range];\n } else if (typeof target[key] == \"string\") {\n return;\n } else {\n target[key][range] = val;\n }\n }\n return;\n }\n if (typeof key == \"undefined\") {\n throw new Error(\"cant treat top level as a seq\");\n }\n key = key;\n let nextkey = p[0];\n if (typeof target[key] == \"undefined\") {\n if (typeof nextkey == \"string\") {\n target[key] = {};\n } else if (typeof nextkey == \"number\") {\n target[key] = [];\n } else {\n throw new Error(`can't go down this road ${target}.${key}.${nextkey}`);\n }\n }\n target = target[key];\n }\n}\nvar patch = apply;\nfunction get(obj, key) {\n for (let p = 0; p < key.length; p++) {\n obj = obj ? obj[key[p]] : void 0;\n }\n return obj;\n}\nfunction fromAutomerge(autopatch, payload) {\n const path = autopatch.path.slice(0, -1);\n const key = autopatch.path[autopatch.path.length - 1];\n switch (autopatch.action) {\n case \"mark\":\n case \"unmark\":\n log(\n `skipping ${autopatch.action} because it doesn't affect material reality`\n );\n return [];\n case \"inc\":\n if (payload) {\n return [path, key, get(payload.patchInfo.after, autopatch.path)];\n } else {\n throw new Error(\n `can't apply ${autopatch.action} without payload argument`\n );\n }\n case \"conflict\":\n if (payload) {\n return [path, key, get(payload.patchInfo.after, autopatch.path)];\n } else {\n throw new Error(\n `can't apply ${autopatch.action} without payload argument`\n );\n }\n case \"del\": {\n return typeof key == \"string\" ? [path, key] : [path, [key, key + (autopatch.length || 1)]];\n }\n case \"insert\": {\n return [\n path,\n [key, key],\n structuredClone(autopatch.values)\n ];\n }\n case \"splice\": {\n return [path, [key, key], [autopatch.value]];\n }\n case \"put\": {\n return [path, key, structuredClone(autopatch.value)];\n }\n }\n}\nexport {\n apply,\n fromAutomerge,\n patch,\n pojo\n};\n","\"use strict\";\nimport { apply, fromAutomerge } from \"cabbages\";\nexport default function autoproduce(payload) {\n return (doc) => {\n for (let patch of payload.patches) {\n apply(doc, ...fromAutomerge(patch, payload));\n }\n };\n}\n//# sourceMappingURL=autoproduce.js.map\n","\"use strict\";\nimport { onCleanup } from \"solid-js\";\nimport autoproduce from \"./autoproduce.js\";\nimport { createStore, produce, reconcile } from \"solid-js/store\";\nconst cache = /* @__PURE__ */ new WeakMap();\nexport default function makeDocumentProjection(handle) {\n onCleanup(() => {\n const item = cache.get(handle);\n if (!item) return;\n if (!item.refs--) {\n item.cleanup();\n }\n });\n if (cache.has(handle)) {\n const item = cache.get(handle);\n item.refs++;\n return item.store;\n }\n const [doc, set] = createStore(structuredClone(handle.doc()));\n cache.set(handle, {\n refs: 0,\n store: doc,\n cleanup() {\n handle.off(\"change\", patch);\n handle.off(\"delete\", ondelete);\n cache.delete(handle);\n }\n });\n function patch(payload) {\n if (payload.scopeReplaced) {\n set(reconcile(payload.doc ?? {}));\n return;\n }\n set(produce(autoproduce(payload)));\n }\n function ondelete() {\n set(reconcile({}));\n }\n handle.on(\"change\", patch);\n handle.on(\"delete\", ondelete);\n return doc;\n}\n//# sourceMappingURL=makeDocumentProjection.js.map\n","import { getOwner, onCleanup, createSignal, untrack, sharedConfig, onMount, DEV, equalFn, } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nexport * from \"./types.js\";\n//\n// GENERAL HELPERS:\n//\nexport { isServer };\nexport const isClient = !isServer;\nexport const isDev = isClient && !!DEV;\nexport const isProd = !isDev;\n/** no operation */\nexport const noop = (() => void 0);\nexport const trueFn = () => true;\nexport const falseFn = () => false;\n/** @deprecated use {@link equalFn} from \"solid-js\" */\nexport const defaultEquals = equalFn;\nexport const EQUALS_FALSE_OPTIONS = { equals: false };\nexport const INTERNAL_OPTIONS = { internal: true };\n/**\n * Check if the value is an instance of ___\n */\nexport const ofClass = (v, c) => v instanceof c || (v && v.constructor === c);\n/** Check if value is typeof \"object\" or \"function\" */\nexport function isObject(value) {\n return value !== null && (typeof value === \"object\" || typeof value === \"function\");\n}\nexport const isNonNullable = (i) => i != null;\nexport const filterNonNullable = (arr) => arr.filter(isNonNullable);\nexport const compare = (a, b) => (a < b ? -1 : a > b ? 1 : 0);\n/**\n * Check shallow array equality\n */\nexport const arrayEquals = (a, b) => a === b || (a.length === b.length && a.every((e, i) => e === b[i]));\n/**\n * Returns a function that will call all functions in the order they were chained with the same arguments.\n */\nexport function chain(callbacks) {\n return (...args) => {\n for (const callback of callbacks)\n callback && callback(...args);\n };\n}\n/**\n * Returns a function that will call all functions in the reversed order with the same arguments.\n */\nexport function reverseChain(callbacks) {\n return (...args) => {\n for (let i = callbacks.length - 1; i >= 0; i--) {\n const callback = callbacks[i];\n callback && callback(...args);\n }\n };\n}\nexport const clamp = (n, min, max) => Math.min(Math.max(n, min), max);\n/**\n * Accesses the value of a MaybeAccessor\n * @example\n * ```ts\n * access(\"foo\") // => \"foo\"\n * access(() => \"foo\") // => \"foo\"\n * ```\n */\nexport const access = (v) => typeof v === \"function\" && !v.length ? v() : v;\nexport const asArray = (value) => Array.isArray(value) ? value : value ? [value] : [];\n/**\n * Access an array of MaybeAccessors\n * @example\n * const list = [1, 2, () => 3)] // T: MaybeAccessor<number>[]\n * const newList = accessArray(list) // T: number[]\n */\nexport const accessArray = (list) => list.map(v => access(v));\n/**\n * Run the function if the accessed value is not `undefined` nor `null`\n * @param value\n * @param fn\n */\nexport const withAccess = (value, fn) => {\n const _value = access(value);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n typeof _value != null && fn(_value);\n};\nexport const asAccessor = (v) => (typeof v === \"function\" ? v : () => v);\n/** If value is a function – call it with a given arguments – otherwise get the value as is */\nexport function accessWith(valueOrFn, ...args) {\n return typeof valueOrFn === \"function\" ? valueOrFn(...args) : valueOrFn;\n}\nexport function defer(deps, fn, initialValue) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let shouldDefer = true;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++)\n input[i] = deps[i]();\n }\n else\n input = deps();\n if (shouldDefer) {\n shouldDefer = false;\n prevInput = input;\n return initialValue;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\n/**\n * Get entries of an object\n */\nexport const entries = Object.entries;\n/**\n * Get keys of an object\n */\nexport const keys = Object.keys;\n/**\n * Solid's `onCleanup` that doesn't warn in development if used outside of a component.\n */\nexport const tryOnCleanup = isDev\n ? fn => (getOwner() ? onCleanup(fn) : fn)\n : onCleanup;\nexport const createCallbackStack = () => {\n let stack = [];\n const clear = () => (stack = []);\n return {\n push: (...callbacks) => stack.push(...callbacks),\n execute(arg0, arg1, arg2, arg3) {\n stack.forEach(cb => cb(arg0, arg1, arg2, arg3));\n clear();\n },\n clear,\n };\n};\n/**\n * Group synchronous function calls.\n * @param fn\n * @returns `fn`\n */\nexport function createMicrotask(fn) {\n let calls = 0;\n let args;\n onCleanup(() => (calls = 0));\n return (...a) => {\n (args = a), calls++;\n queueMicrotask(() => --calls === 0 && fn(...args));\n };\n}\n/**\n * A hydratable version of the {@link createSignal}. It will use the serverValue on the server and the update function on the client. If initialized during hydration it will use serverValue as the initial value and update it once hydration is complete.\n *\n * @param serverValue initial value of the state on the server\n * @param update called once on the client or on hydration to initialize the value\n * @param options {@link SignalOptions}\n * @returns\n * ```ts\n * [state: Accessor<T>, setState: Setter<T>]\n * ```\n * @see {@link createSignal}\n */\nexport function createHydratableSignal(serverValue, update, options) {\n if (isServer) {\n return createSignal(serverValue, options);\n }\n if (sharedConfig.context) {\n const [state, setState] = createSignal(serverValue, options);\n onMount(() => setState(() => update()));\n return [state, setState];\n }\n return createSignal(update(), options);\n}\n/** @deprecated use {@link createHydratableSignal} instead */\nexport const createHydrateSignal = createHydratableSignal;\n/**\n * Handle items removed and added to the array by diffing it by refference.\n *\n * @param current new array instance\n * @param prev previous array copy\n * @param handleAdded called once for every added item to array\n * @param handleRemoved called once for every removed from array\n */\nexport function handleDiffArray(current, prev, handleAdded, handleRemoved) {\n const currLength = current.length;\n const prevLength = prev.length;\n let i = 0;\n if (!prevLength) {\n for (; i < currLength; i++)\n handleAdded(current[i]);\n return;\n }\n if (!currLength) {\n for (; i < prevLength; i++)\n handleRemoved(prev[i]);\n return;\n }\n for (; i < prevLength; i++) {\n if (prev[i] !== current[i])\n break;\n }\n let prevEl;\n let currEl;\n prev = prev.slice(i);\n current = current.slice(i);\n for (prevEl of prev) {\n if (!current.includes(prevEl))\n handleRemoved(prevEl);\n }\n for (currEl of current) {\n if (!prev.includes(currEl))\n handleAdded(currEl);\n }\n}\n// ─── String transforms ────────────────────────────────────────────────────────\n/**\n * Parse a string as a single JSON value.\n *\n * ```ts\n * const { data } = createSSE<{ status: string }>(url, { transform: json });\n * ```\n */\nexport const json = (raw) => JSON.parse(raw);\n/**\n * Parse a string as newline-delimited JSON (NDJSON / JSON Lines).\n *\n * Each non-empty line is parsed as a separate JSON value and returned as an array.\n *\n * ```ts\n * const { data } = createSSE<TickEvent[]>(url, { transform: ndjson });\n * // data() === [{ id: 1, type: \"tick\" }, { id: 2, type: \"tick\" }]\n * ```\n */\nexport const ndjson = (raw) => raw\n .split(\"\\n\")\n .filter(line => line !== \"\")\n .map(line => JSON.parse(line));\n/**\n * Split a string into individual lines, returning a `string[]`. Empty lines are filtered out.\n *\n * ```ts\n * const { data } = createSSE<string[]>(url, { transform: lines });\n * // data() === [\"line one\", \"line two\"]\n * ```\n */\nexport const lines = (raw) => raw.split(\"\\n\").filter(line => line !== \"\");\n/**\n * Parse a string as a number using `Number()` semantics.\n *\n * Note: `\"\"` → `0`, non-numeric strings → `NaN`.\n *\n * ```ts\n * const { data } = createSSE<number>(url, { transform: number });\n * // data() === 42\n * ```\n */\nexport const number = (raw) => Number(raw);\nexport function safe(transform, fallback) {\n return (raw) => {\n try {\n return transform(raw);\n }\n catch {\n return fallback;\n }\n };\n}\n/**\n * Compose two transforms into one: the output of `a` is passed as the input of `b`.\n *\n * ```ts\n * const { data } = createSSE<RawEvent[]>(url, {\n * transform: pipe(ndjson<RawEvent>, rows => rows.filter(r => r.type === \"tick\")),\n * });\n * ```\n */\nexport function pipe(a, b) {\n return (raw) => b(a(raw));\n}\n","\"use strict\";\nimport { createMemo } from \"solid-js\";\nimport makeDocumentProjection from \"./makeDocumentProjection.js\";\nimport { access } from \"@solid-primitives/utils\";\nexport default function createDocumentProjection(handle) {\n const projection = createMemo(\n () => access(handle) && makeDocumentProjection(access(handle))\n );\n return projection;\n}\n//# sourceMappingURL=createDocumentProjection.js.map\n","\"use strict\";\nimport { createContext } from \"solid-js\";\nexport const RepoContext = createContext(\n null\n);\n//# sourceMappingURL=context.js.map\n","\"use strict\";\nimport { createEffect, createResource, useContext } from \"solid-js\";\nimport { access } from \"@solid-primitives/utils\";\nimport { RepoContext } from \"./context.js\";\nexport default function useDocHandle(url, options) {\n const contextRepo = useContext(RepoContext);\n if (!options?.repo && !contextRepo) {\n throw new Error(\"use outside <RepoContext> requires options.repo\");\n }\n const repo = options?.repo || contextRepo;\n function getExistingHandle() {\n if (options?.[\"~skipInitialValue\"]) return void 0;\n const unwrappedURL = access(url);\n if (!unwrappedURL) return void 0;\n return peekReadyHandle(repo, unwrappedURL);\n }\n const [handle, { mutate }] = createResource(\n url,\n (url2) => repo.find(url2),\n {\n initialValue: getExistingHandle()\n }\n );\n createEffect(() => {\n if (!access(url)) {\n mutate();\n }\n });\n return handle;\n}\nfunction isQueryable(repo) {\n return typeof repo.query == \"function\";\n}\nfunction peekReadyHandle(repo, url) {\n if (isQueryable(repo)) {\n const state2 = repo.query(url).state();\n return state2.status == \"ready\" ? state2.handle : void 0;\n }\n const state = repo.findWithProgress(url).peek();\n return state.state == \"ready\" ? state.handle : void 0;\n}\n//# sourceMappingURL=useDocHandle.js.map\n","import {createMemo} from \"solid-js\"\nimport type {FileDoc} from \"../types\"\nimport {isBinaryFileDoc} from \"../datatype\"\n\nexport type HTMLFileDoc = FileDoc & {\n\textension: \"html\" | \"htm\"\n}\n\nexport const isHTMLFile = (doc: FileDoc) => {\n\treturn (\n\t\t[\"html\", \"htm\"].includes(doc.extension?.toLowerCase()) ||\n\t\tdoc.mimeType === \"text/html\"\n\t)\n}\n\nexport function HTMLFileViewer(props: {doc: FileDoc}) {\n\tconst textData = createMemo(() => {\n\t\tif (!props.doc) {\n\t\t\treturn \"\"\n\t\t}\n\n\t\tif (isBinaryFileDoc(props.doc)) {\n\t\t\treturn new TextDecoder().decode(props.doc.content)\n\t\t} else {\n\t\t\treturn props.doc.content.toString()\n\t\t}\n\t})\n\n\tconst blobUrl = createMemo(() => {\n\t\tconst content = textData()\n\t\tif (!content) return \"\"\n\t\tconst blob = new Blob([content], {type: \"text/html\"})\n\t\treturn URL.createObjectURL(blob)\n\t})\n\n\treturn (\n\t\t<div style={{overflow: \"auto\", height: \"100%\"}}>\n\t\t\t{textData() ? (\n\t\t\t\t<iframe\n\t\t\t\t\tsrc={blobUrl()}\n\t\t\t\t\tstyle={{width: \"100%\", height: \"100%\", border: \"none\"}}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t\"align-items\": \"center\",\n\t\t\t\t\t\t\"justify-content\": \"center\",\n\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\tbackground: \"var(--editor-fill)\",\n\t\t\t\t\t\tcolor: \"var(--editor-line)\",\n\t\t\t\t\t}}>\n\t\t\t\t\tLoading...\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import {createMemo} from \"solid-js\"\nimport type {FileDoc} from \"../types\"\nimport {createBinaryUrl} from \"../utils\"\nimport {isBinaryFileDoc} from \"../datatype\"\n\nexport type ImageFileDoc = FileDoc & {\n\textension: \"svg\" | \"png\" | \"jpg\" | \"jpeg\" | \"gif\" | \"webp\" | \"bmp\"\n}\n\nexport function ImageFileViewer(props: {doc: FileDoc}) {\n\tconst imgUrl = createMemo(() => {\n\t\tif (isBinaryFileDoc(props.doc)) {\n\t\t\treturn createBinaryUrl(props.doc.content, props.doc.mimeType)\n\t\t}\n\t\treturn undefined\n\t})\n\n\treturn imgUrl() ? (\n\t\t<img\n\t\t\tsrc={imgUrl()}\n\t\t\talt={props.doc.name}\n\t\t\tstyle={{\n\t\t\t\t\"max-width\": \"100%\",\n\t\t\t\t\"max-height\": \"100%\",\n\t\t\t\t\"object-fit\": \"contain\",\n\t\t\t}}\n\t\t/>\n\t) : (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tbackground: \"var(--editor-fill)\",\n\t\t\t\tcolor: \"var(--editor-line)\",\n\t\t\t}}>\n\t\t\tNo image to display\n\t\t</div>\n\t)\n}\n","import {createMemo} from \"solid-js\"\nimport type {FileDoc} from \"../types\"\nimport {createBinaryUrl} from \"../utils\"\nimport {isBinaryFileDoc} from \"../datatype\"\n\nexport type PDFFileDoc = FileDoc & {\n\textension: \"pdf\"\n\tmimeType: \"application/pdf\"\n}\n\nexport const isPDFFile = (doc: FileDoc): doc is PDFFileDoc => {\n\treturn (\n\t\tdoc.extension?.toLowerCase() === \"pdf\" || doc.mimeType === \"application/pdf\"\n\t)\n}\n\nexport function PDFFileViewer(props: {doc: FileDoc}) {\n\tconst pdfUrl = createMemo(() => {\n\t\tif (isBinaryFileDoc(props.doc)) {\n\t\t\t// Not props.doc.mimeType: isPDFFile also matches on the extension\n\t\t\t// alone, so the stored mimeType may be missing or octet-stream.\n\t\t\treturn createBinaryUrl(props.doc.content, \"application/pdf\")\n\t\t}\n\t\treturn undefined\n\t})\n\n\treturn (\n\t\t<div style={{overflow: \"auto\", height: \"100%\"}}>\n\t\t\t{pdfUrl() ? (\n\t\t\t\t<iframe\n\t\t\t\t\tsrc={pdfUrl()}\n\t\t\t\t\tstyle={{width: \"100%\", height: \"100%\", border: \"none\"}}\n\t\t\t\t\ttitle={props.doc.name}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\t\t\"align-items\": \"center\",\n\t\t\t\t\t\t\"justify-content\": \"center\",\n\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\tbackground: \"var(--editor-fill)\",\n\t\t\t\t\t\tcolor: \"var(--editor-line)\",\n\t\t\t\t\t}}>\n\t\t\t\t\tNo PDF to display\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import {createMemo} from \"solid-js\"\nimport type {FileDoc} from \"../types\"\nimport {isBinaryFileDoc} from \"../datatype\"\n\nexport const isAudioFile = (doc: FileDoc) => {\n\t// Require binary content: audio is inherently binary, so a string-backed doc\n\t// (e.g. a text file with a misdetected media mimeType) is never really audio.\n\treturn isBinaryFileDoc(doc) && doc.mimeType?.startsWith(\"audio/\")\n}\n\nexport function AudioFileViewer(props: {doc: FileDoc}) {\n\tconst audioUrl = createMemo(() => {\n\t\tif (isBinaryFileDoc(props.doc)) {\n\t\t\treturn URL.createObjectURL(\n\t\t\t\tnew Blob([props.doc.content as BlobPart], {type: props.doc.mimeType})\n\t\t\t)\n\t\t}\n\t\treturn undefined\n\t})\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\"align-items\": \"center\",\n\t\t\t\t\"justify-content\": \"center\",\n\t\t\t\theight: \"100%\",\n\t\t\t}}>\n\t\t\t{audioUrl() ? (\n\t\t\t\t<audio src={audioUrl()} controls />\n\t\t\t) : (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tbackground: \"var(--editor-fill)\",\n\t\t\t\t\t\tcolor: \"var(--editor-line)\",\n\t\t\t\t\t}}>\n\t\t\t\t\tNo audio to play\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import {createMemo} from \"solid-js\"\nimport type {FileDoc} from \"../types\"\nimport {isBinaryFileDoc} from \"../datatype\"\n\nexport const isVideoFile = (doc: FileDoc) => {\n\t// Require binary content: a video is inherently binary, so a string-backed\n\t// doc is never really a video. This disambiguates the \".ts\" extension, which\n\t// mimeType detection reports as video/mp2t (MPEG transport stream) — a\n\t// TypeScript source file has string content and falls through to the text\n\t// editor, while an actual transport stream is binary and renders here.\n\treturn isBinaryFileDoc(doc) && doc.mimeType?.startsWith(\"video/\")\n}\n\nexport function VideoFileViewer(props: {doc: FileDoc}) {\n\tconst videoUrl = createMemo(() => {\n\t\tif (isBinaryFileDoc(props.doc)) {\n\t\t\treturn URL.createObjectURL(\n\t\t\t\tnew Blob([props.doc.content as BlobPart], {type: props.doc.mimeType})\n\t\t\t)\n\t\t}\n\t\treturn undefined\n\t})\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tdisplay: \"flex\",\n\t\t\t\t\"align-items\": \"center\",\n\t\t\t\t\"justify-content\": \"center\",\n\t\t\t\theight: \"100%\",\n\t\t\t}}>\n\t\t\t{videoUrl() ? (\n\t\t\t\t<video\n\t\t\t\t\tsrc={videoUrl()}\n\t\t\t\t\tcontrols\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\"max-width\": \"100%\",\n\t\t\t\t\t\t\"max-height\": \"100%\",\n\t\t\t\t\t\t\"object-fit\": \"contain\",\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<div\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tbackground: \"var(--editor-fill)\",\n\t\t\t\t\t\tcolor: \"var(--editor-line)\",\n\t\t\t\t\t}}>\n\t\t\t\t\tNo video to play\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","export default function crelt() {\n var elt = arguments[0]\n if (typeof elt == \"string\") elt = document.createElement(elt)\n var i = 1, next = arguments[1]\n if (next && typeof next == \"object\" && next.nodeType == null && !Array.isArray(next)) {\n for (var name in next) if (Object.prototype.hasOwnProperty.call(next, name)) {\n var value = next[name]\n if (typeof value == \"string\") elt.setAttribute(name, value)\n else if (value != null) elt[name] = value\n }\n i++\n }\n for (; i < arguments.length; i++) add(elt, arguments[i])\n return elt\n}\n\nfunction add(elt, child) {\n if (typeof child == \"string\") {\n elt.appendChild(document.createTextNode(child))\n } else if (child == null) {\n } else if (child.nodeType != null) {\n elt.appendChild(child)\n } else if (Array.isArray(child)) {\n for (var i = 0; i < child.length; i++) add(elt, child[i])\n } else {\n throw new RangeError(\"Unsupported child node: \" + child)\n }\n}\n","import { showDialog, EditorView, Decoration, ViewPlugin, showPanel, runScopeHandlers, getPanel } from '@codemirror/view';\nimport { codePointAt, fromCodePoint, codePointSize, EditorSelection, Facet, combineConfig, CharCategory, StateEffect, StateField, RangeSetBuilder, Prec, EditorState, findClusterBreak } from '@codemirror/state';\nimport elt from 'crelt';\n\nconst basicNormalize = typeof String.prototype.normalize == \"function\"\n ? x => x.normalize(\"NFKD\") : x => x;\n/**\nA search cursor provides an iterator over text matches in a\ndocument.\n*/\nclass SearchCursor {\n /**\n Create a text cursor. The query is the search string, `from` to\n `to` provides the region to search.\n \n When `normalize` is given, it will be called, on both the query\n string and the content it is matched against, before comparing.\n You can, for example, create a case-insensitive search by\n passing `s => s.toLowerCase()`.\n \n Text is always normalized with\n [`.normalize(\"NFKD\")`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize)\n (when supported).\n */\n constructor(text, query, from = 0, to = text.length, normalize, test) {\n this.test = test;\n /**\n The current match (only holds a meaningful value after\n [`next`](https://codemirror.net/6/docs/ref/#search.SearchCursor.next) has been called and when\n `done` is false).\n */\n this.value = { from: 0, to: 0 };\n /**\n Whether the end of the iterated region has been reached.\n */\n this.done = false;\n this.matches = [];\n this.buffer = \"\";\n this.bufferPos = 0;\n this.iter = text.iterRange(from, to);\n this.bufferStart = from;\n this.normalize = normalize ? x => normalize(basicNormalize(x)) : basicNormalize;\n this.query = this.normalize(query);\n }\n peek() {\n if (this.bufferPos == this.buffer.length) {\n this.bufferStart += this.buffer.length;\n this.iter.next();\n if (this.iter.done)\n return -1;\n this.bufferPos = 0;\n this.buffer = this.iter.value;\n }\n return codePointAt(this.buffer, this.bufferPos);\n }\n /**\n Look for the next match. Updates the iterator's\n [`value`](https://codemirror.net/6/docs/ref/#search.SearchCursor.value) and\n [`done`](https://codemirror.net/6/docs/ref/#search.SearchCursor.done) properties. Should be called\n at least once before using the cursor.\n */\n next() {\n while (this.matches.length)\n this.matches.pop();\n return this.nextOverlapping();\n }\n /**\n The `next` method will ignore matches that partially overlap a\n previous match. This method behaves like `next`, but includes\n such matches.\n */\n nextOverlapping() {\n for (;;) {\n let next = this.peek();\n if (next < 0) {\n this.done = true;\n return this;\n }\n let str = fromCodePoint(next), start = this.bufferStart + this.bufferPos;\n this.bufferPos += codePointSize(next);\n let norm = this.normalize(str);\n if (norm.length)\n for (let i = 0, pos = start;; i++) {\n let code = norm.charCodeAt(i);\n let match = this.match(code, pos, this.bufferPos + this.bufferStart);\n if (i == norm.length - 1) {\n if (match) {\n this.value = match;\n return this;\n }\n break;\n }\n if (pos == start && i < str.length && str.charCodeAt(i) == code)\n pos++;\n }\n }\n }\n match(code, pos, end) {\n let match = null;\n for (let i = 0; i < this.matches.length; i += 2) {\n let index = this.matches[i], keep = false;\n if (this.query.charCodeAt(index) == code) {\n if (index == this.query.length - 1) {\n match = { from: this.matches[i + 1], to: end };\n }\n else {\n this.matches[i]++;\n keep = true;\n }\n }\n if (!keep) {\n this.matches.splice(i, 2);\n i -= 2;\n }\n }\n if (this.query.charCodeAt(0) == code) {\n if (this.query.length == 1)\n match = { from: pos, to: end };\n else\n this.matches.push(1, pos);\n }\n if (match && this.test && !this.test(match.from, match.to, this.buffer, this.bufferStart))\n match = null;\n return match;\n }\n}\nif (typeof Symbol != \"undefined\")\n SearchCursor.prototype[Symbol.iterator] = function () { return this; };\n\nconst empty = { from: -1, to: -1, match: /*@__PURE__*//.*/.exec(\"\") };\nconst baseFlags = \"gm\" + (/x/.unicode == null ? \"\" : \"u\");\n/**\nThis class is similar to [`SearchCursor`](https://codemirror.net/6/docs/ref/#search.SearchCursor)\nbut searches for a regular expression pattern instead of a plain\nstring.\n*/\nclass RegExpCursor {\n /**\n Create a cursor that will search the given range in the given\n document. `query` should be the raw pattern (as you'd pass it to\n `new RegExp`).\n */\n constructor(text, query, options, from = 0, to = text.length) {\n this.text = text;\n this.to = to;\n this.curLine = \"\";\n /**\n Set to `true` when the cursor has reached the end of the search\n range.\n */\n this.done = false;\n /**\n Will contain an object with the extent of the match and the\n match object when [`next`](https://codemirror.net/6/docs/ref/#search.RegExpCursor.next)\n sucessfully finds a match.\n */\n this.value = empty;\n if (/\\\\[sWDnr]|\\n|\\r|\\[\\^/.test(query))\n return new MultilineRegExpCursor(text, query, options, from, to);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.iter = text.iter();\n let startLine = text.lineAt(from);\n this.curLineStart = startLine.from;\n this.matchPos = toCharEnd(text, from);\n this.getLine(this.curLineStart);\n }\n getLine(skip) {\n this.iter.next(skip);\n if (this.iter.lineBreak) {\n this.curLine = \"\";\n }\n else {\n this.curLine = this.iter.value;\n if (this.curLineStart + this.curLine.length > this.to)\n this.curLine = this.curLine.slice(0, this.to - this.curLineStart);\n this.iter.next();\n }\n }\n nextLine() {\n this.curLineStart = this.curLineStart + this.curLine.length + 1;\n if (this.curLineStart > this.to)\n this.curLine = \"\";\n else\n this.getLine(0);\n }\n /**\n Move to the next match, if there is one.\n */\n next() {\n for (let off = this.matchPos - this.curLineStart;;) {\n this.re.lastIndex = off;\n let match = this.matchPos <= this.to && this.re.exec(this.curLine);\n if (match) {\n let from = this.curLineStart + match.index, to = from + match[0].length;\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n if (from == this.curLineStart + this.curLine.length)\n this.nextLine();\n if ((from < to || from > this.value.to) && (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n return this;\n }\n off = this.matchPos - this.curLineStart;\n }\n else if (this.curLineStart + this.curLine.length < this.to) {\n this.nextLine();\n off = 0;\n }\n else {\n this.done = true;\n return this;\n }\n }\n }\n}\nconst flattened = /*@__PURE__*/new WeakMap();\n// Reusable (partially) flattened document strings\nclass FlattenedDoc {\n constructor(from, text) {\n this.from = from;\n this.text = text;\n }\n get to() { return this.from + this.text.length; }\n static get(doc, from, to) {\n let cached = flattened.get(doc);\n if (!cached || cached.from >= to || cached.to <= from) {\n let flat = new FlattenedDoc(from, doc.sliceString(from, to));\n flattened.set(doc, flat);\n return flat;\n }\n if (cached.from == from && cached.to == to)\n return cached;\n let { text, from: cachedFrom } = cached;\n if (cachedFrom > from) {\n text = doc.sliceString(from, cachedFrom) + text;\n cachedFrom = from;\n }\n if (cached.to < to)\n text += doc.sliceString(cached.to, to);\n flattened.set(doc, new FlattenedDoc(cachedFrom, text));\n return new FlattenedDoc(from, text.slice(from - cachedFrom, to - cachedFrom));\n }\n}\nclass MultilineRegExpCursor {\n constructor(text, query, options, from, to) {\n this.text = text;\n this.to = to;\n this.done = false;\n this.value = empty;\n this.matchPos = toCharEnd(text, from);\n this.re = new RegExp(query, baseFlags + ((options === null || options === void 0 ? void 0 : options.ignoreCase) ? \"i\" : \"\"));\n this.test = options === null || options === void 0 ? void 0 : options.test;\n this.flat = FlattenedDoc.get(text, from, this.chunkEnd(from + 5000 /* Chunk.Base */));\n }\n chunkEnd(pos) {\n return pos >= this.to ? this.to : this.text.lineAt(pos).to;\n }\n next() {\n for (;;) {\n let off = this.re.lastIndex = this.matchPos - this.flat.from;\n let match = this.re.exec(this.flat.text);\n // Skip empty matches directly after the last match\n if (match && !match[0] && match.index == off) {\n this.re.lastIndex = off + 1;\n match = this.re.exec(this.flat.text);\n }\n if (match) {\n let from = this.flat.from + match.index, to = from + match[0].length;\n // If a match goes almost to the end of a noncomplete chunk, try\n // again, since it'll likely be able to match more\n if ((this.flat.to >= this.to || match.index + match[0].length <= this.flat.text.length - 10) &&\n (!this.test || this.test(from, to, match))) {\n this.value = { from, to, match };\n this.matchPos = toCharEnd(this.text, to + (from == to ? 1 : 0));\n return this;\n }\n }\n if (this.flat.to == this.to) {\n this.done = true;\n return this;\n }\n // Grow the flattened doc\n this.flat = FlattenedDoc.get(this.text, this.flat.from, this.chunkEnd(this.flat.from + this.flat.text.length * 2));\n }\n }\n}\nif (typeof Symbol != \"undefined\") {\n RegExpCursor.prototype[Symbol.iterator] = MultilineRegExpCursor.prototype[Symbol.iterator] =\n function () { return this; };\n}\nfunction validRegExp(source) {\n try {\n new RegExp(source, baseFlags);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction toCharEnd(text, pos) {\n if (pos >= text.length)\n return pos;\n let line = text.lineAt(pos), next;\n while (pos < line.to && (next = line.text.charCodeAt(pos - line.from)) >= 0xDC00 && next < 0xE000)\n pos++;\n return pos;\n}\n\n/**\nCommand that shows a dialog asking the user for a line number, and\nwhen a valid position is provided, moves the cursor to that line.\n\nSupports line numbers, relative line offsets prefixed with `+` or\n`-`, document percentages suffixed with `%`, and an optional\ncolumn position by adding `:` and a second number after the line\nnumber.\n*/\nconst gotoLine = view => {\n let { state } = view;\n let line = String(state.doc.lineAt(view.state.selection.main.head).number);\n let { close, result } = showDialog(view, {\n label: state.phrase(\"Go to line\"),\n input: { type: \"text\", name: \"line\", value: line },\n focus: true,\n submitLabel: state.phrase(\"go\"),\n });\n result.then(form => {\n let match = form && /^([+-])?(\\d+)?(:\\d+)?(%)?$/.exec(form.elements[\"line\"].value);\n if (!match) {\n view.dispatch({ effects: close });\n return;\n }\n let startLine = state.doc.lineAt(state.selection.main.head);\n let [, sign, ln, cl, percent] = match;\n let col = cl ? +cl.slice(1) : 0;\n let line = ln ? +ln : startLine.number;\n if (ln && percent) {\n let pc = line / 100;\n if (sign)\n pc = pc * (sign == \"-\" ? -1 : 1) + (startLine.number / state.doc.lines);\n line = Math.round(state.doc.lines * pc);\n }\n else if (ln && sign) {\n line = line * (sign == \"-\" ? -1 : 1) + startLine.number;\n }\n let docLine = state.doc.line(Math.max(1, Math.min(state.doc.lines, line)));\n let selection = EditorSelection.cursor(docLine.from + Math.max(0, Math.min(col, docLine.length)));\n view.dispatch({\n effects: [close, EditorView.scrollIntoView(selection.from, { y: 'center' })],\n selection,\n });\n });\n return true;\n};\n\nconst defaultHighlightOptions = {\n highlightWordAroundCursor: false,\n minSelectionLength: 1,\n maxMatches: 100,\n wholeWords: false\n};\nconst highlightConfig = /*@__PURE__*/Facet.define({\n combine(options) {\n return combineConfig(options, defaultHighlightOptions, {\n highlightWordAroundCursor: (a, b) => a || b,\n minSelectionLength: Math.min,\n maxMatches: Math.min\n });\n }\n});\n/**\nThis extension highlights text that matches the selection. It uses\nthe `\"cm-selectionMatch\"` class for the highlighting. When\n`highlightWordAroundCursor` is enabled, the word at the cursor\nitself will be highlighted with `\"cm-selectionMatch-main\"`.\n*/\nfunction highlightSelectionMatches(options) {\n let ext = [defaultTheme, matchHighlighter];\n if (options)\n ext.push(highlightConfig.of(options));\n return ext;\n}\nconst matchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch\" });\nconst mainMatchDeco = /*@__PURE__*/Decoration.mark({ class: \"cm-selectionMatch cm-selectionMatch-main\" });\n// Whether the characters directly outside the given positions are non-word characters\nfunction insideWordBoundaries(check, state, from, to) {\n return (from == 0 || check(state.sliceDoc(from - 1, from)) != CharCategory.Word) &&\n (to == state.doc.length || check(state.sliceDoc(to, to + 1)) != CharCategory.Word);\n}\n// Whether the characters directly at the given positions are word characters\nfunction insideWord(check, state, from, to) {\n return check(state.sliceDoc(from, from + 1)) == CharCategory.Word\n && check(state.sliceDoc(to - 1, to)) == CharCategory.Word;\n}\nconst matchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.decorations = this.getDeco(view);\n }\n update(update) {\n if (update.selectionSet || update.docChanged || update.viewportChanged)\n this.decorations = this.getDeco(update.view);\n }\n getDeco(view) {\n let conf = view.state.facet(highlightConfig);\n let { state } = view, sel = state.selection;\n if (sel.ranges.length > 1)\n return Decoration.none;\n let range = sel.main, query, check = null;\n if (range.empty) {\n if (!conf.highlightWordAroundCursor)\n return Decoration.none;\n let word = state.wordAt(range.head);\n if (!word)\n return Decoration.none;\n check = state.charCategorizer(range.head);\n query = state.sliceDoc(word.from, word.to);\n }\n else {\n let len = range.to - range.from;\n if (len < conf.minSelectionLength || len > 200)\n return Decoration.none;\n if (conf.wholeWords) {\n query = state.sliceDoc(range.from, range.to); // TODO: allow and include leading/trailing space?\n check = state.charCategorizer(range.head);\n if (!(insideWordBoundaries(check, state, range.from, range.to) &&\n insideWord(check, state, range.from, range.to)))\n return Decoration.none;\n }\n else {\n query = state.sliceDoc(range.from, range.to);\n if (!query)\n return Decoration.none;\n }\n }\n let deco = [];\n for (let part of view.visibleRanges) {\n let cursor = new SearchCursor(state.doc, query, part.from, part.to);\n while (!cursor.next().done) {\n let { from, to } = cursor.value;\n if (!check || insideWordBoundaries(check, state, from, to)) {\n if (range.empty && from <= range.from && to >= range.to)\n deco.push(mainMatchDeco.range(from, to));\n else if (from >= range.to || to <= range.from)\n deco.push(matchDeco.range(from, to));\n if (deco.length > conf.maxMatches)\n return Decoration.none;\n }\n }\n }\n return Decoration.set(deco);\n }\n}, {\n decorations: v => v.decorations\n});\nconst defaultTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-selectionMatch\": { backgroundColor: \"#99ff7780\" },\n \".cm-searchMatch .cm-selectionMatch\": { backgroundColor: \"transparent\" }\n});\n// Select the words around the cursors.\nconst selectWord = ({ state, dispatch }) => {\n let { selection } = state;\n let newSel = EditorSelection.create(selection.ranges.map(range => state.wordAt(range.head) || EditorSelection.cursor(range.head)), selection.mainIndex);\n if (newSel.eq(selection))\n return false;\n dispatch(state.update({ selection: newSel }));\n return true;\n};\n// Find next occurrence of query relative to last cursor. Wrap around\n// the document if there are no more matches.\nfunction findNextOccurrence(state, query) {\n let { main, ranges } = state.selection;\n let word = state.wordAt(main.head), fullWord = word && word.from == main.from && word.to == main.to;\n for (let cycled = false, cursor = new SearchCursor(state.doc, query, ranges[ranges.length - 1].to);;) {\n cursor.next();\n if (cursor.done) {\n if (cycled)\n return null;\n cursor = new SearchCursor(state.doc, query, 0, Math.max(0, ranges[ranges.length - 1].from - 1));\n cycled = true;\n }\n else {\n if (cycled && ranges.some(r => r.from == cursor.value.from))\n continue;\n if (fullWord) {\n let word = state.wordAt(cursor.value.from);\n if (!word || word.from != cursor.value.from || word.to != cursor.value.to)\n continue;\n }\n return cursor.value;\n }\n }\n}\n/**\nSelect next occurrence of the current selection. Expand selection\nto the surrounding word when the selection is empty.\n*/\nconst selectNextOccurrence = ({ state, dispatch }) => {\n let { ranges } = state.selection;\n if (ranges.some(sel => sel.from === sel.to))\n return selectWord({ state, dispatch });\n let searchedText = state.sliceDoc(ranges[0].from, ranges[0].to);\n if (state.selection.ranges.some(r => state.sliceDoc(r.from, r.to) != searchedText))\n return false;\n let range = findNextOccurrence(state, searchedText);\n if (!range)\n return false;\n dispatch(state.update({\n selection: state.selection.addRange(EditorSelection.range(range.from, range.to), false),\n effects: EditorView.scrollIntoView(range.to)\n }));\n return true;\n};\n\nconst searchConfigFacet = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n top: false,\n caseSensitive: false,\n literal: false,\n regexp: false,\n wholeWord: false,\n createPanel: view => new SearchPanel(view),\n scrollToMatch: range => EditorView.scrollIntoView(range)\n });\n }\n});\n/**\nAdd search state to the editor configuration, and optionally\nconfigure the search extension.\n([`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) will automatically\nenable this if it isn't already on).\n*/\nfunction search(config) {\n return config ? [searchConfigFacet.of(config), searchExtensions] : searchExtensions;\n}\n/**\nA search query. Part of the editor's search state.\n*/\nclass SearchQuery {\n /**\n Create a query object.\n */\n constructor(config) {\n this.search = config.search;\n this.caseSensitive = !!config.caseSensitive;\n this.literal = !!config.literal;\n this.regexp = !!config.regexp;\n this.replace = config.replace || \"\";\n this.valid = !!this.search && (!this.regexp || validRegExp(this.search));\n this.unquoted = this.unquote(this.search);\n this.wholeWord = !!config.wholeWord;\n this.test = config.test;\n }\n /**\n @internal\n */\n unquote(text) {\n return this.literal ? text :\n text.replace(/\\\\([nrt\\\\])/g, (_, ch) => ch == \"n\" ? \"\\n\" : ch == \"r\" ? \"\\r\" : ch == \"t\" ? \"\\t\" : \"\\\\\");\n }\n /**\n Compare this query to another query.\n */\n eq(other) {\n return this.search == other.search && this.replace == other.replace &&\n this.caseSensitive == other.caseSensitive && this.regexp == other.regexp &&\n this.wholeWord == other.wholeWord && this.test == other.test;\n }\n /**\n @internal\n */\n create() {\n return this.regexp ? new RegExpQuery(this) : new StringQuery(this);\n }\n /**\n Get a search cursor for this query, searching through the given\n range in the given state.\n */\n getCursor(state, from = 0, to) {\n let st = state.doc ? state : EditorState.create({ doc: state });\n if (to == null)\n to = st.doc.length;\n return this.regexp ? regexpCursor(this, st, from, to) : stringCursor(this, st, from, to);\n }\n}\nclass QueryType {\n constructor(spec) {\n this.spec = spec;\n }\n}\nfunction wrapStringTest(test, state, inner) {\n return (from, to, buffer, bufferPos) => {\n if (inner && !inner(from, to, buffer, bufferPos))\n return false;\n let match = from >= bufferPos && to <= bufferPos + buffer.length\n ? buffer.slice(from - bufferPos, to - bufferPos)\n : state.doc.sliceString(from, to);\n return test(match, state, from, to);\n };\n}\nfunction stringCursor(spec, state, from, to) {\n let test;\n if (spec.wholeWord)\n test = stringWordTest(state.doc, state.charCategorizer(state.selection.main.head));\n if (spec.test)\n test = wrapStringTest(spec.test, state, test);\n return new SearchCursor(state.doc, spec.unquoted, from, to, spec.caseSensitive ? undefined : x => x.toLowerCase(), test);\n}\nfunction stringWordTest(doc, categorizer) {\n return (from, to, buf, bufPos) => {\n if (bufPos > from || bufPos + buf.length < to) {\n bufPos = Math.max(0, from - 2);\n buf = doc.sliceString(bufPos, Math.min(doc.length, to + 2));\n }\n return (categorizer(charBefore(buf, from - bufPos)) != CharCategory.Word ||\n categorizer(charAfter(buf, from - bufPos)) != CharCategory.Word) &&\n (categorizer(charAfter(buf, to - bufPos)) != CharCategory.Word ||\n categorizer(charBefore(buf, to - bufPos)) != CharCategory.Word);\n };\n}\nclass StringQuery extends QueryType {\n constructor(spec) {\n super(spec);\n }\n nextMatch(state, curFrom, curTo) {\n let cursor = stringCursor(this.spec, state, curTo, state.doc.length).nextOverlapping();\n if (cursor.done) {\n let end = Math.min(state.doc.length, curFrom + this.spec.unquoted.length);\n cursor = stringCursor(this.spec, state, 0, end).nextOverlapping();\n }\n return cursor.done || cursor.value.from == curFrom && cursor.value.to == curTo ? null : cursor.value;\n }\n // Searching in reverse is, rather than implementing an inverted search\n // cursor, done by scanning chunk after chunk forward.\n prevMatchInRange(state, from, to) {\n for (let pos = to;;) {\n let start = Math.max(from, pos - 10000 /* FindPrev.ChunkSize */ - this.spec.unquoted.length);\n let cursor = stringCursor(this.spec, state, start, pos), range = null;\n while (!cursor.nextOverlapping().done)\n range = cursor.value;\n if (range)\n return range;\n if (start == from)\n return null;\n pos -= 10000 /* FindPrev.ChunkSize */;\n }\n }\n prevMatch(state, curFrom, curTo) {\n let found = this.prevMatchInRange(state, 0, curFrom);\n if (!found)\n found = this.prevMatchInRange(state, Math.max(0, curTo - this.spec.unquoted.length), state.doc.length);\n return found && (found.from != curFrom || found.to != curTo) ? found : null;\n }\n getReplacement(_result) { return this.spec.unquote(this.spec.replace); }\n matchAll(state, limit) {\n let cursor = stringCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = stringCursor(this.spec, state, Math.max(0, from - this.spec.unquoted.length), Math.min(to + this.spec.unquoted.length, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\nfunction wrapRegexpTest(test, state, inner) {\n return (from, to, match) => {\n return (!inner || inner(from, to, match)) && test(match[0], state, from, to);\n };\n}\nfunction regexpCursor(spec, state, from, to) {\n let test;\n if (spec.wholeWord)\n test = regexpWordTest(state.charCategorizer(state.selection.main.head));\n if (spec.test)\n test = wrapRegexpTest(spec.test, state, test);\n return new RegExpCursor(state.doc, spec.search, { ignoreCase: !spec.caseSensitive, test }, from, to);\n}\nfunction charBefore(str, index) {\n return str.slice(findClusterBreak(str, index, false), index);\n}\nfunction charAfter(str, index) {\n return str.slice(index, findClusterBreak(str, index));\n}\nfunction regexpWordTest(categorizer) {\n return (_from, _to, match) => !match[0].length ||\n (categorizer(charBefore(match.input, match.index)) != CharCategory.Word ||\n categorizer(charAfter(match.input, match.index)) != CharCategory.Word) &&\n (categorizer(charAfter(match.input, match.index + match[0].length)) != CharCategory.Word ||\n categorizer(charBefore(match.input, match.index + match[0].length)) != CharCategory.Word);\n}\nclass RegExpQuery extends QueryType {\n nextMatch(state, curFrom, curTo) {\n let cursor = regexpCursor(this.spec, state, curTo, state.doc.length).next();\n if (cursor.done)\n cursor = regexpCursor(this.spec, state, 0, curFrom).next();\n return cursor.done ? null : cursor.value;\n }\n prevMatchInRange(state, from, to) {\n for (let size = 1;; size++) {\n let start = Math.max(from, to - size * 10000 /* FindPrev.ChunkSize */);\n let cursor = regexpCursor(this.spec, state, start, to), range = null;\n while (!cursor.next().done)\n range = cursor.value;\n if (range && (start == from || range.from > start + 10))\n return range;\n if (start == from)\n return null;\n }\n }\n prevMatch(state, curFrom, curTo) {\n return this.prevMatchInRange(state, 0, curFrom) ||\n this.prevMatchInRange(state, curTo, state.doc.length);\n }\n getReplacement(result) {\n return this.spec.unquote(this.spec.replace).replace(/\\$([$&]|\\d+)/g, (m, i) => {\n if (i == \"&\")\n return result.match[0];\n if (i == \"$\")\n return \"$\";\n for (let l = i.length; l > 0; l--) {\n let n = +i.slice(0, l);\n if (n > 0 && n < result.match.length)\n return result.match[n] + i.slice(l);\n }\n return m;\n });\n }\n matchAll(state, limit) {\n let cursor = regexpCursor(this.spec, state, 0, state.doc.length), ranges = [];\n while (!cursor.next().done) {\n if (ranges.length >= limit)\n return null;\n ranges.push(cursor.value);\n }\n return ranges;\n }\n highlight(state, from, to, add) {\n let cursor = regexpCursor(this.spec, state, Math.max(0, from - 250 /* RegExp.HighlightMargin */), Math.min(to + 250 /* RegExp.HighlightMargin */, state.doc.length));\n while (!cursor.next().done)\n add(cursor.value.from, cursor.value.to);\n }\n}\n/**\nA state effect that updates the current search query. Note that\nthis only has an effect if the search state has been initialized\n(by including [`search`](https://codemirror.net/6/docs/ref/#search.search) in your configuration or\nby running [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel) at least\nonce).\n*/\nconst setSearchQuery = /*@__PURE__*/StateEffect.define();\nconst togglePanel = /*@__PURE__*/StateEffect.define();\nconst searchState = /*@__PURE__*/StateField.define({\n create(state) {\n return new SearchState(defaultQuery(state).create(), null);\n },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery))\n value = new SearchState(effect.value.create(), value.panel);\n else if (effect.is(togglePanel))\n value = new SearchState(value.query, effect.value ? createSearchPanel : null);\n }\n return value;\n },\n provide: f => showPanel.from(f, val => val.panel)\n});\n/**\nGet the current search query from an editor state.\n*/\nfunction getSearchQuery(state) {\n let curState = state.field(searchState, false);\n return curState ? curState.query.spec : defaultQuery(state);\n}\n/**\nQuery whether the search panel is open in the given editor state.\n*/\nfunction searchPanelOpen(state) {\n var _a;\n return ((_a = state.field(searchState, false)) === null || _a === void 0 ? void 0 : _a.panel) != null;\n}\nclass SearchState {\n constructor(query, panel) {\n this.query = query;\n this.panel = panel;\n }\n}\nconst matchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch\" }), selectedMatchMark = /*@__PURE__*/Decoration.mark({ class: \"cm-searchMatch cm-searchMatch-selected\" });\nconst searchHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.decorations = this.highlight(view.state.field(searchState));\n }\n update(update) {\n let state = update.state.field(searchState);\n if (state != update.startState.field(searchState) || update.docChanged || update.selectionSet || update.viewportChanged)\n this.decorations = this.highlight(state);\n }\n highlight({ query, panel }) {\n if (!panel || !query.spec.valid)\n return Decoration.none;\n let { view } = this;\n let builder = new RangeSetBuilder();\n for (let i = 0, ranges = view.visibleRanges, l = ranges.length; i < l; i++) {\n let { from, to } = ranges[i];\n while (i < l - 1 && to > ranges[i + 1].from - 2 * 250 /* RegExp.HighlightMargin */)\n to = ranges[++i].to;\n query.highlight(view.state, from, to, (from, to) => {\n let selected = view.state.selection.ranges.some(r => r.from == from && r.to == to);\n builder.add(from, to, selected ? selectedMatchMark : matchMark);\n });\n }\n return builder.finish();\n }\n}, {\n decorations: v => v.decorations\n});\nfunction searchCommand(f) {\n return view => {\n let state = view.state.field(searchState, false);\n return state && state.query.spec.valid ? f(view, state) : openSearchPanel(view);\n };\n}\n/**\nOpen the search panel if it isn't already open, and move the\nselection to the first match after the current main selection.\nWill wrap around to the start of the document when it reaches the\nend.\n*/\nconst findNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { to } = view.state.selection.main;\n let next = query.nextMatch(view.state, to, to);\n if (!next)\n return false;\n let selection = EditorSelection.single(next.from, next.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, next), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nMove the selection to the previous instance of the search query,\nbefore the current main selection. Will wrap past the start\nof the document to start searching at the end again.\n*/\nconst findPrevious = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from } = state.selection.main;\n let prev = query.prevMatch(state, from, from);\n if (!prev)\n return false;\n let selection = EditorSelection.single(prev.from, prev.to);\n let config = view.state.facet(searchConfigFacet);\n view.dispatch({\n selection,\n effects: [announceMatch(view, prev), config.scrollToMatch(selection.main, view)],\n userEvent: \"select.search\"\n });\n selectSearchInput(view);\n return true;\n});\n/**\nSelect all instances of the search query.\n*/\nconst selectMatches = /*@__PURE__*/searchCommand((view, { query }) => {\n let ranges = query.matchAll(view.state, 1000);\n if (!ranges || !ranges.length)\n return false;\n view.dispatch({\n selection: EditorSelection.create(ranges.map(r => EditorSelection.range(r.from, r.to))),\n userEvent: \"select.search.matches\"\n });\n return true;\n});\n/**\nSelect all instances of the currently selected text.\n*/\nconst selectSelectionMatches = ({ state, dispatch }) => {\n let sel = state.selection;\n if (sel.ranges.length > 1 || sel.main.empty)\n return false;\n let { from, to } = sel.main;\n let ranges = [], main = 0;\n for (let cur = new SearchCursor(state.doc, state.sliceDoc(from, to)); !cur.next().done;) {\n if (ranges.length > 1000)\n return false;\n if (cur.value.from == from)\n main = ranges.length;\n ranges.push(EditorSelection.range(cur.value.from, cur.value.to));\n }\n dispatch(state.update({\n selection: EditorSelection.create(ranges, main),\n userEvent: \"select.search.matches\"\n }));\n return true;\n};\n/**\nReplace the current match of the search query.\n*/\nconst replaceNext = /*@__PURE__*/searchCommand((view, { query }) => {\n let { state } = view, { from, to } = state.selection.main;\n if (state.readOnly)\n return false;\n let match = query.nextMatch(state, from, from);\n if (!match)\n return false;\n let next = match;\n let changes = [], selection, replacement;\n let effects = [];\n if (next.from == from && next.to == to) {\n replacement = state.toText(query.getReplacement(next));\n changes.push({ from: next.from, to: next.to, insert: replacement });\n next = query.nextMatch(state, next.from, next.to);\n effects.push(EditorView.announce.of(state.phrase(\"replaced match on line $\", state.doc.lineAt(from).number) + \".\"));\n }\n let changeSet = view.state.changes(changes);\n if (next) {\n selection = EditorSelection.single(next.from, next.to).map(changeSet);\n effects.push(announceMatch(view, next));\n effects.push(state.facet(searchConfigFacet).scrollToMatch(selection.main, view));\n }\n view.dispatch({\n changes: changeSet,\n selection,\n effects,\n userEvent: \"input.replace\"\n });\n return true;\n});\n/**\nReplace all instances of the search query with the given\nreplacement.\n*/\nconst replaceAll = /*@__PURE__*/searchCommand((view, { query }) => {\n if (view.state.readOnly)\n return false;\n let changes = query.matchAll(view.state, 1e9).map(match => {\n let { from, to } = match;\n return { from, to, insert: query.getReplacement(match) };\n });\n if (!changes.length)\n return false;\n let announceText = view.state.phrase(\"replaced $ matches\", changes.length) + \".\";\n view.dispatch({\n changes,\n effects: EditorView.announce.of(announceText),\n userEvent: \"input.replace.all\"\n });\n return true;\n});\nfunction createSearchPanel(view) {\n return view.state.facet(searchConfigFacet).createPanel(view);\n}\nfunction defaultQuery(state, fallback) {\n var _a, _b, _c, _d, _e;\n let sel = state.selection.main;\n let selText = sel.empty || sel.to > sel.from + 100 ? \"\" : state.sliceDoc(sel.from, sel.to);\n if (fallback && !selText)\n return fallback;\n let config = state.facet(searchConfigFacet);\n return new SearchQuery({\n search: ((_a = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _a !== void 0 ? _a : config.literal) ? selText : selText.replace(/\\n/g, \"\\\\n\"),\n caseSensitive: (_b = fallback === null || fallback === void 0 ? void 0 : fallback.caseSensitive) !== null && _b !== void 0 ? _b : config.caseSensitive,\n literal: (_c = fallback === null || fallback === void 0 ? void 0 : fallback.literal) !== null && _c !== void 0 ? _c : config.literal,\n regexp: (_d = fallback === null || fallback === void 0 ? void 0 : fallback.regexp) !== null && _d !== void 0 ? _d : config.regexp,\n wholeWord: (_e = fallback === null || fallback === void 0 ? void 0 : fallback.wholeWord) !== null && _e !== void 0 ? _e : config.wholeWord\n });\n}\nfunction getSearchInput(view) {\n let panel = getPanel(view, createSearchPanel);\n return panel && panel.dom.querySelector(\"[main-field]\");\n}\nfunction selectSearchInput(view) {\n let input = getSearchInput(view);\n if (input && input == view.root.activeElement)\n input.select();\n}\n/**\nMake sure the search panel is open and focused.\n*/\nconst openSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (state && state.panel) {\n let searchInput = getSearchInput(view);\n if (searchInput && searchInput != view.root.activeElement) {\n let query = defaultQuery(view.state, state.query.spec);\n if (query.valid)\n view.dispatch({ effects: setSearchQuery.of(query) });\n searchInput.focus();\n searchInput.select();\n }\n }\n else {\n view.dispatch({ effects: [\n togglePanel.of(true),\n state ? setSearchQuery.of(defaultQuery(view.state, state.query.spec)) : StateEffect.appendConfig.of(searchExtensions)\n ] });\n }\n return true;\n};\n/**\nClose the search panel.\n*/\nconst closeSearchPanel = view => {\n let state = view.state.field(searchState, false);\n if (!state || !state.panel)\n return false;\n let panel = getPanel(view, createSearchPanel);\n if (panel && panel.dom.contains(view.root.activeElement))\n view.focus();\n view.dispatch({ effects: togglePanel.of(false) });\n return true;\n};\n/**\nDefault search-related key bindings.\n\n - Mod-f: [`openSearchPanel`](https://codemirror.net/6/docs/ref/#search.openSearchPanel)\n - F3, Mod-g: [`findNext`](https://codemirror.net/6/docs/ref/#search.findNext)\n - Shift-F3, Shift-Mod-g: [`findPrevious`](https://codemirror.net/6/docs/ref/#search.findPrevious)\n - Mod-Alt-g: [`gotoLine`](https://codemirror.net/6/docs/ref/#search.gotoLine)\n - Mod-d: [`selectNextOccurrence`](https://codemirror.net/6/docs/ref/#search.selectNextOccurrence)\n*/\nconst searchKeymap = [\n { key: \"Mod-f\", run: openSearchPanel, scope: \"editor search-panel\" },\n { key: \"F3\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Mod-g\", run: findNext, shift: findPrevious, scope: \"editor search-panel\", preventDefault: true },\n { key: \"Escape\", run: closeSearchPanel, scope: \"editor search-panel\" },\n { key: \"Mod-Shift-l\", run: selectSelectionMatches },\n { key: \"Mod-Alt-g\", run: gotoLine },\n { key: \"Mod-d\", run: selectNextOccurrence, preventDefault: true },\n];\nclass SearchPanel {\n constructor(view) {\n this.view = view;\n let query = this.query = view.state.field(searchState).query.spec;\n this.commit = this.commit.bind(this);\n this.searchField = elt(\"input\", {\n value: query.search,\n placeholder: phrase(view, \"Find\"),\n \"aria-label\": phrase(view, \"Find\"),\n class: \"cm-textfield\",\n name: \"search\",\n form: \"\",\n \"main-field\": \"true\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.replaceField = elt(\"input\", {\n value: query.replace,\n placeholder: phrase(view, \"Replace\"),\n \"aria-label\": phrase(view, \"Replace\"),\n class: \"cm-textfield\",\n name: \"replace\",\n form: \"\",\n onchange: this.commit,\n onkeyup: this.commit\n });\n this.caseField = elt(\"input\", {\n type: \"checkbox\",\n name: \"case\",\n form: \"\",\n checked: query.caseSensitive,\n onchange: this.commit\n });\n this.reField = elt(\"input\", {\n type: \"checkbox\",\n name: \"re\",\n form: \"\",\n checked: query.regexp,\n onchange: this.commit\n });\n this.wordField = elt(\"input\", {\n type: \"checkbox\",\n name: \"word\",\n form: \"\",\n checked: query.wholeWord,\n onchange: this.commit\n });\n function button(name, onclick, content) {\n return elt(\"button\", { class: \"cm-button\", name, onclick, type: \"button\" }, content);\n }\n this.dom = elt(\"div\", { onkeydown: (e) => this.keydown(e), class: \"cm-search\" }, [\n this.searchField,\n button(\"next\", () => findNext(view), [phrase(view, \"next\")]),\n button(\"prev\", () => findPrevious(view), [phrase(view, \"previous\")]),\n button(\"select\", () => selectMatches(view), [phrase(view, \"all\")]),\n elt(\"label\", null, [this.caseField, phrase(view, \"match case\")]),\n elt(\"label\", null, [this.reField, phrase(view, \"regexp\")]),\n elt(\"label\", null, [this.wordField, phrase(view, \"by word\")]),\n ...view.state.readOnly ? [] : [\n elt(\"br\"),\n this.replaceField,\n button(\"replace\", () => replaceNext(view), [phrase(view, \"replace\")]),\n button(\"replaceAll\", () => replaceAll(view), [phrase(view, \"replace all\")])\n ],\n elt(\"button\", {\n name: \"close\",\n onclick: () => closeSearchPanel(view),\n \"aria-label\": phrase(view, \"close\"),\n type: \"button\"\n }, [\"×\"])\n ]);\n }\n commit() {\n let query = new SearchQuery({\n search: this.searchField.value,\n caseSensitive: this.caseField.checked,\n regexp: this.reField.checked,\n wholeWord: this.wordField.checked,\n replace: this.replaceField.value,\n });\n if (!query.eq(this.query)) {\n this.query = query;\n this.view.dispatch({ effects: setSearchQuery.of(query) });\n }\n }\n keydown(e) {\n if (runScopeHandlers(this.view, e, \"search-panel\")) {\n e.preventDefault();\n }\n else if (e.keyCode == 13 && e.target == this.searchField) {\n e.preventDefault();\n (e.shiftKey ? findPrevious : findNext)(this.view);\n }\n else if (e.keyCode == 13 && e.target == this.replaceField) {\n e.preventDefault();\n replaceNext(this.view);\n }\n }\n update(update) {\n for (let tr of update.transactions)\n for (let effect of tr.effects) {\n if (effect.is(setSearchQuery) && !effect.value.eq(this.query))\n this.setQuery(effect.value);\n }\n }\n setQuery(query) {\n this.query = query;\n this.searchField.value = query.search;\n this.replaceField.value = query.replace;\n this.caseField.checked = query.caseSensitive;\n this.reField.checked = query.regexp;\n this.wordField.checked = query.wholeWord;\n }\n mount() {\n this.searchField.select();\n }\n get pos() { return 80; }\n get top() { return this.view.state.facet(searchConfigFacet).top; }\n}\nfunction phrase(view, phrase) { return view.state.phrase(phrase); }\nconst AnnounceMargin = 30;\nconst Break = /[\\s\\.,:;?!]/;\nfunction announceMatch(view, { from, to }) {\n let line = view.state.doc.lineAt(from), lineEnd = view.state.doc.lineAt(to).to;\n let start = Math.max(line.from, from - AnnounceMargin), end = Math.min(lineEnd, to + AnnounceMargin);\n let text = view.state.sliceDoc(start, end);\n if (start != line.from) {\n for (let i = 0; i < AnnounceMargin; i++)\n if (!Break.test(text[i + 1]) && Break.test(text[i])) {\n text = text.slice(i);\n break;\n }\n }\n if (end != lineEnd) {\n for (let i = text.length - 1; i > text.length - AnnounceMargin; i--)\n if (!Break.test(text[i - 1]) && Break.test(text[i])) {\n text = text.slice(0, i);\n break;\n }\n }\n return EditorView.announce.of(`${view.state.phrase(\"current match\")}. ${text} ${view.state.phrase(\"on line\")} ${line.number}.`);\n}\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-panel.cm-search\": {\n padding: \"2px 6px 4px\",\n position: \"relative\",\n \"& [name=close]\": {\n position: \"absolute\",\n top: \"0\",\n right: \"4px\",\n backgroundColor: \"inherit\",\n border: \"none\",\n font: \"inherit\",\n padding: 0,\n margin: 0\n },\n \"& input, & button, & label\": {\n margin: \".2em .6em .2em 0\"\n },\n \"& input[type=checkbox]\": {\n marginRight: \".2em\"\n },\n \"& label\": {\n fontSize: \"80%\",\n whiteSpace: \"pre\"\n }\n },\n \"&light .cm-searchMatch\": { backgroundColor: \"#ffff0054\" },\n \"&dark .cm-searchMatch\": { backgroundColor: \"#00ffff8a\" },\n \"&light .cm-searchMatch-selected\": { backgroundColor: \"#ff6a0054\" },\n \"&dark .cm-searchMatch-selected\": { backgroundColor: \"#ff00ff8a\" }\n});\nconst searchExtensions = [\n searchState,\n /*@__PURE__*/Prec.low(searchHighlighter),\n baseTheme\n];\n\nexport { RegExpCursor, SearchCursor, SearchQuery, closeSearchPanel, findNext, findPrevious, getSearchQuery, gotoLine, highlightSelectionMatches, openSearchPanel, replaceAll, replaceNext, search, searchKeymap, searchPanelOpen, selectMatches, selectNextOccurrence, selectSelectionMatches, setSearchQuery };\n","import { next as A } from \"@automerge/automerge\";\nimport { isReconcileTx } from \"./plugin.js\";\nexport const applyCmTransactionsToAmHandle = (handle, path, transactions) => {\n const transactionsWithChanges = transactions.filter(tr => !isReconcileTx(tr) && !tr.changes.empty);\n if (transactionsWithChanges.length === 0) {\n return;\n }\n handle.change((doc) => {\n transactionsWithChanges.forEach(tr => {\n tr.changes.iterChanges((fromA, toA, fromB, _toB, inserted) => {\n // We are cloning the path as `am.splice` calls `.unshift` on it, modifying it in place,\n // causing the path to be broken on subsequent changes\n A.splice(doc, path.slice(), fromB, toA - fromA, inserted.toString());\n });\n });\n });\n return A.getHeads(handle.doc());\n};\n//# sourceMappingURL=codeMirrorToAm.js.map","import { ChangeSet } from \"@codemirror/state\";\nimport { reconcileAnnotationType } from \"./plugin.js\";\nexport const applyAmPatchesToCm = (view, target, patches) => {\n let selection = view.state.selection;\n for (const patch of patches) {\n const changeSpec = handlePatch(patch, target, view.state);\n if (changeSpec != null) {\n const changeSet = ChangeSet.of(changeSpec, view.state.doc.length, \"\\n\");\n selection = selection.map(changeSet, 1);\n view.dispatch({\n changes: changeSet,\n annotations: reconcileAnnotationType.of({}),\n });\n }\n }\n view.dispatch({\n selection,\n annotations: reconcileAnnotationType.of({}),\n });\n};\nfunction handlePatch(patch, target, state) {\n if (patch.action === \"insert\") {\n return handleInsert(target, patch);\n }\n else if (patch.action === \"splice\") {\n return handleSplice(target, patch);\n }\n else if (patch.action === \"del\") {\n return handleDel(target, patch);\n }\n else if (patch.action === \"put\") {\n return handlePut(target, patch, state);\n }\n else {\n return null;\n }\n}\nfunction handleInsert(target, patch) {\n const index = charPath(target, patch.path);\n if (index == null) {\n return [];\n }\n const text = patch.values.map(v => (v ? v.toString() : \"\")).join(\"\");\n return [{ from: index, to: index, insert: text }];\n}\nfunction handleSplice(target, patch) {\n const index = charPath(target, patch.path);\n if (index == null) {\n return [];\n }\n return [{ from: index, insert: patch.value }];\n}\nfunction handleDel(target, patch) {\n const index = charPath(target, patch.path);\n if (index == null) {\n return [];\n }\n const length = patch.length || 1;\n return [{ from: index, to: index + length }];\n}\nfunction handlePut(target, patch, state) {\n const index = charPath(target, [...patch.path, 0]);\n if (index == null) {\n return [];\n }\n const length = state.doc.length;\n if (typeof patch.value !== \"string\") {\n return []; // TODO(dmaretskyi): How to handle non string values?\n }\n return [{ from: 0, to: length, insert: patch.value }];\n}\n// If the path of the patch is of the form [path, <index>] then we know this is\n// a path to a character within the sequence given by path\nfunction charPath(textPath, candidatePath) {\n if (candidatePath.length !== textPath.length + 1)\n return null;\n for (let i = 0; i < textPath.length; i++) {\n if (textPath[i] !== candidatePath[i])\n return null;\n }\n const index = candidatePath[candidatePath.length - 1];\n if (typeof index === \"number\")\n return index;\n return null;\n}\n//# sourceMappingURL=amToCodemirror.js.map","import { next as A } from \"@automerge/automerge\";\nimport { ViewPlugin } from \"@codemirror/view\";\nimport { Annotation } from \"@codemirror/state\";\nimport { applyCmTransactionsToAmHandle } from \"./codeMirrorToAm.js\";\nimport { applyAmPatchesToCm } from \"./amToCodemirror.js\";\nexport const reconcileAnnotationType = Annotation.define();\nexport const isReconcileTx = (tr) => !!tr.annotation(reconcileAnnotationType);\nexport const automergeSyncPlugin = ({ handle, path, }) => {\n if (!handle.isReady()) {\n throw new Error(\"ensure the handle is ready before initializing the automergeSyncPlugin\");\n }\n return ViewPlugin.fromClass(class {\n view;\n reconciledHeads = A.getHeads(handle.doc());\n isProcessingCmTransaction = false;\n constructor(view) {\n this.view = view;\n this.onChange = this.onChange.bind(this);\n handle.on(\"change\", this.onChange);\n }\n update(update) {\n // start processing codemirror transaction\n // changes that are created through the transaction are ignored in the change listener on the handle\n this.isProcessingCmTransaction = true;\n const newHeads = applyCmTransactionsToAmHandle(handle, path, update.transactions);\n if (newHeads) {\n this.reconciledHeads = newHeads;\n }\n // finish processing transaction\n this.isProcessingCmTransaction = false;\n }\n onChange = () => {\n // ignore changes that where triggered while processing a codemirror transaction\n if (this.isProcessingCmTransaction) {\n return;\n }\n const currentHeads = A.getHeads(handle.doc());\n if (A.equals(currentHeads, this.reconciledHeads)) {\n return;\n }\n // get the diff between the reconciled heads and the new heads\n // and apply that to the codemirror doc\n const patches = A.diff(handle.doc(), this.reconciledHeads, currentHeads);\n applyAmPatchesToCm(this.view, path, patches);\n this.reconciledHeads = currentHeads;\n };\n destroy() {\n handle.off(\"change\", this.onChange);\n }\n });\n};\n//# sourceMappingURL=plugin.js.map","import type {Extension} from \"@codemirror/state\"\nimport type {FileDoc} from \"../types\"\n\n// The event a tool embedding this one (in a <patchwork-view tool-id=\"file\">)\n// listens for to add its own CodeMirror extensions. Both the editor and the\n// read-only viewer dispatch it once, just before they create their view, and\n// it bubbles out of the patchwork-view; a listener pushes onto\n// `detail.extensions`. Extensions have to come from the shared @codemirror/*\n// modules in the import map, like these editors'. `readOnly` says which one\n// asked.\nexport const CODEMIRROR_EXTENSIONS_EVENT = \"file:codemirror-extensions\"\n\nexport type CodemirrorExtensionsDetail = {\n\thandle: any\n\tdoc: FileDoc\n\treadOnly: boolean\n\textensions: Extension[]\n}\n\nexport function collectExtensions(\n\telement: HTMLElement | undefined,\n\thandle: any,\n\tdoc: FileDoc,\n\treadOnly: boolean,\n): Extension[] {\n\tif (!element) return []\n\tconst detail: CodemirrorExtensionsDetail = {\n\t\thandle,\n\t\tdoc,\n\t\treadOnly,\n\t\textensions: [],\n\t}\n\telement.dispatchEvent(\n\t\tnew CustomEvent(CODEMIRROR_EXTENSIONS_EVENT, {\n\t\t\tdetail,\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t}),\n\t)\n\treturn detail.extensions\n}\n","import { createEffect, createSignal, onCleanup, onMount, } from \"solid-js\";\nimport { createStore, reconcile } from \"solid-js/store\";\nimport * as Providers from \"@inkandswitch/patchwork-providers\";\nfunction resolveElement(source) {\n return typeof source === \"function\" ? source() : source;\n}\n/**\n * Generic reactive request. Resolves the first value a provider emits for\n * `selector` (via the one-shot `request` helper) and returns an accessor that\n * reads `undefined` until then. `T` is the response type.\n */\nexport function request(element, selector) {\n const [value, setValue] = createSignal(undefined);\n onMount(() => {\n const target = resolveElement(element);\n if (!target)\n return;\n Providers.request(target, selector).then((v) => {\n if (v == null)\n return;\n setValue(() => v);\n });\n });\n return value;\n}\nexport function subscribe(element, selector, initialValue) {\n const [value, setValue] = createSignal(initialValue);\n onMount(() => {\n const target = resolveElement(element);\n if (!target)\n return;\n const unsubscribe = Providers.subscribe(target, selector, setValue);\n onCleanup(unsubscribe);\n });\n return value;\n}\n/**\n * Store-backed subscription. Use this when a consumer wants Solid's\n * fine-grained nested reactivity for incoming JSON object or array snapshots.\n * Requires an initial object/array so the store has a stable root.\n *\n * `reconcile` preserves stable object/array identity where possible, so this\n * helper is not a good fit when the top-level value is used as an identity key\n * for resources or memos.\n */\nexport function subscribeReconciled(element, selector, initialValue) {\n const [store, setStore] = createStore(initialValue);\n onMount(() => {\n const target = resolveElement(element);\n if (!target)\n return;\n const unsubscribe = Providers.subscribe(target, selector, (v) => {\n setStore(reconcile(v));\n });\n onCleanup(unsubscribe);\n });\n return store;\n}\n/**\n * Handle-specialized subscription. Use when the answering provider emits an\n * `AutomergeUrl`. The handle is recovered locally from the global repo\n * (`window.repo`), so it stays fully live — reads project reactively and writes go\n * straight back to the same repo. Returns `[doc, handle]` matching the shape\n * of `solid-automerge`'s `useDocument`; both read `undefined` until the first\n * url arrives. `T` is the doc shape inside the handle.\n */\nexport function subscribeDoc(element, selector) {\n const [handle, setHandle] = createSignal(undefined);\n onMount(() => {\n const target = resolveElement(element);\n if (!target)\n return;\n let canceled = false;\n const unsubscribe = Providers.subscribe(target, selector, (url) => {\n if (!url)\n return;\n const repo = \"repo\" in window ? window.repo : undefined;\n if (!repo)\n return;\n void Promise.resolve(repo.find(url)).then((h) => {\n if (canceled)\n return;\n setHandle(() => h);\n });\n });\n onCleanup(() => {\n canceled = true;\n unsubscribe();\n });\n });\n // Mirror the doc into a store by `reconcile`-ing against the *materialized*\n // snapshot (`handle.doc()`) on every change, rather than replaying the\n // change's incremental patches (as `solid-automerge`'s `createDocumentProjection`\n // / `autoproduce` does).\n //\n // A whole-value write such as `doc.list = [...]` is lowered by Automerge to\n // `putObjectFromHydrate`, whose patch stream is a `put` that materializes the\n // new container *plus* per-element `insert` patches. Replaying that delta with\n // `applyPatches` double-applies the contents — the `put` seeds `[a, b]`, then\n // the inserts splice `a, b` in again, yielding `[a, b, a, b]` — even though the\n // document itself is correct. The materialized snapshot is always\n // authoritative, so reconciling against it is robust to any valid change,\n // whole-array reassignment included.\n const [store, setStore] = createStore({});\n const [ready, setReady] = createSignal(false);\n createEffect(() => {\n const h = handle();\n if (!h) {\n setReady(false);\n return;\n }\n const sync = () => {\n setStore(reconcile((h.doc() ?? {})));\n setReady(true);\n };\n sync();\n h.on(\"change\", sync);\n onCleanup(() => h.off(\"change\", sync));\n });\n const doc = () => (ready() ? store : undefined);\n return [doc, handle];\n}\n","// Comment threads stored on the file doc itself, under `@comments.threads`,\n// in the shape the comments provider and the Comments sidebar\n// (comments-view) read from any doc. Adapted from codemirror-base's\n// lib/extensions/comments.ts and the thread bookkeeping in its tool.tsx.\n\nimport {\n\tcursor,\n\ttype AutomergeUrl,\n\ttype DocHandle,\n} from \"@automerge/automerge-repo/slim\"\n\nexport type DocWithComments = {\n\t\"@comments\"?: {\n\t\tthreads: CommentThread[]\n\t}\n}\n\n// The `@patchwork.type` stamped on a thread so it resolves to the\n// `comment-thread` tool when it's opened on its own (e.g. in the popover).\nexport const COMMENT_THREAD_TYPE = \"comment-thread\"\n\nexport type CommentThread = {\n\tid: string\n\trefs: AutomergeUrl[]\n\tisResolved: boolean\n\tcomments: Comment[]\n\t\"@patchwork\"?: {type: string; title?: string}\n}\n\nexport type Comment = {\n\tid: string\n\tcontent?: string\n\tdraftContent?: string\n\tcontactUrl: AutomergeUrl\n\ttimestamp: number\n}\n\n// Start a thread on [from, to] of the text at `path`, holding one empty\n// comment for the author to fill in, and return the thread's url. The range\n// is a pair of automerge cursors, so it follows the text as it's edited. That\n// only works on real text: on anything else (an ImmutableString, bytes) this\n// throws without touching the doc.\nexport function createCommentForRange(\n\thandle: DocHandle<any>,\n\tpath: readonly string[],\n\tfrom: number,\n\tto: number,\n\tcontactUrl: AutomergeUrl,\n): AutomergeUrl {\n\tconst targetUrl = handle.sub(...path, cursor(from, to)).url\n\tconst threadId = crypto.randomUUID()\n\n\thandle.change((doc: DocWithComments) => {\n\t\tdoc[\"@comments\"] ??= {threads: []}\n\t\tdoc[\"@comments\"].threads.push({\n\t\t\tid: threadId,\n\t\t\trefs: [targetUrl],\n\t\t\tisResolved: false,\n\t\t\tcomments: [\n\t\t\t\t{id: crypto.randomUUID(), contactUrl, timestamp: Date.now()},\n\t\t\t],\n\t\t\t\"@patchwork\": {type: COMMENT_THREAD_TYPE},\n\t\t})\n\t})\n\n\treturn threadUrl(handle, threadId)\n}\n\nconst threadUrl = (handle: DocHandle<any>, id: string): AutomergeUrl =>\n\thandle.sub(\"@comments\", \"threads\", {id}).url\n\nexport function findThreadByUrl(\n\thandle: DocHandle<any>,\n\turl: AutomergeUrl,\n): CommentThread | undefined {\n\tconst threads: CommentThread[] =\n\t\t(handle.doc() as DocWithComments | undefined)?.[\"@comments\"]?.threads ?? []\n\treturn threads.find((thread) => threadUrl(handle, thread.id) === url)\n}\n\n// Whether the author still has an unsent comment in the thread: one never\n// filled in, or one with a draft in progress.\nexport const hasOwnDraft = (\n\tthread: CommentThread,\n\tcontactUrl: AutomergeUrl | undefined,\n): boolean =>\n\tthread.comments.some(\n\t\t(c) =>\n\t\t\tc.contactUrl === contactUrl &&\n\t\t\t(c.draftContent !== undefined || c.content === undefined),\n\t)\n\nconst isEmptyOwnDraft = (c: Comment, contactUrl: AutomergeUrl | undefined) =>\n\tc.contactUrl === contactUrl &&\n\tc.content === undefined &&\n\t(c.draftContent === undefined || c.draftContent.trim() === \"\")\n\n// Throw away the author's comments in a thread that were never written, and\n// the thread itself if that empties it. So opening the comment popover and\n// walking away doesn't leave an empty thread behind.\nexport function discardEmptyOwnDraft(\n\thandle: DocHandle<any>,\n\turl: AutomergeUrl,\n\tcontactUrl: AutomergeUrl | undefined,\n): void {\n\tconst thread = findThreadByUrl(handle, url)\n\tif (!thread?.comments.some((c) => isEmptyOwnDraft(c, contactUrl))) return\n\tconst threadId = thread.id\n\thandle.change((doc: DocWithComments) => {\n\t\tconst list = doc[\"@comments\"]?.threads\n\t\tconst index = list?.findIndex((t) => t.id === threadId) ?? -1\n\t\tif (!list || index === -1) return\n\t\tconst comments = list[index].comments\n\t\tfor (let i = comments.length - 1; i >= 0; i--) {\n\t\t\tif (isEmptyOwnDraft(comments[i], contactUrl)) comments.splice(i, 1)\n\t\t}\n\t\tif (comments.length === 0) list.splice(index, 1)\n\t})\n}\n\n// Where each target range sits in the text right now, leaving out any whose\n// text has been deleted out from under it.\nexport const commentRanges = (\n\ttargets: DocHandle<unknown>[],\n): [number, number][] => {\n\tconst ranges: [number, number][] = []\n\tfor (const target of targets) {\n\t\tconst positions = target.rangePositions()\n\t\tif (!positions || positions[0] === positions[1]) continue\n\t\tranges.push(positions)\n\t}\n\treturn ranges\n}\n","// Copied from codemirror-base's lib/extensions/commentUI.ts (tools don't share\n// code at build time). The one change: whether comments can be made is asked\n// of the host (`canComment`) instead of read off the editor's readOnly, since\n// a file the editor won't let you edit can still take comments.\n\nimport {\n\tExtension,\n\tStateEffect,\n\tStateField,\n\ttype EditorState,\n} from \"@codemirror/state\"\nimport {\n\tEditorView,\n\tshowTooltip,\n\ttype Tooltip,\n\ttype TooltipView,\n} from \"@codemirror/view\"\nimport type {AutomergeUrl} from \"@automerge/automerge-repo/slim\"\nimport {COMMENT_THREAD_TYPE} from \"./threads\"\n\n// The data hooks the editor UI needs from its host (the CodeMirror tool). The\n// extension owns all the DOM/positioning/lifecycle; the host owns everything\n// that needs the repo, the current contact, or the comment index.\nexport type CommentUIOptions = {\n\t// Create a thread targeting [from, to] and return its url, or null if it\n\t// couldn't be created (e.g. no current contact). Called when the floating\n\t// \"Comment\" button is clicked.\n\tcreateThreadForRange: (from: number, to: number) => AutomergeUrl | null\n\t// Map a document position to the thread whose commented range covers it (and\n\t// that range's start), or null. Called when the user clicks commented text so\n\t// we can pop that thread open under the range's start.\n\tthreadAtPos: (\n\t\tpos: number\n\t) => {threadUrl: AutomergeUrl; from: number} | null\n\t// Watch a thread and invoke `close` once its pending draft is submitted (or\n\t// cancelled, or the thread is removed). Returns an unsubscribe. Lets the\n\t// popover dismiss itself the moment the comment is saved.\n\twatchThreadForClose: (threadUrl: AutomergeUrl, close: () => void) => () => void\n\t// Called whenever a popover closes, for any reason. Lets the host discard an\n\t// abandoned, never-filled-in draft so dismissing the popover doesn't litter\n\t// the document with empty comments.\n\tonClose: (threadUrl: AutomergeUrl) => void\n\t// Whether the doc will take a comment right now. When it won't, there's no\n\t// \"Comment\" button and clicking commented text doesn't open the thread (its\n\t// reply box would write into a doc that rejects writes).\n\tcanComment: () => boolean\n}\n\n// Which thread the popover is showing, and the document position it hangs off.\ntype PopoverState = {threadUrl: AutomergeUrl; anchor: number}\n\nconst openPopover = StateEffect.define<PopoverState>()\nconst closePopover = StateEffect.define<null>()\n// Hide the floating \"Comment\" button until the next selection change (Escape).\nconst dismissButton = StateEffect.define<null>()\n\n// Mutable UI state shared across the extension's pieces (not editor state\n// because it isn't versioned/undoable): the thread we most recently dismissed,\n// so a click that stays inside it doesn't immediately pop it back open.\ntype CommentUIState = {suppressed: AutomergeUrl | null}\n\nconst POPOVER_CLASS = \"cm-comment-popover\"\n\n// A speech-bubble icon + \"Comment\" label, shown floating above the selection.\nconst buildCommentButton = (\n\tfrom: number,\n\tto: number,\n\thead: number,\n\tview: EditorView,\n\toptions: CommentUIOptions\n): HTMLElement => {\n\tconst button = document.createElement(\"button\")\n\tbutton.className = \"cm-comment-button\"\n\tbutton.setAttribute(\"aria-label\", \"Comment\")\n\n\tbutton.innerHTML = `\n\t\t<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n\t\t\t<path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"\n\t\t\t\t\t\tfill=\"currentColor\" stroke=\"none\"/>\n\t\t</svg>\n\t\t<span>Comment</span>\n\t`\n\n\t// Without this, the browser focuses the button on mousedown, the editor\n\t// blurs, the selection collapses, our tooltip source returns null, and\n\t// CodeMirror tears down the button before `click` fires — so the first\n\t// press silently does nothing and the user has to click twice. Swallowing\n\t// mousedown keeps the editor focused and the selection (and button) alive\n\t// long enough for the click to land.\n\tbutton.addEventListener(\"mousedown\", (e) => {\n\t\te.preventDefault()\n\t\te.stopPropagation()\n\t})\n\n\tbutton.addEventListener(\"click\", (e) => {\n\t\te.preventDefault()\n\t\te.stopPropagation()\n\t\tconst threadUrl = options.createThreadForRange(from, to)\n\t\tif (!threadUrl) return\n\t\t// Open the popover right where the button was (the selection head).\n\t\tview.dispatch({effects: openPopover.of({threadUrl, anchor: head})})\n\t})\n\n\treturn button\n}\n\n// The popover body: the shared comment-thread tool, rendered inline via the\n// `patchwork-view` custom element. It's mounted inside `view.dom`, so the\n// element's provider events (repo, contact, …) still bubble up to the host.\nconst buildThreadPopover = (\n\tview: EditorView,\n\tstate: PopoverState,\n\toptions: CommentUIOptions,\n\tui: CommentUIState\n): TooltipView => {\n\tconst dom = document.createElement(\"div\")\n\tdom.className = POPOVER_CLASS\n\n\tconst threadView = document.createElement(\"patchwork-view\")\n\tthreadView.setAttribute(\"doc-url\", state.threadUrl)\n\tthreadView.setAttribute(\"tool-id\", COMMENT_THREAD_TYPE)\n\tdom.append(threadView)\n\n\tconst close = () => view.dispatch({effects: closePopover.of(null)})\n\n\t// Dismiss on a click anywhere outside the popover, or on Escape. Both are\n\t// armed on a deferred tick so the very interaction that opened the popover\n\t// (the button click / the click on commented text) doesn't also close it.\n\tconst onOutsideMouseDown = (event: MouseEvent) => {\n\t\tif (!dom.contains(event.target as Node)) close()\n\t}\n\tconst onKeyDown = (event: KeyboardEvent) => {\n\t\tif (event.key === \"Escape\") close()\n\t}\n\tconst doc = view.dom.ownerDocument\n\tconst win = doc.defaultView ?? window\n\tconst armTimer = win.setTimeout(() => {\n\t\tdoc.addEventListener(\"mousedown\", onOutsideMouseDown, true)\n\t\tdoc.addEventListener(\"keydown\", onKeyDown, true)\n\t}, 0)\n\n\t// Close as soon as the draft is submitted (or the thread goes away).\n\tconst stopWatch = options.watchThreadForClose(state.threadUrl, close)\n\n\treturn {\n\t\tdom,\n\t\tdestroy() {\n\t\t\twin.clearTimeout(armTimer)\n\t\t\tdoc.removeEventListener(\"mousedown\", onOutsideMouseDown, true)\n\t\t\tdoc.removeEventListener(\"keydown\", onKeyDown, true)\n\t\t\tstopWatch()\n\t\t\t// Remember this thread as dismissed so clicking within its range again\n\t\t\t// doesn't immediately reopen it (cleared once a click lands elsewhere).\n\t\t\tui.suppressed = state.threadUrl\n\t\t\toptions.onClose(state.threadUrl)\n\t\t},\n\t}\n}\n\nconst buttonTooltip = (\n\tstate: EditorState,\n\toptions: CommentUIOptions\n): Tooltip | null => {\n\tconst sel = state.selection.main\n\tif (sel.empty || !options.canComment()) return null\n\n\t// Anchor the button at the drag tail (the selection head) rather than the\n\t// start, so dragging left-to-right lands it on the right and right-to-left\n\t// on the left.\n\treturn {\n\t\tpos: sel.head,\n\t\tabove: true,\n\t\tstrictSide: false,\n\t\tarrow: false,\n\t\tcreate: (view) => ({\n\t\t\tdom: buildCommentButton(sel.from, sel.to, sel.head, view, options),\n\t\t}),\n\t}\n}\n\nconst popoverTooltip = (\n\tstate: PopoverState,\n\toptions: CommentUIOptions,\n\tui: CommentUIState\n): Tooltip => ({\n\tpos: state.anchor,\n\tabove: false, // comes out underneath the anchor\n\tstrictSide: false,\n\tarrow: false,\n\tcreate: (view) => buildThreadPopover(view, state, options, ui),\n})\n\ntype FieldValue = {\n\tpopover: PopoverState | null\n\t// The floating button is hidden while this is true — after Escape, or after a\n\t// comment is added — until a fresh selection re-arms it.\n\tbuttonDismissed: boolean\n\ttooltip: Tooltip | null\n}\n\n// A single field driving the one tooltip slot: the thread popover when one is\n// open, otherwise the selection's \"Comment\" button.\nconst commentUIField = (options: CommentUIOptions, ui: CommentUIState) =>\n\tStateField.define<FieldValue>({\n\t\tcreate: (state) => ({\n\t\t\tpopover: null,\n\t\t\tbuttonDismissed: false,\n\t\t\ttooltip: buttonTooltip(state, options),\n\t\t}),\n\t\tupdate(value, tr) {\n\t\t\tlet popover = value.popover\n\t\t\tlet buttonDismissed = value.buttonDismissed\n\t\t\tlet popoverChanged = false\n\n\t\t\t// Keep the popover pinned to its text as the document shifts under it.\n\t\t\tif (popover && tr.docChanged) {\n\t\t\t\tpopover = {...popover, anchor: tr.changes.mapPos(popover.anchor)}\n\t\t\t\tpopoverChanged = true\n\t\t\t}\n\t\t\tfor (const effect of tr.effects) {\n\t\t\t\tif (effect.is(openPopover)) {\n\t\t\t\t\tpopover = effect.value\n\t\t\t\t\tpopoverChanged = true\n\t\t\t\t} else if (effect.is(closePopover)) {\n\t\t\t\t\tpopover = null\n\t\t\t\t\tpopoverChanged = true\n\t\t\t\t\t// A comment was just added (or dismissed): don't flash the button\n\t\t\t\t\t// back up over the still-selected text.\n\t\t\t\t\tbuttonDismissed = true\n\t\t\t\t} else if (effect.is(dismissButton)) {\n\t\t\t\t\tbuttonDismissed = true\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Any fresh selection re-arms the button.\n\t\t\tif (tr.selection) buttonDismissed = false\n\n\t\t\tif (popover) {\n\t\t\t\t// Reuse the exact same tooltip object unless the popover state itself\n\t\t\t\t// changed. Otherwise an unrelated transaction (a stray selection\n\t\t\t\t// change, an extension reconfigure, …) would hand CodeMirror a fresh\n\t\t\t\t// Tooltip and it would tear down and remount the thread view mid-edit.\n\t\t\t\tif (!popoverChanged) {\n\t\t\t\t\treturn buttonDismissed === value.buttonDismissed\n\t\t\t\t\t\t? value\n\t\t\t\t\t\t: {...value, buttonDismissed}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tpopover,\n\t\t\t\t\tbuttonDismissed,\n\t\t\t\t\ttooltip: popoverTooltip(popover, options, ui),\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// No popover: show the selection button, unless it's been dismissed.\n\t\t\t// Recompute only when something relevant changed.\n\t\t\tif (\n\t\t\t\t!popoverChanged &&\n\t\t\t\t!tr.docChanged &&\n\t\t\t\t!tr.selection &&\n\t\t\t\tbuttonDismissed === value.buttonDismissed\n\t\t\t) {\n\t\t\t\treturn value\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tpopover: null,\n\t\t\t\tbuttonDismissed,\n\t\t\t\ttooltip: buttonDismissed ? null : buttonTooltip(tr.state, options),\n\t\t\t}\n\t\t},\n\t\tprovide: (field) => showTooltip.from(field, (value) => value.tooltip),\n\t})\n\n// Editor-level interactions: click commented text to (re)open its thread, and\n// Escape to dismiss the floating button.\nconst commentInteractions = (\n\toptions: CommentUIOptions,\n\tui: CommentUIState,\n\tfield: StateField<FieldValue>\n): Extension =>\n\tEditorView.domEventHandlers({\n\t\tmousedown(event, view) {\n\t\t\tif (\n\t\t\t\tevent.button !== 0 ||\n\t\t\t\tevent.metaKey ||\n\t\t\t\tevent.ctrlKey ||\n\t\t\t\tevent.altKey ||\n\t\t\t\tevent.shiftKey\n\t\t\t) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Clicks inside an open popover are the thread tool's own business.\n\t\t\tif ((event.target as HTMLElement | null)?.closest(\".\" + POPOVER_CLASS)) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (!options.canComment()) return false\n\t\t\tconst pos = view.posAtCoords({x: event.clientX, y: event.clientY})\n\t\t\tif (pos == null) return false\n\t\t\tconst hit = options.threadAtPos(pos)\n\t\t\tif (!hit) {\n\t\t\t\tui.suppressed = null // clicked away from any comment; re-arm reopening\n\t\t\t\treturn false\n\t\t\t}\n\t\t\t// Don't reopen the thread we just dismissed while the click stays inside\n\t\t\t// it — the user has to click elsewhere (or another comment) first.\n\t\t\tif (hit.threadUrl === ui.suppressed) return false\n\t\t\tui.suppressed = null\n\t\t\tview.dispatch({\n\t\t\t\teffects: openPopover.of({threadUrl: hit.threadUrl, anchor: hit.from}),\n\t\t\t})\n\t\t\treturn false; // let the click also move the cursor as usual\n\t\t},\n\t\tkeydown(event, view) {\n\t\t\tif (event.key !== \"Escape\") return false\n\t\t\tconst state = view.state.field(field, false)\n\t\t\t// While a popover is open its own Escape handler wins (it also works when\n\t\t\t// the popover's textarea holds focus); here we only hide the button.\n\t\t\tif (!state || state.popover || !state.tooltip) return false\n\t\t\tview.dispatch({effects: dismissButton.of(null)})\n\t\t\treturn true\n\t\t},\n\t})\n\n// Global colours are lifted into local --cm-comment-* tokens in a\n// :root/:host/[theme] block so they re-evaluate when the theme swaps. This\n// derivation can't live in the baseTheme below — CodeMirror prefixes every\n// non-\"&\" selector with the editor's scope class, so a `:root` key would\n// become `.cm... :root` and never match. It's injected as a plain stylesheet\n// instead, and the button reads only the derived tokens. The button is editor\n// UI, so it derives from --editor-* (not --studio-*, which is studio chrome).\nconst COMMENT_BUTTON_VARS_ID = \"cm-comment-button-vars\"\nconst ensureCommentButtonVars = (): void => {\n\tif (\n\t\ttypeof document === \"undefined\" ||\n\t\tdocument.getElementById(COMMENT_BUTTON_VARS_ID)\n\t) {\n\t\treturn\n\t}\n\tconst style = document.createElement(\"style\")\n\tstyle.id = COMMENT_BUTTON_VARS_ID\n\tstyle.textContent = `\n\t\t:root, :host, [theme] {\n\t\t\t/* the button sits on the editor surface: bg is the plain editor fill,\n\t\t\t\ttext is the editor ink, and hover lifts a gentle one step up the fill\n\t\t\t\tramp. see --text-editor-* in the theme. */\n\t\t\t--cm-comment-button-fg: var(--text-editor-line, #0a2b23);\n\t\t\t--cm-comment-button-bg: var(--text-editor-fill, #35f7ca);\n\t\t\t--cm-comment-button-bg-hover: var(--text-editor-fill-offset-10, #2ce0b6);\n\t\t}\n\t`\n\tdocument.head.append(style)\n}\n\nconst commentUITheme = EditorView.baseTheme({\n\t\".cm-tooltip:has(.cm-comment-button)\": {\n\t\tborder: \"none\",\n\t\tbackground: \"transparent\",\n\t\tboxShadow: \"none\",\n\t},\n\t\".cm-comment-button\": {\n\t\tdisplay: \"inline-flex\",\n\t\talignItems: \"center\",\n\t\tgap: \"5px\",\n\t\tpadding: \"4px 9px\",\n\t\tfont: \"inherit\",\n\t\tfontSize: \"12px\",\n\t\tfontWeight: \"500\",\n\t\tlineHeight: \"1\",\n\t\tcolor: \"var(--cm-comment-button-fg)\",\n\t\tbackground: \"var(--cm-comment-button-bg)\",\n\t\tborder: \"none\",\n\t\tborderRadius: \"6px\",\n\t\tboxShadow: \"0 2px 8px rgba(0, 0, 0, 0.25)\",\n\t\tcursor: \"var(--studio-cursor-pointer, pointer)\",\n\t\tuserSelect: \"none\",\n\t\twhiteSpace: \"nowrap\",\n\t\ttransition: \"background-color max(1ms, calc(0.15s * var(--studio-motion-scale, 1) * var(--studio-motion-preference, 1)))\",\n\t},\n\t\".cm-comment-button:hover\": {\n\t\tbackground: \"var(--cm-comment-button-bg-hover)\",\n\t},\n\t\".cm-comment-button svg\": {\n\t\tdisplay: \"block\",\n\t},\n\t// The thread tool carries its own card (background, border, padding), so the\n\t// tooltip wrapper is just a transparent, softly-lifted host for it.\n\t\".cm-tooltip:has(.cm-comment-popover)\": {\n\t\tborder: \"none\",\n\t\tbackground: \"transparent\",\n\t\tboxShadow: \"none\",\n\t},\n\t\".cm-comment-popover\": {\n\t\twidth: \"min(360px, 92vw)\",\n\t\tmarginTop: \"6px\",\n\t\tfontFamily: \"var(--editor-family)\",\n\t\tfilter: \"drop-shadow(0 4px 14px rgba(0, 0, 0, 0.25))\",\n\t},\n\t// The popover supplies its own frame (the tooltip wrapper's shadow), so the\n\t// thread card inside drops its own border and shadow to avoid doubling up.\n\t\".cm-comment-popover .comments-thread-card\": {\n\t\tborder: \"0\",\n\t\tboxShadow: \"none\",\n\t},\n\t// The draft textarea is width:100% with its own padding + border; without\n\t// border-box it spills out of the card's right edge (the card's own reset is\n\t// scoped to the sidebar panel, which the popover isn't inside).\n\t\".cm-comment-popover .comment-draft-editor\": {\n\t\tboxSizing: \"border-box\",\n\t\tmaxWidth: \"100%\",\n\t\tminWidth: \"0\",\n\t\twidth: \"100%\",\n\t},\n\t\".cm-comment-popover .comment-draft-editor .cm-content\": {\n\t\tminHeight: \"0\",\n\t\tminWidth: \"0\",\n\t\tmargin: \"0\",\n\t\tpadding: \"8px\",\n\t},\n\t\".cm-comment-popover .comment-draft-editor .cm-line\": {\n\t\tmargin: \"0\",\n\t\tpadding: \"0\",\n\t},\n\t\".cm-comment-popover .comment-draft-editor .cm-scroller\": {\n\t\tminWidth: \"0\",\n\t},\n})\n\n// The comment UI: the floating \"Comment\" button on a selection, and the thread\n// popover it (and clicking commented text) opens.\nexport const commentUI = (options: CommentUIOptions): Extension => {\n\tensureCommentButtonVars()\n\tconst ui: CommentUIState = {suppressed: null}\n\tconst field = commentUIField(options, ui)\n\treturn [field, commentInteractions(options, ui, field), commentUITheme]\n}\n","// Comments on a text file's content: select some text, hit \"Comment\", and a\n// thread is started on that range, stored on the file doc. Commented ranges\n// are highlighted (more strongly when they're focused from the Comments\n// sidebar), clicking one reopens its thread, and the editor's selection is\n// written to `patchwork:focus` so the sidebar can follow it along. Adapted\n// from codemirror-base's tool.tsx.\n\nimport {\n\tcreateEffect,\n\tcreateMemo,\n\tcreateResource,\n\tcreateSignal,\n\tonCleanup,\n} from \"solid-js\"\nimport {\n\tcursor,\n\ttype AutomergeUrl,\n\ttype DocHandle,\n\ttype Repo,\n} from \"@automerge/automerge-repo/slim\"\nimport {\n\tEditorSelection,\n\tRangeSet,\n\tStateEffect,\n\tStateField,\n\ttype Extension,\n} from \"@codemirror/state\"\nimport {Decoration, EditorView, type DecorationSet} from \"@codemirror/view\"\nimport {subscribe, subscribeDoc} from \"@inkandswitch/patchwork-providers-solid\"\nimport {commentUI} from \"./commentUI\"\nimport {\n\tcommentRanges,\n\tcreateCommentForRange,\n\tdiscardEmptyOwnDraft,\n\tfindThreadByUrl,\n\thasOwnDraft,\n} from \"./threads\"\n\nconst PATH = [\"content\"]\n\ntype CommentEntry = {targetUrl: AutomergeUrl; threadUrl: AutomergeUrl}\n\ntype Focus = {\n\tselection: Record<AutomergeUrl, true>\n\thighlight: Record<AutomergeUrl, true>\n}\n\n// Returns the extension to put in the editor, and `attach`, to call with the\n// view once it exists so the highlights can be kept up to date. Call it from\n// a component, since it subscribes for as long as that's mounted.\nexport function createFileComments(props: {\n\thandle: DocHandle<any>\n\telement: HTMLElement & {repo?: Repo}\n}) {\n\tconst {handle, element} = props\n\n\t// Ranges are automerge cursors, which only exist on real text, so an\n\t// ImmutableString file can't be commented on.\n\tconst isText = () => typeof handle.doc()?.content === \"string\"\n\tconst canComment = () => isText() && !handle.isReadOnly()\n\n\tconst entries = subscribe<CommentEntry[]>(\n\t\telement,\n\t\t{type: \"patchwork:comments\", url: handle.url},\n\t\t[],\n\t)\n\tconst [focusDoc, focusHandle] = subscribeDoc<Focus>(element, {\n\t\ttype: \"patchwork:focus\",\n\t})\n\tconst contactUrl = subscribe<AutomergeUrl>(element, {\n\t\ttype: \"patchwork:contact\",\n\t})\n\n\tconst [targets] = createResource(\n\t\tentries,\n\t\t(entries) => findAll(element.repo, entries.map((e) => e.targetUrl)),\n\t\t{initialValue: []},\n\t)\n\n\t// What the sidebar has focused: the editor's own selection (written below)\n\t// and whatever thread the pointer is over or was clicked on.\n\tconst focusUrls = createMemo(() => {\n\t\tconst doc = focusDoc()\n\t\treturn [\n\t\t\t...Object.keys(doc?.selection ?? {}),\n\t\t\t...Object.keys(doc?.highlight ?? {}),\n\t\t].filter((url) => url.startsWith(handle.url)) as AutomergeUrl[]\n\t})\n\tconst [focused] = createResource(\n\t\tfocusUrls,\n\t\t(urls) => findAll(element.repo, urls),\n\t\t{initialValue: []},\n\t)\n\n\t// Bumped after every change to the file, since that can move the ranges.\n\t// Deferred so the editor has taken the same change first.\n\tconst [revision, setRevision] = createSignal(0)\n\tconst bump = () => queueMicrotask(() => setRevision((n) => n + 1))\n\thandle.on(\"change\", bump)\n\tonCleanup(() => handle.off(\"change\", bump))\n\n\tconst threadAtPos = (pos: number) => {\n\t\tconst threadByTarget = new Map(\n\t\t\tentries().map((e) => [e.targetUrl, e.threadUrl]),\n\t\t)\n\t\tfor (const target of targets()) {\n\t\t\tconst range = target.rangePositions()\n\t\t\tif (!range || range[0] === range[1]) continue\n\t\t\tif (pos < range[0] || pos > range[1]) continue\n\t\t\tconst threadUrl = threadByTarget.get(target.url)\n\t\t\tif (threadUrl) return {threadUrl, from: range[0]}\n\t\t}\n\t\treturn null\n\t}\n\n\tconst createThreadForRange = (from: number, to: number) => {\n\t\tconst contact = contactUrl()\n\t\tif (!contact) {\n\t\t\tconsole.warn(\"Cannot create comment: no contactUrl available\")\n\t\t\treturn null\n\t\t}\n\t\treturn createCommentForRange(handle, PATH, from, to, contact)\n\t}\n\n\t// Close the popover once the author's draft is sent (or cancelled), or the\n\t// thread goes away.\n\tconst watchThreadForClose = (threadUrl: AutomergeUrl, close: () => void) => {\n\t\tconst contact = contactUrl()\n\t\tconst seed = findThreadByUrl(handle, threadUrl)\n\t\tlet sawDraft = !!seed && hasOwnDraft(seed, contact)\n\t\tconst onChange = () => {\n\t\t\tconst thread = findThreadByUrl(handle, threadUrl)\n\t\t\tif (!thread) return close()\n\t\t\tif (hasOwnDraft(thread, contact)) sawDraft = true\n\t\t\telse if (sawDraft) close()\n\t\t}\n\t\thandle.on(\"change\", onChange)\n\t\treturn () => handle.off(\"change\", onChange)\n\t}\n\n\t// Deferred so the write doesn't land inside the CodeMirror update that tore\n\t// the popover down.\n\tconst onClose = (threadUrl: AutomergeUrl) => {\n\t\tconst contact = contactUrl()\n\t\tqueueMicrotask(() => discardEmptyOwnDraft(handle, threadUrl, contact))\n\t}\n\n\tlet lastSelectionUrl: AutomergeUrl | undefined\n\tconst followSelection = EditorView.updateListener.of((update) => {\n\t\tconst focus = focusHandle()\n\t\tif (!update.selectionSet || !focus || !isText()) return\n\t\tconst {from, to} = update.state.selection.main\n\t\tconst url = handle.sub(...PATH, cursor(from, to)).url\n\t\tif (url === lastSelectionUrl) return\n\t\tlastSelectionUrl = url\n\t\tfocus.change((doc) => {\n\t\t\tdoc.selection = {[url]: true}\n\t\t})\n\t})\n\n\tconst extension: Extension = [\n\t\thighlights,\n\t\thighlightTheme,\n\t\tfollowSelection,\n\t\tcommentUI({\n\t\t\tcreateThreadForRange,\n\t\t\tthreadAtPos,\n\t\t\twatchThreadForClose,\n\t\t\tonClose,\n\t\t\tcanComment,\n\t\t}),\n\t]\n\n\tconst attach = (view: EditorView) => {\n\t\tcreateEffect(() => {\n\t\t\trevision()\n\t\t\tview.dispatch({\n\t\t\t\teffects: setHighlights.of(\n\t\t\t\t\tbuildHighlights(targets(), focused(), view.state.doc.length),\n\t\t\t\t),\n\t\t\t})\n\t\t})\n\n\t\t// Bring a thread picked in the sidebar into view, if it isn't already.\n\t\tcreateEffect(() => {\n\t\t\tconst ranges = commentRanges(focused())\n\t\t\tif (!ranges.length) return\n\t\t\tconst length = view.state.doc.length\n\t\t\tconst from = Math.min(Math.min(...ranges.map((r) => r[0])), length)\n\t\t\tconst to = Math.min(Math.max(...ranges.map((r) => r[1])), length)\n\t\t\tview.dispatch({\n\t\t\t\teffects: EditorView.scrollIntoView(EditorSelection.range(from, to), {\n\t\t\t\t\tx: \"nearest\",\n\t\t\t\t\ty: \"nearest\",\n\t\t\t\t}),\n\t\t\t})\n\t\t})\n\t}\n\n\treturn {extension, attach}\n}\n\nconst findAll = async (\n\trepo: Repo | undefined,\n\turls: AutomergeUrl[],\n): Promise<DocHandle<unknown>[]> => {\n\tif (!repo) return []\n\tconst unique = [...new Set(urls)]\n\tconst found = await Promise.allSettled(unique.map((url) => repo.find(url)))\n\treturn found.flatMap((r) => (r.status === \"fulfilled\" ? [r.value] : []))\n}\n\nconst setHighlights = StateEffect.define<DecorationSet>()\n\nconst highlights = StateField.define<DecorationSet>({\n\tcreate: () => Decoration.none,\n\tupdate(value, tr) {\n\t\tfor (const effect of tr.effects) {\n\t\t\tif (effect.is(setHighlights)) return effect.value\n\t\t}\n\t\treturn tr.docChanged ? value.map(tr.changes) : value\n\t},\n\tprovide: (field) => EditorView.decorations.from(field),\n})\n\nconst plain = Decoration.mark({class: \"cm-comment-target\"})\nconst emphasised = Decoration.mark({\n\tclass: \"cm-comment-target cm-comment-target-focused\",\n})\n\n// Commented ranges, tinted more strongly where they overlap what's focused.\n// Clamped to the editor's text, which can briefly lag the file.\nexport function buildHighlights(\n\ttargets: DocHandle<unknown>[],\n\tfocused: DocHandle<unknown>[],\n\tlength: number,\n): DecorationSet {\n\tconst marks = []\n\tfor (const target of targets) {\n\t\tconst range = target.rangePositions()\n\t\tif (!range) continue\n\t\tconst from = Math.min(range[0], length)\n\t\tconst to = Math.min(range[1], length)\n\t\tif (from === to) continue\n\t\tconst isFocused = focused.some((f) => f.overlaps(target))\n\t\tmarks.push((isFocused ? emphasised : plain).range(from, to))\n\t}\n\treturn RangeSet.of(marks, true)\n}\n\n// Highlighter over paper: the editor's surface tinted with the secondary\n// accent, leaving the text in the editor's own ink so it reads in light and\n// dark themes alike.\nconst highlightTheme = EditorView.baseTheme({\n\t\".cm-comment-target\": {\n\t\tborderBottom: \"2px solid var(--text-editor-secondary-text)\",\n\t\tbackgroundColor:\n\t\t\t\"color-mix(in oklch, var(--studio-secondary), var(--text-editor-fill) 82%)\",\n\t},\n\t\".cm-comment-target-focused\": {\n\t\tbackgroundColor:\n\t\t\t\"color-mix(in oklch, var(--studio-secondary), var(--text-editor-fill) 56%)\",\n\t},\n})\n","/**\nThe default maximum length of a `TreeBuffer` node.\n*/\nconst DefaultBufferLength = 1024;\nlet nextPropID = 0;\nclass Range {\n constructor(from, to) {\n this.from = from;\n this.to = to;\n }\n}\n/**\nEach [node type](#common.NodeType) or [individual tree](#common.Tree)\ncan have metadata associated with it in props. Instances of this\nclass represent prop names.\n*/\nclass NodeProp {\n /**\n Create a new node prop type.\n */\n constructor(config = {}) {\n this.id = nextPropID++;\n this.perNode = !!config.perNode;\n this.deserialize = config.deserialize || (() => {\n throw new Error(\"This node type doesn't define a deserialize function\");\n });\n this.combine = config.combine || null;\n }\n /**\n This is meant to be used with\n [`NodeSet.extend`](#common.NodeSet.extend) or\n [`LRParser.configure`](#lr.ParserConfig.props) to compute\n prop values for each node type in the set. Takes a [match\n object](#common.NodeType^match) or function that returns undefined\n if the node type doesn't get this prop, and the prop's value if\n it does.\n */\n add(match) {\n if (this.perNode)\n throw new RangeError(\"Can't add per-node props to node types\");\n if (typeof match != \"function\")\n match = NodeType.match(match);\n return (type) => {\n let result = match(type);\n return result === undefined ? null : [this, result];\n };\n }\n}\n/**\nProp that is used to describe matching delimiters. For opening\ndelimiters, this holds an array of node names (written as a\nspace-separated string when declaring this prop in a grammar)\nfor the node types of closing delimiters that match it.\n*/\nNodeProp.closedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nThe inverse of [`closedBy`](#common.NodeProp^closedBy). This is\nattached to closing delimiters, holding an array of node names\nof types of matching opening delimiters.\n*/\nNodeProp.openedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nUsed to assign node types to groups (for example, all node\ntypes that represent an expression could be tagged with an\n`\"Expression\"` group).\n*/\nNodeProp.group = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nAttached to nodes to indicate these should be\n[displayed](https://codemirror.net/docs/ref/#language.syntaxTree)\nin a bidirectional text isolate, so that direction-neutral\ncharacters on their sides don't incorrectly get associated with\nsurrounding text. You'll generally want to set this for nodes\nthat contain arbitrary text, like strings and comments, and for\nnodes that appear _inside_ arbitrary text, like HTML tags. When\nnot given a value, in a grammar declaration, defaults to\n`\"auto\"`.\n*/\nNodeProp.isolate = new NodeProp({ deserialize: value => {\n if (value && value != \"rtl\" && value != \"ltr\" && value != \"auto\")\n throw new RangeError(\"Invalid value for isolate: \" + value);\n return value || \"auto\";\n } });\n/**\nThe hash of the [context](#lr.ContextTracker.constructor)\nthat the node was parsed in, if any. Used to limit reuse of\ncontextual nodes.\n*/\nNodeProp.contextHash = new NodeProp({ perNode: true });\n/**\nThe distance beyond the end of the node that the tokenizer\nlooked ahead for any of the tokens inside the node. (The LR\nparser only stores this when it is larger than 25, for\nefficiency reasons.)\n*/\nNodeProp.lookAhead = new NodeProp({ perNode: true });\n/**\nThis per-node prop is used to replace a given node, or part of a\nnode, with another tree. This is useful to include trees from\ndifferent languages in mixed-language parsers.\n*/\nNodeProp.mounted = new NodeProp({ perNode: true });\n/**\nA mounted tree, which can be [stored](#common.NodeProp^mounted) on\na tree node to indicate that parts of its content are\nrepresented by another tree.\n*/\nclass MountedTree {\n constructor(\n /**\n The inner tree.\n */\n tree, \n /**\n If this is null, this tree replaces the entire node (it will\n be included in the regular iteration instead of its host\n node). If not, only the given ranges are considered to be\n covered by this tree. This is used for trees that are mixed in\n a way that isn't strictly hierarchical. Such mounted trees are\n only entered by [`resolveInner`](#common.Tree.resolveInner)\n and [`enter`](#common.SyntaxNode.enter).\n */\n overlay, \n /**\n The parser used to create this subtree.\n */\n parser, \n /**\n [Indicates](#common.IterMode.EnterBracketed) that the nested\n content is delineated with some kind\n of bracket token.\n */\n bracketed = false) {\n this.tree = tree;\n this.overlay = overlay;\n this.parser = parser;\n this.bracketed = bracketed;\n }\n /**\n @internal\n */\n static get(tree) {\n return tree && tree.props && tree.props[NodeProp.mounted.id];\n }\n}\nconst noProps = Object.create(null);\n/**\nEach node in a syntax tree has a node type associated with it.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the node type. Not necessarily unique, but if the\n grammar was written properly, different node types with the\n same name within a node set should play the same semantic\n role.\n */\n name, \n /**\n @internal\n */\n props, \n /**\n The id of this node in its set. Corresponds to the term ids\n used in the parser.\n */\n id, \n /**\n @internal\n */\n flags = 0) {\n this.name = name;\n this.props = props;\n this.id = id;\n this.flags = flags;\n }\n /**\n Define a node type.\n */\n static define(spec) {\n let props = spec.props && spec.props.length ? Object.create(null) : noProps;\n let flags = (spec.top ? 1 /* NodeFlag.Top */ : 0) | (spec.skipped ? 2 /* NodeFlag.Skipped */ : 0) |\n (spec.error ? 4 /* NodeFlag.Error */ : 0) | (spec.name == null ? 8 /* NodeFlag.Anonymous */ : 0);\n let type = new NodeType(spec.name || \"\", props, spec.id, flags);\n if (spec.props)\n for (let src of spec.props) {\n if (!Array.isArray(src))\n src = src(type);\n if (src) {\n if (src[0].perNode)\n throw new RangeError(\"Can't store a per-node prop on a node type\");\n props[src[0].id] = src[1];\n }\n }\n return type;\n }\n /**\n Retrieves a node prop for this type. Will return `undefined` if\n the prop isn't present on this node.\n */\n prop(prop) { return this.props[prop.id]; }\n /**\n True when this is the top node of a grammar.\n */\n get isTop() { return (this.flags & 1 /* NodeFlag.Top */) > 0; }\n /**\n True when this node is produced by a skip rule.\n */\n get isSkipped() { return (this.flags & 2 /* NodeFlag.Skipped */) > 0; }\n /**\n Indicates whether this is an error node.\n */\n get isError() { return (this.flags & 4 /* NodeFlag.Error */) > 0; }\n /**\n When true, this node type doesn't correspond to a user-declared\n named node, for example because it is used to cache repetition.\n */\n get isAnonymous() { return (this.flags & 8 /* NodeFlag.Anonymous */) > 0; }\n /**\n Returns true when this node's name or one of its\n [groups](#common.NodeProp^group) matches the given string.\n */\n is(name) {\n if (typeof name == 'string') {\n if (this.name == name)\n return true;\n let group = this.prop(NodeProp.group);\n return group ? group.indexOf(name) > -1 : false;\n }\n return this.id == name;\n }\n /**\n Create a function from node types to arbitrary values by\n specifying an object whose property names are node or\n [group](#common.NodeProp^group) names. Often useful with\n [`NodeProp.add`](#common.NodeProp.add). You can put multiple\n names, separated by spaces, in a single property name to map\n multiple node names to a single value.\n */\n static match(map) {\n let direct = Object.create(null);\n for (let prop in map)\n for (let name of prop.split(\" \"))\n direct[name] = map[prop];\n return (node) => {\n for (let groups = node.prop(NodeProp.group), i = -1; i < (groups ? groups.length : 0); i++) {\n let found = direct[i < 0 ? node.name : groups[i]];\n if (found)\n return found;\n }\n };\n }\n}\n/**\nAn empty dummy node type to use when no actual type is available.\n*/\nNodeType.none = new NodeType(\"\", Object.create(null), 0, 8 /* NodeFlag.Anonymous */);\n/**\nA node set holds a collection of node types. It is used to\ncompactly represent trees by storing their type ids, rather than a\nfull pointer to the type object, in a numeric array. Each parser\n[has](#lr.LRParser.nodeSet) a node set, and [tree\nbuffers](#common.TreeBuffer) can only store collections of nodes\nfrom the same set. A set can have a maximum of 2**16 (65536) node\ntypes in it, so that the ids fit into 16-bit typed array slots.\n*/\nclass NodeSet {\n /**\n Create a set with the given types. The `id` property of each\n type should correspond to its position within the array.\n */\n constructor(\n /**\n The node types in this set, by id.\n */\n types) {\n this.types = types;\n for (let i = 0; i < types.length; i++)\n if (types[i].id != i)\n throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\");\n }\n /**\n Create a copy of this set with some node properties added. The\n arguments to this method can be created with\n [`NodeProp.add`](#common.NodeProp.add).\n */\n extend(...props) {\n let newTypes = [];\n for (let type of this.types) {\n let newProps = null;\n for (let source of props) {\n let add = source(type);\n if (add) {\n if (!newProps)\n newProps = Object.assign({}, type.props);\n let value = add[1], prop = add[0];\n if (prop.combine && prop.id in newProps)\n value = prop.combine(newProps[prop.id], value);\n newProps[prop.id] = value;\n }\n }\n newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type);\n }\n return new NodeSet(newTypes);\n }\n}\nconst CachedNode = new WeakMap(), CachedInnerNode = new WeakMap();\n/**\nOptions that control iteration. Can be combined with the `|`\noperator to enable multiple ones.\n*/\nvar IterMode;\n(function (IterMode) {\n /**\n When enabled, iteration will only visit [`Tree`](#common.Tree)\n objects, not nodes packed into\n [`TreeBuffer`](#common.TreeBuffer)s.\n */\n IterMode[IterMode[\"ExcludeBuffers\"] = 1] = \"ExcludeBuffers\";\n /**\n Enable this to make iteration include anonymous nodes (such as\n the nodes that wrap repeated grammar constructs into a balanced\n tree).\n */\n IterMode[IterMode[\"IncludeAnonymous\"] = 2] = \"IncludeAnonymous\";\n /**\n By default, regular [mounted](#common.NodeProp^mounted) nodes\n replace their base node in iteration. Enable this to ignore them\n instead.\n */\n IterMode[IterMode[\"IgnoreMounts\"] = 4] = \"IgnoreMounts\";\n /**\n This option only applies in\n [`enter`](#common.SyntaxNode.enter)-style methods. It tells the\n library to not enter mounted overlays if one covers the given\n position.\n */\n IterMode[IterMode[\"IgnoreOverlays\"] = 8] = \"IgnoreOverlays\";\n /**\n When set, positions on the boundary of a mounted overlay tree\n that has its [`bracketed`](#common.NestedParse.bracketed) flag\n set will enter that tree regardless of side. Only supported in\n [`enter`](#common.SyntaxNode.enter), not in cursors.\n */\n IterMode[IterMode[\"EnterBracketed\"] = 16] = \"EnterBracketed\";\n})(IterMode || (IterMode = {}));\n/**\nA piece of syntax tree. There are two ways to approach these\ntrees: the way they are actually stored in memory, and the\nconvenient way.\n\nSyntax trees are stored as a tree of `Tree` and `TreeBuffer`\nobjects. By packing detail information into `TreeBuffer` leaf\nnodes, the representation is made a lot more memory-efficient.\n\nHowever, when you want to actually work with tree nodes, this\nrepresentation is very awkward, so most client code will want to\nuse the [`TreeCursor`](#common.TreeCursor) or\n[`SyntaxNode`](#common.SyntaxNode) interface instead, which provides\na view on some part of this data structure, and can be used to\nmove around to adjacent nodes.\n*/\nclass Tree {\n /**\n Construct a new tree. See also [`Tree.build`](#common.Tree^build).\n */\n constructor(\n /**\n The type of the top node.\n */\n type, \n /**\n This node's child nodes.\n */\n children, \n /**\n The positions (offsets relative to the start of this tree) of\n the children.\n */\n positions, \n /**\n The total length of this tree\n */\n length, \n /**\n Per-node [node props](#common.NodeProp) to associate with this node.\n */\n props) {\n this.type = type;\n this.children = children;\n this.positions = positions;\n this.length = length;\n /**\n @internal\n */\n this.props = null;\n if (props && props.length) {\n this.props = Object.create(null);\n for (let [prop, value] of props)\n this.props[typeof prop == \"number\" ? prop : prop.id] = value;\n }\n }\n /**\n @internal\n */\n toString() {\n let mounted = MountedTree.get(this);\n if (mounted && !mounted.overlay)\n return mounted.tree.toString();\n let children = \"\";\n for (let ch of this.children) {\n let str = ch.toString();\n if (str) {\n if (children)\n children += \",\";\n children += str;\n }\n }\n return !this.type.name ? children :\n (/\\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) +\n (children.length ? \"(\" + children + \")\" : \"\");\n }\n /**\n Get a [tree cursor](#common.TreeCursor) positioned at the top of\n the tree. Mode can be used to [control](#common.IterMode) which\n nodes the cursor visits.\n */\n cursor(mode = 0) {\n return new TreeCursor(this.topNode, mode);\n }\n /**\n Get a [tree cursor](#common.TreeCursor) pointing into this tree\n at the given position and side (see\n [`moveTo`](#common.TreeCursor.moveTo).\n */\n cursorAt(pos, side = 0, mode = 0) {\n let scope = CachedNode.get(this) || this.topNode;\n let cursor = new TreeCursor(scope);\n cursor.moveTo(pos, side);\n CachedNode.set(this, cursor._tree);\n return cursor;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) object for the top of the\n tree.\n */\n get topNode() {\n return new TreeNode(this, 0, 0, null);\n }\n /**\n Get the [syntax node](#common.SyntaxNode) at the given position.\n If `side` is -1, this will move into nodes that end at the\n position. If 1, it'll move into nodes that start at the\n position. With 0, it'll only enter nodes that cover the position\n from both sides.\n \n Note that this will not enter\n [overlays](#common.MountedTree.overlay), and you often want\n [`resolveInner`](#common.Tree.resolveInner) instead.\n */\n resolve(pos, side = 0) {\n let node = resolveNode(CachedNode.get(this) || this.topNode, pos, side, false);\n CachedNode.set(this, node);\n return node;\n }\n /**\n Like [`resolve`](#common.Tree.resolve), but will enter\n [overlaid](#common.MountedTree.overlay) nodes, producing a syntax node\n pointing into the innermost overlaid tree at the given position\n (with parent links going through all parent structure, including\n the host trees).\n */\n resolveInner(pos, side = 0) {\n let node = resolveNode(CachedInnerNode.get(this) || this.topNode, pos, side, true);\n CachedInnerNode.set(this, node);\n return node;\n }\n /**\n In some situations, it can be useful to iterate through all\n nodes around a position, including those in overlays that don't\n directly cover the position. This method gives you an iterator\n that will produce all nodes, from small to big, around the given\n position.\n */\n resolveStack(pos, side = 0) {\n return stackIterator(this, pos, side);\n }\n /**\n Iterate over the tree and its children, calling `enter` for any\n node that touches the `from`/`to` region (if given) before\n running over such a node's children, and `leave` (if given) when\n leaving the node. When `enter` returns `false`, that node will\n not have its children iterated over (or `leave` called).\n */\n iterate(spec) {\n let { enter, leave, from = 0, to = this.length } = spec;\n let mode = spec.mode || 0, anon = (mode & IterMode.IncludeAnonymous) > 0;\n for (let c = this.cursor(mode | IterMode.IncludeAnonymous);;) {\n let entered = false;\n if (c.from <= to && c.to >= from && (!anon && c.type.isAnonymous || enter(c) !== false)) {\n if (c.firstChild())\n continue;\n entered = true;\n }\n for (;;) {\n if (entered && leave && (anon || !c.type.isAnonymous))\n leave(c);\n if (c.nextSibling())\n break;\n if (!c.parent())\n return;\n entered = true;\n }\n }\n }\n /**\n Get the value of the given [node prop](#common.NodeProp) for this\n node. Works with both per-node and per-type props.\n */\n prop(prop) {\n return !prop.perNode ? this.type.prop(prop) : this.props ? this.props[prop.id] : undefined;\n }\n /**\n Returns the node's [per-node props](#common.NodeProp.perNode) in a\n format that can be passed to the [`Tree`](#common.Tree)\n constructor.\n */\n get propValues() {\n let result = [];\n if (this.props)\n for (let id in this.props)\n result.push([+id, this.props[id]]);\n return result;\n }\n /**\n Balance the direct children of this tree, producing a copy of\n which may have children grouped into subtrees with type\n [`NodeType.none`](#common.NodeType^none).\n */\n balance(config = {}) {\n return this.children.length <= 8 /* Balance.BranchFactor */ ? this :\n balanceRange(NodeType.none, this.children, this.positions, 0, this.children.length, 0, this.length, (children, positions, length) => new Tree(this.type, children, positions, length, this.propValues), config.makeTree || ((children, positions, length) => new Tree(NodeType.none, children, positions, length)));\n }\n /**\n Build a tree from a postfix-ordered buffer of node information,\n or a cursor over such a buffer.\n */\n static build(data) { return buildTree(data); }\n}\n/**\nThe empty tree\n*/\nTree.empty = new Tree(NodeType.none, [], [], 0);\nclass FlatBufferCursor {\n constructor(buffer, index) {\n this.buffer = buffer;\n this.index = index;\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n get pos() { return this.index; }\n next() { this.index -= 4; }\n fork() { return new FlatBufferCursor(this.buffer, this.index); }\n}\n/**\nTree buffers contain (type, start, end, endIndex) quads for each\nnode. In such a buffer, nodes are stored in prefix order (parents\nbefore children, with the endIndex of the parent indicating which\nchildren belong to it).\n*/\nclass TreeBuffer {\n /**\n Create a tree buffer.\n */\n constructor(\n /**\n The buffer's content.\n */\n buffer, \n /**\n The total length of the group of nodes in the buffer.\n */\n length, \n /**\n The node set used in this buffer.\n */\n set) {\n this.buffer = buffer;\n this.length = length;\n this.set = set;\n }\n /**\n @internal\n */\n get type() { return NodeType.none; }\n /**\n @internal\n */\n toString() {\n let result = [];\n for (let index = 0; index < this.buffer.length;) {\n result.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result.join(\",\");\n }\n /**\n @internal\n */\n childString(index) {\n let id = this.buffer[index], endIndex = this.buffer[index + 3];\n let type = this.set.types[id], result = type.name;\n if (/\\W/.test(result) && !type.isError)\n result = JSON.stringify(result);\n index += 4;\n if (endIndex == index)\n return result;\n let children = [];\n while (index < endIndex) {\n children.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result + \"(\" + children.join(\",\") + \")\";\n }\n /**\n @internal\n */\n findChild(startIndex, endIndex, dir, pos, side) {\n let { buffer } = this, pick = -1;\n for (let i = startIndex; i != endIndex; i = buffer[i + 3]) {\n if (checkSide(side, pos, buffer[i + 1], buffer[i + 2])) {\n pick = i;\n if (dir > 0)\n break;\n }\n }\n return pick;\n }\n /**\n @internal\n */\n slice(startI, endI, from) {\n let b = this.buffer;\n let copy = new Uint16Array(endI - startI), len = 0;\n for (let i = startI, j = 0; i < endI;) {\n copy[j++] = b[i++];\n copy[j++] = b[i++] - from;\n let to = copy[j++] = b[i++] - from;\n copy[j++] = b[i++] - startI;\n len = Math.max(len, to);\n }\n return new TreeBuffer(copy, len, this.set);\n }\n}\nfunction checkSide(side, pos, from, to) {\n switch (side) {\n case -2 /* Side.Before */: return from < pos;\n case -1 /* Side.AtOrBefore */: return to >= pos && from < pos;\n case 0 /* Side.Around */: return from < pos && to > pos;\n case 1 /* Side.AtOrAfter */: return from <= pos && to > pos;\n case 2 /* Side.After */: return to > pos;\n case 4 /* Side.DontCare */: return true;\n }\n}\nfunction resolveNode(node, pos, side, overlays) {\n var _a;\n // Move up to a node that actually holds the position, if possible\n while (node.from == node.to ||\n (side < 1 ? node.from >= pos : node.from > pos) ||\n (side > -1 ? node.to <= pos : node.to < pos)) {\n let parent = !overlays && node instanceof TreeNode && node.index < 0 ? null : node.parent;\n if (!parent)\n return node;\n node = parent;\n }\n let mode = overlays ? 0 : IterMode.IgnoreOverlays;\n // Must go up out of overlays when those do not overlap with pos\n if (overlays)\n for (let scan = node, parent = scan.parent; parent; scan = parent, parent = scan.parent) {\n if (scan instanceof TreeNode && scan.index < 0 && ((_a = parent.enter(pos, side, mode)) === null || _a === void 0 ? void 0 : _a.from) != scan.from)\n node = parent;\n }\n for (;;) {\n let inner = node.enter(pos, side, mode);\n if (!inner)\n return node;\n node = inner;\n }\n}\nclass BaseNode {\n cursor(mode = 0) { return new TreeCursor(this, mode); }\n getChild(type, before = null, after = null) {\n let r = getChildren(this, type, before, after);\n return r.length ? r[0] : null;\n }\n getChildren(type, before = null, after = null) {\n return getChildren(this, type, before, after);\n }\n resolve(pos, side = 0) {\n return resolveNode(this, pos, side, false);\n }\n resolveInner(pos, side = 0) {\n return resolveNode(this, pos, side, true);\n }\n matchContext(context) {\n return matchNodeContext(this.parent, context);\n }\n enterUnfinishedNodesBefore(pos) {\n let scan = this.childBefore(pos), node = this;\n while (scan) {\n let last = scan.lastChild;\n if (!last || last.to != scan.to)\n break;\n if (last.type.isError && last.from == last.to) {\n node = scan;\n scan = last.prevSibling;\n }\n else {\n scan = last;\n }\n }\n return node;\n }\n get node() { return this; }\n get next() { return this.parent; }\n}\nclass TreeNode extends BaseNode {\n constructor(_tree, from, \n // Index in parent node, set to -1 if the node is not a direct child of _parent.node (overlay)\n index, _parent) {\n super();\n this._tree = _tree;\n this.from = from;\n this.index = index;\n this._parent = _parent;\n }\n get type() { return this._tree.type; }\n get name() { return this._tree.type.name; }\n get to() { return this.from + this._tree.length; }\n nextChild(i, dir, pos, side, mode = 0) {\n for (let parent = this;;) {\n for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {\n let next = children[i], start = positions[i] + parent.from, mounted;\n if (!((mode & IterMode.EnterBracketed) && next instanceof Tree &&\n (mounted = MountedTree.get(next)) && !mounted.overlay && mounted.bracketed &&\n pos >= start && pos <= start + next.length) &&\n !checkSide(side, pos, start, start + next.length))\n continue;\n if (next instanceof TreeBuffer) {\n if (mode & IterMode.ExcludeBuffers)\n continue;\n let index = next.findChild(0, next.buffer.length, dir, pos - start, side);\n if (index > -1)\n return new BufferNode(new BufferContext(parent, next, i, start), null, index);\n }\n else if ((mode & IterMode.IncludeAnonymous) || (!next.type.isAnonymous || hasChild(next))) {\n let mounted;\n if (!(mode & IterMode.IgnoreMounts) && (mounted = MountedTree.get(next)) && !mounted.overlay)\n return new TreeNode(mounted.tree, start, i, parent);\n let inner = new TreeNode(next, start, i, parent);\n return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner\n : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side, mode);\n }\n }\n if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)\n return null;\n if (parent.index >= 0)\n i = parent.index + dir;\n else\n i = dir < 0 ? -1 : parent._parent._tree.children.length;\n parent = parent._parent;\n if (!parent)\n return null;\n }\n }\n get firstChild() { return this.nextChild(0, 1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }\n prop(prop) { return this._tree.prop(prop); }\n enter(pos, side, mode = 0) {\n let mounted;\n if (!(mode & IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {\n let rPos = pos - this.from, enterBracketed = (mode & IterMode.EnterBracketed) && mounted.bracketed;\n for (let { from, to } of mounted.overlay) {\n if ((side > 0 || enterBracketed ? from <= rPos : from < rPos) &&\n (side < 0 || enterBracketed ? to >= rPos : to > rPos))\n return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);\n }\n }\n return this.nextChild(0, 1, pos, side, mode);\n }\n nextSignificantParent() {\n let val = this;\n while (val.type.isAnonymous && val._parent)\n val = val._parent;\n return val;\n }\n get parent() {\n return this._parent ? this._parent.nextSignificantParent() : null;\n }\n get nextSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index + 1, 1, 0, 4 /* Side.DontCare */) : null;\n }\n get prevSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index - 1, -1, 0, 4 /* Side.DontCare */) : null;\n }\n get tree() { return this._tree; }\n toTree() { return this._tree; }\n /**\n @internal\n */\n toString() { return this._tree.toString(); }\n}\nfunction getChildren(node, type, before, after) {\n let cur = node.cursor(), result = [];\n if (!cur.firstChild())\n return result;\n if (before != null)\n for (let found = false; !found;) {\n found = cur.type.is(before);\n if (!cur.nextSibling())\n return result;\n }\n for (;;) {\n if (after != null && cur.type.is(after))\n return result;\n if (cur.type.is(type))\n result.push(cur.node);\n if (!cur.nextSibling())\n return after == null ? result : [];\n }\n}\nfunction matchNodeContext(node, context, i = context.length - 1) {\n for (let p = node; i >= 0; p = p.parent) {\n if (!p)\n return false;\n if (!p.type.isAnonymous) {\n if (context[i] && context[i] != p.name)\n return false;\n i--;\n }\n }\n return true;\n}\nclass BufferContext {\n constructor(parent, buffer, index, start) {\n this.parent = parent;\n this.buffer = buffer;\n this.index = index;\n this.start = start;\n }\n}\nclass BufferNode extends BaseNode {\n get name() { return this.type.name; }\n get from() { return this.context.start + this.context.buffer.buffer[this.index + 1]; }\n get to() { return this.context.start + this.context.buffer.buffer[this.index + 2]; }\n constructor(context, _parent, index) {\n super();\n this.context = context;\n this._parent = _parent;\n this.index = index;\n this.type = context.buffer.set.types[context.buffer.buffer[index]];\n }\n child(dir, pos, side) {\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get firstChild() { return this.child(1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }\n prop(prop) { return this.type.prop(prop); }\n enter(pos, side, mode = 0) {\n if (mode & IterMode.ExcludeBuffers)\n return null;\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], side > 0 ? 1 : -1, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get parent() {\n return this._parent || this.context.parent.nextSignificantParent();\n }\n externalSibling(dir) {\n return this._parent ? null : this.context.parent.nextChild(this.context.index + dir, dir, 0, 4 /* Side.DontCare */);\n }\n get nextSibling() {\n let { buffer } = this.context;\n let after = buffer.buffer[this.index + 3];\n if (after < (this._parent ? buffer.buffer[this._parent.index + 3] : buffer.buffer.length))\n return new BufferNode(this.context, this._parent, after);\n return this.externalSibling(1);\n }\n get prevSibling() {\n let { buffer } = this.context;\n let parentStart = this._parent ? this._parent.index + 4 : 0;\n if (this.index == parentStart)\n return this.externalSibling(-1);\n return new BufferNode(this.context, this._parent, buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n get tree() { return null; }\n toTree() {\n let children = [], positions = [];\n let { buffer } = this.context;\n let startI = this.index + 4, endI = buffer.buffer[this.index + 3];\n if (endI > startI) {\n let from = buffer.buffer[this.index + 1];\n children.push(buffer.slice(startI, endI, from));\n positions.push(0);\n }\n return new Tree(this.type, children, positions, this.to - this.from);\n }\n /**\n @internal\n */\n toString() { return this.context.buffer.childString(this.index); }\n}\nfunction iterStack(heads) {\n if (!heads.length)\n return null;\n let pick = 0, picked = heads[0];\n for (let i = 1; i < heads.length; i++) {\n let node = heads[i];\n if (node.from > picked.from || node.to < picked.to) {\n picked = node;\n pick = i;\n }\n }\n let next = picked instanceof TreeNode && picked.index < 0 ? null : picked.parent;\n let newHeads = heads.slice();\n if (next)\n newHeads[pick] = next;\n else\n newHeads.splice(pick, 1);\n return new StackIterator(newHeads, picked);\n}\nclass StackIterator {\n constructor(heads, node) {\n this.heads = heads;\n this.node = node;\n }\n get next() { return iterStack(this.heads); }\n}\nfunction stackIterator(tree, pos, side) {\n let inner = tree.resolveInner(pos, side), layers = null;\n for (let scan = inner instanceof TreeNode ? inner : inner.context.parent; scan; scan = scan.parent) {\n if (scan.index < 0) { // This is an overlay root\n let parent = scan.parent;\n (layers || (layers = [inner])).push(parent.resolve(pos, side));\n scan = parent;\n }\n else {\n let mount = MountedTree.get(scan.tree);\n // Relevant overlay branching off\n if (mount && mount.overlay && mount.overlay[0].from <= pos && mount.overlay[mount.overlay.length - 1].to >= pos) {\n let root = new TreeNode(mount.tree, mount.overlay[0].from + scan.from, -1, scan);\n (layers || (layers = [inner])).push(resolveNode(root, pos, side, false));\n }\n }\n }\n return layers ? iterStack(layers) : inner;\n}\n/**\nA tree cursor object focuses on a given node in a syntax tree, and\nallows you to move to adjacent nodes.\n*/\nclass TreeCursor {\n /**\n Shorthand for `.type.name`.\n */\n get name() { return this.type.name; }\n /**\n @internal\n */\n constructor(node, mode = 0) {\n /**\n @internal\n */\n this.buffer = null;\n this.stack = [];\n /**\n @internal\n */\n this.index = 0;\n this.bufferNode = null;\n this.mode = mode & ~IterMode.EnterBracketed;\n if (node instanceof TreeNode) {\n this.yieldNode(node);\n }\n else {\n this._tree = node.context.parent;\n this.buffer = node.context;\n for (let n = node._parent; n; n = n._parent)\n this.stack.unshift(n.index);\n this.bufferNode = node;\n this.yieldBuf(node.index);\n }\n }\n yieldNode(node) {\n if (!node)\n return false;\n this._tree = node;\n this.type = node.type;\n this.from = node.from;\n this.to = node.to;\n return true;\n }\n yieldBuf(index, type) {\n this.index = index;\n let { start, buffer } = this.buffer;\n this.type = type || buffer.set.types[buffer.buffer[index]];\n this.from = start + buffer.buffer[index + 1];\n this.to = start + buffer.buffer[index + 2];\n return true;\n }\n /**\n @internal\n */\n yield(node) {\n if (!node)\n return false;\n if (node instanceof TreeNode) {\n this.buffer = null;\n return this.yieldNode(node);\n }\n this.buffer = node.context;\n return this.yieldBuf(node.index, node.type);\n }\n /**\n @internal\n */\n toString() {\n return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString();\n }\n /**\n @internal\n */\n enterChild(dir, pos, side) {\n if (!this.buffer)\n return this.yield(this._tree.nextChild(dir < 0 ? this._tree._tree.children.length - 1 : 0, dir, pos, side, this.mode));\n let { buffer } = this.buffer;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.buffer.start, side);\n if (index < 0)\n return false;\n this.stack.push(this.index);\n return this.yieldBuf(index);\n }\n /**\n Move the cursor to this node's first child. When this returns\n false, the node has no child, and the cursor has not been moved.\n */\n firstChild() { return this.enterChild(1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to this node's last child.\n */\n lastChild() { return this.enterChild(-1, 0, 4 /* Side.DontCare */); }\n /**\n Move the cursor to the first child that ends after `pos`.\n */\n childAfter(pos) { return this.enterChild(1, pos, 2 /* Side.After */); }\n /**\n Move to the last child that starts before `pos`.\n */\n childBefore(pos) { return this.enterChild(-1, pos, -2 /* Side.Before */); }\n /**\n Move the cursor to the child around `pos`. If side is -1 the\n child may end at that position, when 1 it may start there. This\n will also enter [overlaid](#common.MountedTree.overlay)\n [mounted](#common.NodeProp^mounted) trees unless `overlays` is\n set to false.\n */\n enter(pos, side, mode = this.mode) {\n if (!this.buffer)\n return this.yield(this._tree.enter(pos, side, mode));\n return mode & IterMode.ExcludeBuffers ? false : this.enterChild(1, pos, side);\n }\n /**\n Move to the node's parent node, if this isn't the top node.\n */\n parent() {\n if (!this.buffer)\n return this.yieldNode((this.mode & IterMode.IncludeAnonymous) ? this._tree._parent : this._tree.parent);\n if (this.stack.length)\n return this.yieldBuf(this.stack.pop());\n let parent = (this.mode & IterMode.IncludeAnonymous) ? this.buffer.parent : this.buffer.parent.nextSignificantParent();\n this.buffer = null;\n return this.yieldNode(parent);\n }\n /**\n @internal\n */\n sibling(dir) {\n if (!this.buffer)\n return !this._tree._parent ? false\n : this.yield(this._tree.index < 0 ? null\n : this._tree._parent.nextChild(this._tree.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode));\n let { buffer } = this.buffer, d = this.stack.length - 1;\n if (dir < 0) {\n let parentStart = d < 0 ? 0 : this.stack[d] + 4;\n if (this.index != parentStart)\n return this.yieldBuf(buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n else {\n let after = buffer.buffer[this.index + 3];\n if (after < (d < 0 ? buffer.buffer.length : buffer.buffer[this.stack[d] + 3]))\n return this.yieldBuf(after);\n }\n return d < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode)) : false;\n }\n /**\n Move to this node's next sibling, if any.\n */\n nextSibling() { return this.sibling(1); }\n /**\n Move to this node's previous sibling, if any.\n */\n prevSibling() { return this.sibling(-1); }\n atLastNode(dir) {\n let index, parent, { buffer } = this;\n if (buffer) {\n if (dir > 0) {\n if (this.index < buffer.buffer.buffer.length)\n return false;\n }\n else {\n for (let i = 0; i < this.index; i++)\n if (buffer.buffer.buffer[i + 3] < this.index)\n return false;\n }\n ({ index, parent } = buffer);\n }\n else {\n ({ index, _parent: parent } = this._tree);\n }\n for (; parent; { index, _parent: parent } = parent) {\n if (index > -1)\n for (let i = index + dir, e = dir < 0 ? -1 : parent._tree.children.length; i != e; i += dir) {\n let child = parent._tree.children[i];\n if ((this.mode & IterMode.IncludeAnonymous) ||\n child instanceof TreeBuffer ||\n !child.type.isAnonymous ||\n hasChild(child))\n return false;\n }\n }\n return true;\n }\n move(dir, enter) {\n if (enter && this.enterChild(dir, 0, 4 /* Side.DontCare */))\n return true;\n for (;;) {\n if (this.sibling(dir))\n return true;\n if (this.atLastNode(dir) || !this.parent())\n return false;\n }\n }\n /**\n Move to the next node in a\n [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)\n traversal, going from a node to its first child or, if the\n current node is empty or `enter` is false, its next sibling or\n the next sibling of the first parent node that has one.\n */\n next(enter = true) { return this.move(1, enter); }\n /**\n Move to the next node in a last-to-first pre-order traversal. A\n node is followed by its last child or, if it has none, its\n previous sibling or the previous sibling of the first parent\n node that has one.\n */\n prev(enter = true) { return this.move(-1, enter); }\n /**\n Move the cursor to the innermost node that covers `pos`. If\n `side` is -1, it will enter nodes that end at `pos`. If it is 1,\n it will enter nodes that start at `pos`.\n */\n moveTo(pos, side = 0) {\n // Move up to a node that actually holds the position, if possible\n while (this.from == this.to ||\n (side < 1 ? this.from >= pos : this.from > pos) ||\n (side > -1 ? this.to <= pos : this.to < pos))\n if (!this.parent())\n break;\n // Then scan down into child nodes as far as possible\n while (this.enterChild(1, pos, side)) { }\n return this;\n }\n /**\n Get a [syntax node](#common.SyntaxNode) at the cursor's current\n position.\n */\n get node() {\n if (!this.buffer)\n return this._tree;\n let cache = this.bufferNode, result = null, depth = 0;\n if (cache && cache.context == this.buffer) {\n scan: for (let index = this.index, d = this.stack.length; d >= 0;) {\n for (let c = cache; c; c = c._parent)\n if (c.index == index) {\n if (index == this.index)\n return c;\n result = c;\n depth = d + 1;\n break scan;\n }\n index = this.stack[--d];\n }\n }\n for (let i = depth; i < this.stack.length; i++)\n result = new BufferNode(this.buffer, result, this.stack[i]);\n return this.bufferNode = new BufferNode(this.buffer, result, this.index);\n }\n /**\n Get the [tree](#common.Tree) that represents the current node, if\n any. Will return null when the node is in a [tree\n buffer](#common.TreeBuffer).\n */\n get tree() {\n return this.buffer ? null : this._tree._tree;\n }\n /**\n Iterate over the current node and all its descendants, calling\n `enter` when entering a node and `leave`, if given, when leaving\n one. When `enter` returns `false`, any children of that node are\n skipped, and `leave` isn't called for it.\n */\n iterate(enter, leave) {\n for (let depth = 0;;) {\n let mustLeave = false;\n if (this.type.isAnonymous || enter(this) !== false) {\n if (this.firstChild()) {\n depth++;\n continue;\n }\n if (!this.type.isAnonymous)\n mustLeave = true;\n }\n for (;;) {\n if (mustLeave && leave)\n leave(this);\n mustLeave = this.type.isAnonymous;\n if (!depth)\n return;\n if (this.nextSibling())\n break;\n this.parent();\n depth--;\n mustLeave = true;\n }\n }\n }\n /**\n Test whether the current node matches a given context—a sequence\n of direct parent node names. Empty strings in the context array\n are treated as wildcards.\n */\n matchContext(context) {\n if (!this.buffer)\n return matchNodeContext(this.node.parent, context);\n let { buffer } = this.buffer, { types } = buffer.set;\n for (let i = context.length - 1, d = this.stack.length - 1; i >= 0; d--) {\n if (d < 0)\n return matchNodeContext(this._tree, context, i);\n let type = types[buffer.buffer[this.stack[d]]];\n if (!type.isAnonymous) {\n if (context[i] && context[i] != type.name)\n return false;\n i--;\n }\n }\n return true;\n }\n}\nfunction hasChild(tree) {\n return tree.children.some(ch => ch instanceof TreeBuffer || !ch.type.isAnonymous || hasChild(ch));\n}\nfunction buildTree(data) {\n var _a;\n let { buffer, nodeSet, maxBufferLength = DefaultBufferLength, reused = [], minRepeatType = nodeSet.types.length } = data;\n let cursor = Array.isArray(buffer) ? new FlatBufferCursor(buffer, buffer.length) : buffer;\n let types = nodeSet.types;\n let contextHash = 0, lookAhead = 0;\n function takeNode(parentStart, minPos, children, positions, inRepeat, depth) {\n let { id, start, end, size } = cursor;\n let lookAheadAtStart = lookAhead, contextAtStart = contextHash;\n if (size < 0) {\n cursor.next();\n if (size == -1 /* SpecialRecord.Reuse */) {\n let node = reused[id];\n children.push(node);\n positions.push(start - parentStart);\n return;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) { // Context change\n contextHash = id;\n return;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n return;\n }\n else {\n throw new RangeError(`Unrecognized record size: ${size}`);\n }\n }\n let type = types[id], node, buffer;\n let startPos = start - parentStart;\n if (end - start <= maxBufferLength && (buffer = findBufferSize(cursor.pos - minPos, inRepeat))) {\n // Small enough for a buffer, and no reused nodes inside\n let data = new Uint16Array(buffer.size - buffer.skip);\n let endPos = cursor.pos - buffer.size, index = data.length;\n while (cursor.pos > endPos)\n index = copyToBuffer(buffer.start, data, index);\n node = new TreeBuffer(data, end - buffer.start, nodeSet);\n startPos = buffer.start - parentStart;\n }\n else { // Make it a node\n let endPos = cursor.pos - size;\n cursor.next();\n let localChildren = [], localPositions = [];\n let localInRepeat = id >= minRepeatType ? id : -1;\n let lastGroup = 0, lastEnd = end;\n while (cursor.pos > endPos) {\n if (localInRepeat >= 0 && cursor.id == localInRepeat && cursor.size >= 0) {\n if (cursor.end <= lastEnd - maxBufferLength) {\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, cursor.end, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n lastGroup = localChildren.length;\n lastEnd = cursor.end;\n }\n cursor.next();\n }\n else if (depth > 2500 /* CutOff.Depth */) {\n takeFlatNode(start, endPos, localChildren, localPositions);\n }\n else {\n takeNode(start, endPos, localChildren, localPositions, localInRepeat, depth + 1);\n }\n }\n if (localInRepeat >= 0 && lastGroup > 0 && lastGroup < localChildren.length)\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, start, lastEnd, localInRepeat, lookAheadAtStart, contextAtStart);\n localChildren.reverse();\n localPositions.reverse();\n if (localInRepeat > -1 && lastGroup > 0) {\n let make = makeBalanced(type, contextAtStart);\n node = balanceRange(type, localChildren, localPositions, 0, localChildren.length, 0, end - start, make, make);\n }\n else {\n node = makeTree(type, localChildren, localPositions, end - start, lookAheadAtStart - end, contextAtStart);\n }\n }\n children.push(node);\n positions.push(startPos);\n }\n function takeFlatNode(parentStart, minPos, children, positions) {\n let nodes = []; // Temporary, inverted array of leaf nodes found, with absolute positions\n let nodeCount = 0, stopAt = -1;\n while (cursor.pos > minPos) {\n let { id, start, end, size } = cursor;\n if (size > 4) { // Not a leaf\n cursor.next();\n }\n else if (stopAt > -1 && start < stopAt) {\n break;\n }\n else {\n if (stopAt < 0)\n stopAt = end - maxBufferLength;\n nodes.push(id, start, end);\n nodeCount++;\n cursor.next();\n }\n }\n if (nodeCount) {\n let buffer = new Uint16Array(nodeCount * 4);\n let start = nodes[nodes.length - 2];\n for (let i = nodes.length - 3, j = 0; i >= 0; i -= 3) {\n buffer[j++] = nodes[i];\n buffer[j++] = nodes[i + 1] - start;\n buffer[j++] = nodes[i + 2] - start;\n buffer[j++] = j;\n }\n children.push(new TreeBuffer(buffer, nodes[2] - start, nodeSet));\n positions.push(start - parentStart);\n }\n }\n function makeBalanced(type, contextHash) {\n return (children, positions, length) => {\n let lookAhead = 0, lastI = children.length - 1, last, lookAheadProp;\n if (lastI >= 0 && (last = children[lastI]) instanceof Tree) {\n if (!lastI && last.type == type && last.length == length)\n return last;\n if (lookAheadProp = last.prop(NodeProp.lookAhead))\n lookAhead = positions[lastI] + last.length + lookAheadProp;\n }\n return makeTree(type, children, positions, length, lookAhead, contextHash);\n };\n }\n function makeRepeatLeaf(children, positions, base, i, from, to, type, lookAhead, contextHash) {\n let localChildren = [], localPositions = [];\n while (children.length > i) {\n localChildren.push(children.pop());\n localPositions.push(positions.pop() + base - from);\n }\n children.push(makeTree(nodeSet.types[type], localChildren, localPositions, to - from, lookAhead - to, contextHash));\n positions.push(from - base);\n }\n function makeTree(type, children, positions, length, lookAhead, contextHash, props) {\n if (contextHash) {\n let pair = [NodeProp.contextHash, contextHash];\n props = props ? [pair].concat(props) : [pair];\n }\n if (lookAhead > 25) {\n let pair = [NodeProp.lookAhead, lookAhead];\n props = props ? [pair].concat(props) : [pair];\n }\n return new Tree(type, children, positions, length, props);\n }\n function findBufferSize(maxSize, inRepeat) {\n // Scan through the buffer to find previous siblings that fit\n // together in a TreeBuffer, and don't contain any reused nodes\n // (which can't be stored in a buffer).\n // If `inRepeat` is > -1, ignore node boundaries of that type for\n // nesting, but make sure the end falls either at the start\n // (`maxSize`) or before such a node.\n let fork = cursor.fork();\n let size = 0, start = 0, skip = 0, minStart = fork.end - maxBufferLength;\n let result = { size: 0, start: 0, skip: 0 };\n scan: for (let minPos = fork.pos - maxSize; fork.pos > minPos;) {\n let nodeSize = fork.size;\n // Pretend nested repeat nodes of the same type don't exist\n if (fork.id == inRepeat && nodeSize >= 0) {\n // Except that we store the current state as a valid return\n // value.\n result.size = size;\n result.start = start;\n result.skip = skip;\n skip += 4;\n size += 4;\n fork.next();\n continue;\n }\n let startPos = fork.pos - nodeSize;\n if (nodeSize < 0 || startPos < minPos || fork.start < minStart)\n break;\n let localSkipped = fork.id >= minRepeatType ? 4 : 0;\n let nodeStart = fork.start;\n fork.next();\n while (fork.pos > startPos) {\n if (fork.size < 0) {\n if (fork.size == -3 /* SpecialRecord.ContextChange */ || fork.size == -4 /* SpecialRecord.LookAhead */)\n localSkipped += 4;\n else\n break scan;\n }\n else if (fork.id >= minRepeatType) {\n localSkipped += 4;\n }\n fork.next();\n }\n start = nodeStart;\n size += nodeSize;\n skip += localSkipped;\n }\n if (inRepeat < 0 || size == maxSize) {\n result.size = size;\n result.start = start;\n result.skip = skip;\n }\n return result.size > 4 ? result : undefined;\n }\n function copyToBuffer(bufferStart, buffer, index) {\n let { id, start, end, size } = cursor;\n cursor.next();\n if (size >= 0 && id < minRepeatType) {\n let startIndex = index;\n if (size > 4) {\n let endPos = cursor.pos - (size - 4);\n while (cursor.pos > endPos)\n index = copyToBuffer(bufferStart, buffer, index);\n }\n buffer[--index] = startIndex;\n buffer[--index] = end - bufferStart;\n buffer[--index] = start - bufferStart;\n buffer[--index] = id;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) {\n contextHash = id;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n }\n return index;\n }\n let children = [], positions = [];\n while (cursor.pos > 0)\n takeNode(data.start || 0, data.bufferStart || 0, children, positions, -1, 0);\n let length = (_a = data.length) !== null && _a !== void 0 ? _a : (children.length ? positions[0] + children[0].length : 0);\n return new Tree(types[data.topID], children.reverse(), positions.reverse(), length);\n}\nconst nodeSizeCache = new WeakMap;\nfunction nodeSize(balanceType, node) {\n if (!balanceType.isAnonymous || node instanceof TreeBuffer || node.type != balanceType)\n return 1;\n let size = nodeSizeCache.get(node);\n if (size == null) {\n size = 1;\n for (let child of node.children) {\n if (child.type != balanceType || !(child instanceof Tree)) {\n size = 1;\n break;\n }\n size += nodeSize(balanceType, child);\n }\n nodeSizeCache.set(node, size);\n }\n return size;\n}\nfunction balanceRange(\n// The type the balanced tree's inner nodes.\nbalanceType, \n// The direct children and their positions\nchildren, positions, \n// The index range in children/positions to use\nfrom, to, \n// The start position of the nodes, relative to their parent.\nstart, \n// Length of the outer node\nlength, \n// Function to build the top node of the balanced tree\nmkTop, \n// Function to build internal nodes for the balanced tree\nmkTree) {\n let total = 0;\n for (let i = from; i < to; i++)\n total += nodeSize(balanceType, children[i]);\n let maxChild = Math.ceil((total * 1.5) / 8 /* Balance.BranchFactor */);\n let localChildren = [], localPositions = [];\n function divide(children, positions, from, to, offset) {\n for (let i = from; i < to;) {\n let groupFrom = i, groupStart = positions[i], groupSize = nodeSize(balanceType, children[i]);\n i++;\n for (; i < to; i++) {\n let nextSize = nodeSize(balanceType, children[i]);\n if (groupSize + nextSize >= maxChild)\n break;\n groupSize += nextSize;\n }\n if (i == groupFrom + 1) {\n if (groupSize > maxChild) {\n let only = children[groupFrom]; // Only trees can have a size > 1\n divide(only.children, only.positions, 0, only.children.length, positions[groupFrom] + offset);\n continue;\n }\n localChildren.push(children[groupFrom]);\n }\n else {\n let length = positions[i - 1] + children[i - 1].length - groupStart;\n localChildren.push(balanceRange(balanceType, children, positions, groupFrom, i, groupStart, length, null, mkTree));\n }\n localPositions.push(groupStart + offset - start);\n }\n }\n divide(children, positions, from, to, 0);\n return (mkTop || mkTree)(localChildren, localPositions, length);\n}\n/**\nProvides a way to associate values with pieces of trees. As long\nas that part of the tree is reused, the associated values can be\nretrieved from an updated tree.\n*/\nclass NodeWeakMap {\n constructor() {\n this.map = new WeakMap();\n }\n setBuffer(buffer, index, value) {\n let inner = this.map.get(buffer);\n if (!inner)\n this.map.set(buffer, inner = new Map);\n inner.set(index, value);\n }\n getBuffer(buffer, index) {\n let inner = this.map.get(buffer);\n return inner && inner.get(index);\n }\n /**\n Set the value for this syntax node.\n */\n set(node, value) {\n if (node instanceof BufferNode)\n this.setBuffer(node.context.buffer, node.index, value);\n else if (node instanceof TreeNode)\n this.map.set(node.tree, value);\n }\n /**\n Retrieve value for this syntax node, if it exists in the map.\n */\n get(node) {\n return node instanceof BufferNode ? this.getBuffer(node.context.buffer, node.index)\n : node instanceof TreeNode ? this.map.get(node.tree) : undefined;\n }\n /**\n Set the value for the node that a cursor currently points to.\n */\n cursorSet(cursor, value) {\n if (cursor.buffer)\n this.setBuffer(cursor.buffer.buffer, cursor.index, value);\n else\n this.map.set(cursor.tree, value);\n }\n /**\n Retrieve the value for the node that a cursor currently points\n to.\n */\n cursorGet(cursor) {\n return cursor.buffer ? this.getBuffer(cursor.buffer.buffer, cursor.index) : this.map.get(cursor.tree);\n }\n}\n\n/**\nTree fragments are used during [incremental\nparsing](#common.Parser.startParse) to track parts of old trees\nthat can be reused in a new parse. An array of fragments is used\nto track regions of an old tree whose nodes might be reused in new\nparses. Use the static\n[`applyChanges`](#common.TreeFragment^applyChanges) method to\nupdate fragments for document changes.\n*/\nclass TreeFragment {\n /**\n Construct a tree fragment. You'll usually want to use\n [`addTree`](#common.TreeFragment^addTree) and\n [`applyChanges`](#common.TreeFragment^applyChanges) instead of\n calling this directly.\n */\n constructor(\n /**\n The start of the unchanged range pointed to by this fragment.\n This refers to an offset in the _updated_ document (as opposed\n to the original tree).\n */\n from, \n /**\n The end of the unchanged range.\n */\n to, \n /**\n The tree that this fragment is based on.\n */\n tree, \n /**\n The offset between the fragment's tree and the document that\n this fragment can be used against. Add this when going from\n document to tree positions, subtract it to go from tree to\n document positions.\n */\n offset, openStart = false, openEnd = false) {\n this.from = from;\n this.to = to;\n this.tree = tree;\n this.offset = offset;\n this.open = (openStart ? 1 /* Open.Start */ : 0) | (openEnd ? 2 /* Open.End */ : 0);\n }\n /**\n Whether the start of the fragment represents the start of a\n parse, or the end of a change. (In the second case, it may not\n be safe to reuse some nodes at the start, depending on the\n parsing algorithm.)\n */\n get openStart() { return (this.open & 1 /* Open.Start */) > 0; }\n /**\n Whether the end of the fragment represents the end of a\n full-document parse, or the start of a change.\n */\n get openEnd() { return (this.open & 2 /* Open.End */) > 0; }\n /**\n Create a set of fragments from a freshly parsed tree, or update\n an existing set of fragments by replacing the ones that overlap\n with a tree with content from the new tree. When `partial` is\n true, the parse is treated as incomplete, and the resulting\n fragment has [`openEnd`](#common.TreeFragment.openEnd) set to\n true.\n */\n static addTree(tree, fragments = [], partial = false) {\n let result = [new TreeFragment(0, tree.length, tree, 0, false, partial)];\n for (let f of fragments)\n if (f.to > tree.length)\n result.push(f);\n return result;\n }\n /**\n Apply a set of edits to an array of fragments, removing or\n splitting fragments as necessary to remove edited ranges, and\n adjusting offsets for fragments that moved.\n */\n static applyChanges(fragments, changes, minGap = 128) {\n if (!changes.length)\n return fragments;\n let result = [];\n let fI = 1, nextF = fragments.length ? fragments[0] : null;\n for (let cI = 0, pos = 0, off = 0;; cI++) {\n let nextC = cI < changes.length ? changes[cI] : null;\n let nextPos = nextC ? nextC.fromA : 1e9;\n if (nextPos - pos >= minGap)\n while (nextF && nextF.from < nextPos) {\n let cut = nextF;\n if (pos >= cut.from || nextPos <= cut.to || off) {\n let fFrom = Math.max(cut.from, pos) - off, fTo = Math.min(cut.to, nextPos) - off;\n cut = fFrom >= fTo ? null : new TreeFragment(fFrom, fTo, cut.tree, cut.offset + off, cI > 0, !!nextC);\n }\n if (cut)\n result.push(cut);\n if (nextF.to > nextPos)\n break;\n nextF = fI < fragments.length ? fragments[fI++] : null;\n }\n if (!nextC)\n break;\n pos = nextC.toA;\n off = nextC.toA - nextC.toB;\n }\n return result;\n }\n}\n/**\nA superclass that parsers should extend.\n*/\nclass Parser {\n /**\n Start a parse, returning a [partial parse](#common.PartialParse)\n object. [`fragments`](#common.TreeFragment) can be passed in to\n make the parse incremental.\n \n By default, the entire input is parsed. You can pass `ranges`,\n which should be a sorted array of non-empty, non-overlapping\n ranges, to parse only those ranges. The tree returned in that\n case will start at `ranges[0].from`.\n */\n startParse(input, fragments, ranges) {\n if (typeof input == \"string\")\n input = new StringInput(input);\n ranges = !ranges ? [new Range(0, input.length)] : ranges.length ? ranges.map(r => new Range(r.from, r.to)) : [new Range(0, 0)];\n return this.createParse(input, fragments || [], ranges);\n }\n /**\n Run a full parse, returning the resulting tree.\n */\n parse(input, fragments, ranges) {\n let parse = this.startParse(input, fragments, ranges);\n for (;;) {\n let done = parse.advance();\n if (done)\n return done;\n }\n }\n}\nclass StringInput {\n constructor(string) {\n this.string = string;\n }\n get length() { return this.string.length; }\n chunk(from) { return this.string.slice(from); }\n get lineChunks() { return false; }\n read(from, to) { return this.string.slice(from, to); }\n}\n\n/**\nCreate a parse wrapper that, after the inner parse completes,\nscans its tree for mixed language regions with the `nest`\nfunction, runs the resulting [inner parses](#common.NestedParse),\nand then [mounts](#common.NodeProp^mounted) their results onto the\ntree.\n*/\nfunction parseMixed(nest) {\n return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);\n}\nclass InnerParse {\n constructor(parser, parse, overlay, bracketed, target, from) {\n this.parser = parser;\n this.parse = parse;\n this.overlay = overlay;\n this.bracketed = bracketed;\n this.target = target;\n this.from = from;\n }\n}\nfunction checkRanges(ranges) {\n if (!ranges.length || ranges.some(r => r.from >= r.to))\n throw new RangeError(\"Invalid inner parse ranges given: \" + JSON.stringify(ranges));\n}\nclass ActiveOverlay {\n constructor(parser, predicate, mounts, index, start, bracketed, target, prev) {\n this.parser = parser;\n this.predicate = predicate;\n this.mounts = mounts;\n this.index = index;\n this.start = start;\n this.bracketed = bracketed;\n this.target = target;\n this.prev = prev;\n this.depth = 0;\n this.ranges = [];\n }\n}\nconst stoppedInner = new NodeProp({ perNode: true });\nclass MixedParse {\n constructor(base, nest, input, fragments, ranges) {\n this.nest = nest;\n this.input = input;\n this.fragments = fragments;\n this.ranges = ranges;\n this.inner = [];\n this.innerDone = 0;\n this.baseTree = null;\n this.stoppedAt = null;\n this.baseParse = base;\n }\n advance() {\n if (this.baseParse) {\n let done = this.baseParse.advance();\n if (!done)\n return null;\n this.baseParse = null;\n this.baseTree = done;\n this.startInner();\n if (this.stoppedAt != null)\n for (let inner of this.inner)\n inner.parse.stopAt(this.stoppedAt);\n }\n if (this.innerDone == this.inner.length) {\n let result = this.baseTree;\n if (this.stoppedAt != null)\n result = new Tree(result.type, result.children, result.positions, result.length, result.propValues.concat([[stoppedInner, this.stoppedAt]]));\n return result;\n }\n let inner = this.inner[this.innerDone], done = inner.parse.advance();\n if (done) {\n this.innerDone++;\n // This is a somewhat dodgy but super helpful hack where we\n // patch up nodes created by the inner parse (and thus\n // presumably not aliased anywhere else) to hold the information\n // about the inner parse.\n let props = Object.assign(Object.create(null), inner.target.props);\n props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser, inner.bracketed);\n inner.target.props = props;\n }\n return null;\n }\n get parsedPos() {\n if (this.baseParse)\n return 0;\n let pos = this.input.length;\n for (let i = this.innerDone; i < this.inner.length; i++) {\n if (this.inner[i].from < pos)\n pos = Math.min(pos, this.inner[i].parse.parsedPos);\n }\n return pos;\n }\n stopAt(pos) {\n this.stoppedAt = pos;\n if (this.baseParse)\n this.baseParse.stopAt(pos);\n else\n for (let i = this.innerDone; i < this.inner.length; i++)\n this.inner[i].parse.stopAt(pos);\n }\n startInner() {\n let fragmentCursor = new FragmentCursor(this.fragments);\n let overlay = null;\n let covered = null;\n let cursor = new TreeCursor(new TreeNode(this.baseTree, this.ranges[0].from, 0, null), IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n scan: for (let nest, isCovered;;) {\n let enter = true, range;\n if (this.stoppedAt != null && cursor.from >= this.stoppedAt) {\n enter = false;\n }\n else if (fragmentCursor.hasNode(cursor)) {\n if (overlay) {\n let match = overlay.mounts.find(m => m.frag.from <= cursor.from && m.frag.to >= cursor.to && m.mount.overlay);\n if (match)\n for (let r of match.mount.overlay) {\n let from = r.from + match.pos, to = r.to + match.pos;\n if (from >= cursor.from && to <= cursor.to && !overlay.ranges.some(r => r.from < to && r.to > from))\n overlay.ranges.push({ from, to });\n }\n }\n enter = false;\n }\n else if (covered && (isCovered = checkCover(covered.ranges, cursor.from, cursor.to))) {\n enter = isCovered != 2 /* Cover.Full */;\n }\n else if (!cursor.type.isAnonymous && (nest = this.nest(cursor, this.input)) &&\n (cursor.from < cursor.to || !nest.overlay)) {\n if (!cursor.tree) {\n materialize(cursor);\n // materialize create one more level of nesting\n // we need to add depth to active overlay for going backwards\n if (overlay)\n overlay.depth++;\n if (covered)\n covered.depth++;\n }\n let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);\n if (typeof nest.overlay == \"function\") {\n overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, !!nest.bracketed, cursor.tree, overlay);\n }\n else {\n let ranges = punchRanges(this.ranges, nest.overlay ||\n (cursor.from < cursor.to ? [new Range(cursor.from, cursor.to)] : []));\n if (ranges.length)\n checkRanges(ranges);\n if (ranges.length || !nest.overlay)\n this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)\n : nest.parser.startParse(\"\"), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, !!nest.bracketed, cursor.tree, ranges.length ? ranges[0].from : cursor.from));\n if (!nest.overlay)\n enter = false;\n else if (ranges.length)\n covered = { ranges, depth: 0, prev: covered };\n }\n }\n else if (overlay && (range = overlay.predicate(cursor))) {\n if (range === true)\n range = new Range(cursor.from, cursor.to);\n if (range.from < range.to) {\n let last = overlay.ranges.length - 1;\n if (last >= 0 && overlay.ranges[last].to == range.from)\n overlay.ranges[last] = { from: overlay.ranges[last].from, to: range.to };\n else\n overlay.ranges.push(range);\n }\n }\n if (enter && cursor.firstChild()) {\n if (overlay)\n overlay.depth++;\n if (covered)\n covered.depth++;\n }\n else {\n for (;;) {\n if (cursor.nextSibling())\n break;\n if (!cursor.parent())\n break scan;\n if (overlay && !--overlay.depth) {\n let ranges = punchRanges(this.ranges, overlay.ranges);\n if (ranges.length) {\n checkRanges(ranges);\n this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.bracketed, overlay.target, ranges[0].from));\n }\n overlay = overlay.prev;\n }\n if (covered && !--covered.depth)\n covered = covered.prev;\n }\n }\n }\n }\n}\nfunction checkCover(covered, from, to) {\n for (let range of covered) {\n if (range.from >= to)\n break;\n if (range.to > from)\n return range.from <= from && range.to >= to ? 2 /* Cover.Full */ : 1 /* Cover.Partial */;\n }\n return 0 /* Cover.None */;\n}\n// Take a piece of buffer and convert it into a stand-alone\n// TreeBuffer.\nfunction sliceBuf(buf, startI, endI, nodes, positions, off) {\n if (startI < endI) {\n let from = buf.buffer[startI + 1];\n nodes.push(buf.slice(startI, endI, from));\n positions.push(from - off);\n }\n}\n// This function takes a node that's in a buffer, and converts it, and\n// its parent buffer nodes, into a Tree. This is again acting on the\n// assumption that the trees and buffers have been constructed by the\n// parse that was ran via the mix parser, and thus aren't shared with\n// any other code, making violations of the immutability safe.\nfunction materialize(cursor) {\n let { node } = cursor, stack = [];\n let buffer = node.context.buffer;\n // Scan up to the nearest tree\n do {\n stack.push(cursor.index);\n cursor.parent();\n } while (!cursor.tree);\n // Find the index of the buffer in that tree\n let base = cursor.tree, i = base.children.indexOf(buffer);\n let buf = base.children[i], b = buf.buffer, newStack = [i];\n // Split a level in the buffer, putting the nodes before and after\n // the child that contains `node` into new buffers.\n function split(startI, endI, type, innerOffset, length, stackPos) {\n let targetI = stack[stackPos];\n let children = [], positions = [];\n sliceBuf(buf, startI, targetI, children, positions, innerOffset);\n let from = b[targetI + 1], to = b[targetI + 2];\n newStack.push(children.length);\n let child = stackPos\n ? split(targetI + 4, b[targetI + 3], buf.set.types[b[targetI]], from, to - from, stackPos - 1)\n : node.toTree();\n children.push(child);\n positions.push(from - innerOffset);\n sliceBuf(buf, b[targetI + 3], endI, children, positions, innerOffset);\n return new Tree(type, children, positions, length);\n }\n base.children[i] = split(0, b.length, NodeType.none, 0, buf.length, stack.length - 1);\n // Move the cursor back to the target node\n for (let index of newStack) {\n let tree = cursor.tree.children[index], pos = cursor.tree.positions[index];\n cursor.yield(new TreeNode(tree, pos + cursor.from, index, cursor._tree));\n }\n}\nclass StructureCursor {\n constructor(root, offset) {\n this.offset = offset;\n this.done = false;\n this.cursor = root.cursor(IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n }\n // Move to the first node (in pre-order) that starts at or after `pos`.\n moveTo(pos) {\n let { cursor } = this, p = pos - this.offset;\n while (!this.done && cursor.from < p) {\n if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;\n else if (!cursor.next(false))\n this.done = true;\n }\n }\n hasNode(cursor) {\n this.moveTo(cursor.from);\n if (!this.done && this.cursor.from + this.offset == cursor.from && this.cursor.tree) {\n for (let tree = this.cursor.tree;;) {\n if (tree == cursor.tree)\n return true;\n if (tree.children.length && tree.positions[0] == 0 && tree.children[0] instanceof Tree)\n tree = tree.children[0];\n else\n break;\n }\n }\n return false;\n }\n}\nclass FragmentCursor {\n constructor(fragments) {\n var _a;\n this.fragments = fragments;\n this.curTo = 0;\n this.fragI = 0;\n if (fragments.length) {\n let first = this.curFrag = fragments[0];\n this.curTo = (_a = first.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : first.to;\n this.inner = new StructureCursor(first.tree, -first.offset);\n }\n else {\n this.curFrag = this.inner = null;\n }\n }\n hasNode(node) {\n while (this.curFrag && node.from >= this.curTo)\n this.nextFrag();\n return this.curFrag && this.curFrag.from <= node.from && this.curTo >= node.to && this.inner.hasNode(node);\n }\n nextFrag() {\n var _a;\n this.fragI++;\n if (this.fragI == this.fragments.length) {\n this.curFrag = this.inner = null;\n }\n else {\n let frag = this.curFrag = this.fragments[this.fragI];\n this.curTo = (_a = frag.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : frag.to;\n this.inner = new StructureCursor(frag.tree, -frag.offset);\n }\n }\n findMounts(pos, parser) {\n var _a;\n let result = [];\n if (this.inner) {\n this.inner.cursor.moveTo(pos, 1);\n for (let pos = this.inner.cursor.node; pos; pos = pos.parent) {\n let mount = (_a = pos.tree) === null || _a === void 0 ? void 0 : _a.prop(NodeProp.mounted);\n if (mount && mount.parser == parser) {\n for (let i = this.fragI; i < this.fragments.length; i++) {\n let frag = this.fragments[i];\n if (frag.from >= pos.to)\n break;\n if (frag.tree == this.curFrag.tree)\n result.push({\n frag,\n pos: pos.from - frag.offset,\n mount\n });\n }\n }\n }\n }\n return result;\n }\n}\nfunction punchRanges(outer, ranges) {\n let copy = null, current = ranges;\n for (let i = 1, j = 0; i < outer.length; i++) {\n let gapFrom = outer[i - 1].to, gapTo = outer[i].from;\n for (; j < current.length; j++) {\n let r = current[j];\n if (r.from >= gapTo)\n break;\n if (r.to <= gapFrom)\n continue;\n if (!copy)\n current = copy = ranges.slice();\n if (r.from < gapFrom) {\n copy[j] = new Range(r.from, gapFrom);\n if (r.to > gapTo)\n copy.splice(j + 1, 0, new Range(gapTo, r.to));\n }\n else if (r.to > gapTo) {\n copy[j--] = new Range(gapTo, r.to);\n }\n else {\n copy.splice(j--, 1);\n }\n }\n }\n return current;\n}\nfunction findCoverChanges(a, b, from, to) {\n let iA = 0, iB = 0, inA = false, inB = false, pos = -1e9;\n let result = [];\n for (;;) {\n let nextA = iA == a.length ? 1e9 : inA ? a[iA].to : a[iA].from;\n let nextB = iB == b.length ? 1e9 : inB ? b[iB].to : b[iB].from;\n if (inA != inB) {\n let start = Math.max(pos, from), end = Math.min(nextA, nextB, to);\n if (start < end)\n result.push(new Range(start, end));\n }\n pos = Math.min(nextA, nextB);\n if (pos == 1e9)\n break;\n if (nextA == pos) {\n if (!inA)\n inA = true;\n else {\n inA = false;\n iA++;\n }\n }\n if (nextB == pos) {\n if (!inB)\n inB = true;\n else {\n inB = false;\n iB++;\n }\n }\n }\n return result;\n}\n// Given a number of fragments for the outer tree, and a set of ranges\n// to parse, find fragments for inner trees mounted around those\n// ranges, if any.\nfunction enterFragments(mounts, ranges) {\n let result = [];\n for (let { pos, mount, frag } of mounts) {\n let startPos = pos + (mount.overlay ? mount.overlay[0].from : 0), endPos = startPos + mount.tree.length;\n let from = Math.max(frag.from, startPos), to = Math.min(frag.to, endPos);\n if (mount.overlay) {\n let overlay = mount.overlay.map(r => new Range(r.from + pos, r.to + pos));\n let changes = findCoverChanges(ranges, overlay, from, to);\n for (let i = 0, pos = from;; i++) {\n let last = i == changes.length, end = last ? to : changes[i].from;\n if (end > pos)\n result.push(new TreeFragment(pos, end, mount.tree, -startPos, frag.from >= pos || frag.openStart, frag.to <= end || frag.openEnd));\n if (last)\n break;\n pos = changes[i].to;\n }\n }\n else {\n result.push(new TreeFragment(from, to, mount.tree, -startPos, frag.from >= startPos || frag.openStart, frag.to <= endPos || frag.openEnd));\n }\n }\n return result;\n}\n\nexport { DefaultBufferLength, IterMode, MountedTree, NodeProp, NodeSet, NodeType, NodeWeakMap, Parser, Tree, TreeBuffer, TreeCursor, TreeFragment, parseMixed };\n","import { NodeProp } from '@lezer/common';\n\nlet nextTagID = 0;\n/**\nHighlighting tags are markers that denote a highlighting category.\nThey are [associated](#highlight.styleTags) with parts of a syntax\ntree by a language mode, and then mapped to an actual CSS style by\na [highlighter](#highlight.Highlighter).\n\nBecause syntax tree node types and highlight styles have to be\nable to talk the same language, CodeMirror uses a mostly _closed_\n[vocabulary](#highlight.tags) of syntax tags (as opposed to\ntraditional open string-based systems, which make it hard for\nhighlighting themes to cover all the tokens produced by the\nvarious languages).\n\nIt _is_ possible to [define](#highlight.Tag^define) your own\nhighlighting tags for system-internal use (where you control both\nthe language package and the highlighter), but such tags will not\nbe picked up by regular highlighters (though you can derive them\nfrom standard tags to allow highlighters to fall back to those).\n*/\nclass Tag {\n /**\n @internal\n */\n constructor(\n /**\n The optional name of the base tag @internal\n */\n name, \n /**\n The set of this tag and all its parent tags, starting with\n this one itself and sorted in order of decreasing specificity.\n */\n set, \n /**\n The base unmodified tag that this one is based on, if it's\n modified @internal\n */\n base, \n /**\n The modifiers applied to this.base @internal\n */\n modified) {\n this.name = name;\n this.set = set;\n this.base = base;\n this.modified = modified;\n /**\n @internal\n */\n this.id = nextTagID++;\n }\n toString() {\n let { name } = this;\n for (let mod of this.modified)\n if (mod.name)\n name = `${mod.name}(${name})`;\n return name;\n }\n static define(nameOrParent, parent) {\n let name = typeof nameOrParent == \"string\" ? nameOrParent : \"?\";\n if (nameOrParent instanceof Tag)\n parent = nameOrParent;\n if (parent === null || parent === void 0 ? void 0 : parent.base)\n throw new Error(\"Can not derive from a modified tag\");\n let tag = new Tag(name, [], null, []);\n tag.set.push(tag);\n if (parent)\n for (let t of parent.set)\n tag.set.push(t);\n return tag;\n }\n /**\n Define a tag _modifier_, which is a function that, given a tag,\n will return a tag that is a subtag of the original. Applying the\n same modifier to a twice tag will return the same value (`m1(t1)\n == m1(t1)`) and applying multiple modifiers will, regardless or\n order, produce the same tag (`m1(m2(t1)) == m2(m1(t1))`).\n \n When multiple modifiers are applied to a given base tag, each\n smaller set of modifiers is registered as a parent, so that for\n example `m1(m2(m3(t1)))` is a subtype of `m1(m2(t1))`,\n `m1(m3(t1)`, and so on.\n */\n static defineModifier(name) {\n let mod = new Modifier(name);\n return (tag) => {\n if (tag.modified.indexOf(mod) > -1)\n return tag;\n return Modifier.get(tag.base || tag, tag.modified.concat(mod).sort((a, b) => a.id - b.id));\n };\n }\n}\nlet nextModifierID = 0;\nclass Modifier {\n constructor(name) {\n this.name = name;\n this.instances = [];\n this.id = nextModifierID++;\n }\n static get(base, mods) {\n if (!mods.length)\n return base;\n let exists = mods[0].instances.find(t => t.base == base && sameArray(mods, t.modified));\n if (exists)\n return exists;\n let set = [], tag = new Tag(base.name, set, base, mods);\n for (let m of mods)\n m.instances.push(tag);\n let configs = powerSet(mods);\n for (let parent of base.set)\n if (!parent.modified.length)\n for (let config of configs)\n set.push(Modifier.get(parent, config));\n return tag;\n }\n}\nfunction sameArray(a, b) {\n return a.length == b.length && a.every((x, i) => x == b[i]);\n}\nfunction powerSet(array) {\n let sets = [[]];\n for (let i = 0; i < array.length; i++) {\n for (let j = 0, e = sets.length; j < e; j++) {\n sets.push(sets[j].concat(array[i]));\n }\n }\n return sets.sort((a, b) => b.length - a.length);\n}\n/**\nThis function is used to add a set of tags to a language syntax\nvia [`NodeSet.extend`](#common.NodeSet.extend) or\n[`LRParser.configure`](#lr.LRParser.configure).\n\nThe argument object maps node selectors to [highlighting\ntags](#highlight.Tag) or arrays of tags.\n\nNode selectors may hold one or more (space-separated) node paths.\nSuch a path can be a [node name](#common.NodeType.name), or\nmultiple node names (or `*` wildcards) separated by slash\ncharacters, as in `\"Block/Declaration/VariableName\"`. Such a path\nmatches the final node but only if its direct parent nodes are the\nother nodes mentioned. A `*` in such a path matches any parent,\nbut only a single level—wildcards that match multiple parents\naren't supported, both for efficiency reasons and because Lezer\ntrees make it rather hard to reason about what they would match.)\n\nA path can be ended with `/...` to indicate that the tag assigned\nto the node should also apply to all child nodes, even if they\nmatch their own style (by default, only the innermost style is\nused).\n\nWhen a path ends in `!`, as in `Attribute!`, no further matching\nhappens for the node's child nodes, and the entire node gets the\ngiven style.\n\nIn this notation, node names that contain `/`, `!`, `*`, or `...`\nmust be quoted as JSON strings.\n\nFor example:\n\n```javascript\nparser.configure({props: [\n styleTags({\n // Style Number and BigNumber nodes\n \"Number BigNumber\": tags.number,\n // Style Escape nodes whose parent is String\n \"String/Escape\": tags.escape,\n // Style anything inside Attributes nodes\n \"Attributes!\": tags.meta,\n // Add a style to all content inside Italic nodes\n \"Italic/...\": tags.emphasis,\n // Style InvalidString nodes as both `string` and `invalid`\n \"InvalidString\": [tags.string, tags.invalid],\n // Style the node named \"/\" as punctuation\n '\"/\"': tags.punctuation\n })\n]})\n```\n*/\nfunction styleTags(spec) {\n let byName = Object.create(null);\n for (let prop in spec) {\n let tags = spec[prop];\n if (!Array.isArray(tags))\n tags = [tags];\n for (let part of prop.split(\" \"))\n if (part) {\n let pieces = [], mode = 2 /* Mode.Normal */, rest = part;\n for (let pos = 0;;) {\n if (rest == \"...\" && pos > 0 && pos + 3 == part.length) {\n mode = 1 /* Mode.Inherit */;\n break;\n }\n let m = /^\"(?:[^\"\\\\]|\\\\.)*?\"|[^\\/!]+/.exec(rest);\n if (!m)\n throw new RangeError(\"Invalid path: \" + part);\n pieces.push(m[0] == \"*\" ? \"\" : m[0][0] == '\"' ? JSON.parse(m[0]) : m[0]);\n pos += m[0].length;\n if (pos == part.length)\n break;\n let next = part[pos++];\n if (pos == part.length && next == \"!\") {\n mode = 0 /* Mode.Opaque */;\n break;\n }\n if (next != \"/\")\n throw new RangeError(\"Invalid path: \" + part);\n rest = part.slice(pos);\n }\n let last = pieces.length - 1, inner = pieces[last];\n if (!inner)\n throw new RangeError(\"Invalid path: \" + part);\n let rule = new Rule(tags, mode, last > 0 ? pieces.slice(0, last) : null);\n byName[inner] = rule.sort(byName[inner]);\n }\n }\n return ruleNodeProp.add(byName);\n}\nconst ruleNodeProp = new NodeProp({\n combine(a, b) {\n let cur, root, take;\n while (a || b) {\n if (!a || b && a.depth >= b.depth) {\n take = b;\n b = b.next;\n }\n else {\n take = a;\n a = a.next;\n }\n if (cur && cur.mode == take.mode && !take.context && !cur.context)\n continue;\n let copy = new Rule(take.tags, take.mode, take.context);\n if (cur)\n cur.next = copy;\n else\n root = copy;\n cur = copy;\n }\n return root;\n }\n});\nclass Rule {\n constructor(tags, mode, context, next) {\n this.tags = tags;\n this.mode = mode;\n this.context = context;\n this.next = next;\n }\n get opaque() { return this.mode == 0 /* Mode.Opaque */; }\n get inherit() { return this.mode == 1 /* Mode.Inherit */; }\n sort(other) {\n if (!other || other.depth < this.depth) {\n this.next = other;\n return this;\n }\n other.next = this.sort(other.next);\n return other;\n }\n get depth() { return this.context ? this.context.length : 0; }\n}\nRule.empty = new Rule([], 2 /* Mode.Normal */, null);\n/**\nDefine a [highlighter](#highlight.Highlighter) from an array of\ntag/class pairs. Classes associated with more specific tags will\ntake precedence.\n*/\nfunction tagHighlighter(tags, options) {\n let map = Object.create(null);\n for (let style of tags) {\n if (!Array.isArray(style.tag))\n map[style.tag.id] = style.class;\n else\n for (let tag of style.tag)\n map[tag.id] = style.class;\n }\n let { scope, all = null } = options || {};\n return {\n style: (tags) => {\n let cls = all;\n for (let tag of tags) {\n for (let sub of tag.set) {\n let tagClass = map[sub.id];\n if (tagClass) {\n cls = cls ? cls + \" \" + tagClass : tagClass;\n break;\n }\n }\n }\n return cls;\n },\n scope\n };\n}\nfunction highlightTags(highlighters, tags) {\n let result = null;\n for (let highlighter of highlighters) {\n let value = highlighter.style(tags);\n if (value)\n result = result ? result + \" \" + value : value;\n }\n return result;\n}\n/**\nHighlight the given [tree](#common.Tree) with the given\n[highlighter](#highlight.Highlighter). Often, the higher-level\n[`highlightCode`](#highlight.highlightCode) function is easier to\nuse.\n*/\nfunction highlightTree(tree, highlighter, \n/**\nAssign styling to a region of the text. Will be called, in order\nof position, for any ranges where more than zero classes apply.\n`classes` is a space separated string of CSS classes.\n*/\nputStyle, \n/**\nThe start of the range to highlight.\n*/\nfrom = 0, \n/**\nThe end of the range.\n*/\nto = tree.length) {\n let builder = new HighlightBuilder(from, Array.isArray(highlighter) ? highlighter : [highlighter], putStyle);\n builder.highlightRange(tree.cursor(), from, to, \"\", builder.highlighters);\n builder.flush(to);\n}\n/**\nHighlight the given tree with the given highlighter, calling\n`putText` for every piece of text, either with a set of classes or\nwith the empty string when unstyled, and `putBreak` for every line\nbreak.\n*/\nfunction highlightCode(code, tree, highlighter, putText, putBreak, from = 0, to = code.length) {\n let pos = from;\n function writeTo(p, classes) {\n if (p <= pos)\n return;\n for (let text = code.slice(pos, p), i = 0;;) {\n let nextBreak = text.indexOf(\"\\n\", i);\n let upto = nextBreak < 0 ? text.length : nextBreak;\n if (upto > i)\n putText(text.slice(i, upto), classes);\n if (nextBreak < 0)\n break;\n putBreak();\n i = nextBreak + 1;\n }\n pos = p;\n }\n highlightTree(tree, highlighter, (from, to, classes) => {\n writeTo(from, \"\");\n writeTo(to, classes);\n }, from, to);\n writeTo(to, \"\");\n}\nclass HighlightBuilder {\n constructor(at, highlighters, span) {\n this.at = at;\n this.highlighters = highlighters;\n this.span = span;\n this.class = \"\";\n }\n startSpan(at, cls) {\n if (cls != this.class) {\n this.flush(at);\n if (at > this.at)\n this.at = at;\n this.class = cls;\n }\n }\n flush(to) {\n if (to > this.at && this.class)\n this.span(this.at, to, this.class);\n }\n highlightRange(cursor, from, to, inheritedClass, highlighters) {\n let { type, from: start, to: end } = cursor;\n if (start >= to || end <= from)\n return;\n if (type.isTop)\n highlighters = this.highlighters.filter(h => !h.scope || h.scope(type));\n let cls = inheritedClass;\n let rule = getStyleTags(cursor) || Rule.empty;\n let tagCls = highlightTags(highlighters, rule.tags);\n if (tagCls) {\n if (cls)\n cls += \" \";\n cls += tagCls;\n if (rule.mode == 1 /* Mode.Inherit */)\n inheritedClass += (inheritedClass ? \" \" : \"\") + tagCls;\n }\n this.startSpan(Math.max(from, start), cls);\n if (rule.opaque)\n return;\n let mounted = cursor.tree && cursor.tree.prop(NodeProp.mounted);\n if (mounted && mounted.overlay) {\n let inner = cursor.node.enter(mounted.overlay[0].from + start, 1);\n let innerHighlighters = this.highlighters.filter(h => !h.scope || h.scope(mounted.tree.type));\n let hasChild = cursor.firstChild();\n for (let i = 0, pos = start;; i++) {\n let next = i < mounted.overlay.length ? mounted.overlay[i] : null;\n let nextPos = next ? next.from + start : end;\n let rangeFrom = Math.max(from, pos), rangeTo = Math.min(to, nextPos);\n if (rangeFrom < rangeTo && hasChild) {\n while (cursor.from < rangeTo) {\n this.highlightRange(cursor, rangeFrom, rangeTo, inheritedClass, highlighters);\n this.startSpan(Math.min(rangeTo, cursor.to), cls);\n if (cursor.to >= nextPos || !cursor.nextSibling())\n break;\n }\n }\n if (!next || nextPos > to)\n break;\n pos = next.to + start;\n if (pos > from) {\n this.highlightRange(inner.cursor(), Math.max(from, next.from + start), Math.min(to, pos), \"\", innerHighlighters);\n this.startSpan(Math.min(to, pos), cls);\n }\n }\n if (hasChild)\n cursor.parent();\n }\n else if (cursor.firstChild()) {\n if (mounted)\n inheritedClass = \"\";\n do {\n if (cursor.to <= from)\n continue;\n if (cursor.from >= to)\n break;\n this.highlightRange(cursor, from, to, inheritedClass, highlighters);\n this.startSpan(Math.min(to, cursor.to), cls);\n } while (cursor.nextSibling());\n cursor.parent();\n }\n }\n}\n/**\nMatch a syntax node's [highlight rules](#highlight.styleTags). If\nthere's a match, return its set of tags, and whether it is\nopaque (uses a `!`) or applies to all child nodes (`/...`).\n*/\nfunction getStyleTags(node) {\n let rule = node.type.prop(ruleNodeProp);\n while (rule && rule.context && !node.matchContext(rule.context))\n rule = rule.next;\n return rule || null;\n}\nconst t = Tag.define;\nconst comment = t(), name = t(), typeName = t(name), propertyName = t(name), literal = t(), string = t(literal), number = t(literal), content = t(), heading = t(content), keyword = t(), operator = t(), punctuation = t(), bracket = t(punctuation), meta = t();\n/**\nThe default set of highlighting [tags](#highlight.Tag).\n\nThis collection is heavily biased towards programming languages,\nand necessarily incomplete. A full ontology of syntactic\nconstructs would fill a stack of books, and be impractical to\nwrite themes for. So try to make do with this set. If all else\nfails, [open an\nissue](https://github.com/codemirror/codemirror.next) to propose a\nnew tag, or [define](#highlight.Tag^define) a local custom tag for\nyour use case.\n\nNote that it is not obligatory to always attach the most specific\ntag possible to an element—if your grammar can't easily\ndistinguish a certain type of element (such as a local variable),\nit is okay to style it as its more general variant (a variable).\n\nFor tags that extend some parent tag, the documentation links to\nthe parent.\n*/\nconst tags = {\n /**\n A comment.\n */\n comment,\n /**\n A line [comment](#highlight.tags.comment).\n */\n lineComment: t(comment),\n /**\n A block [comment](#highlight.tags.comment).\n */\n blockComment: t(comment),\n /**\n A documentation [comment](#highlight.tags.comment).\n */\n docComment: t(comment),\n /**\n Any kind of identifier.\n */\n name,\n /**\n The [name](#highlight.tags.name) of a variable.\n */\n variableName: t(name),\n /**\n A type [name](#highlight.tags.name).\n */\n typeName: typeName,\n /**\n A tag name (subtag of [`typeName`](#highlight.tags.typeName)).\n */\n tagName: t(typeName),\n /**\n A property or field [name](#highlight.tags.name).\n */\n propertyName: propertyName,\n /**\n An attribute name (subtag of [`propertyName`](#highlight.tags.propertyName)).\n */\n attributeName: t(propertyName),\n /**\n The [name](#highlight.tags.name) of a class.\n */\n className: t(name),\n /**\n A label [name](#highlight.tags.name).\n */\n labelName: t(name),\n /**\n A namespace [name](#highlight.tags.name).\n */\n namespace: t(name),\n /**\n The [name](#highlight.tags.name) of a macro.\n */\n macroName: t(name),\n /**\n A literal value.\n */\n literal,\n /**\n A string [literal](#highlight.tags.literal).\n */\n string,\n /**\n A documentation [string](#highlight.tags.string).\n */\n docString: t(string),\n /**\n A character literal (subtag of [string](#highlight.tags.string)).\n */\n character: t(string),\n /**\n An attribute value (subtag of [string](#highlight.tags.string)).\n */\n attributeValue: t(string),\n /**\n A number [literal](#highlight.tags.literal).\n */\n number,\n /**\n An integer [number](#highlight.tags.number) literal.\n */\n integer: t(number),\n /**\n A floating-point [number](#highlight.tags.number) literal.\n */\n float: t(number),\n /**\n A boolean [literal](#highlight.tags.literal).\n */\n bool: t(literal),\n /**\n Regular expression [literal](#highlight.tags.literal).\n */\n regexp: t(literal),\n /**\n An escape [literal](#highlight.tags.literal), for example a\n backslash escape in a string.\n */\n escape: t(literal),\n /**\n A color [literal](#highlight.tags.literal).\n */\n color: t(literal),\n /**\n A URL [literal](#highlight.tags.literal).\n */\n url: t(literal),\n /**\n A language keyword.\n */\n keyword,\n /**\n The [keyword](#highlight.tags.keyword) for the self or this\n object.\n */\n self: t(keyword),\n /**\n The [keyword](#highlight.tags.keyword) for null.\n */\n null: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) denoting some atomic value.\n */\n atom: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that represents a unit.\n */\n unit: t(keyword),\n /**\n A modifier [keyword](#highlight.tags.keyword).\n */\n modifier: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that acts as an operator.\n */\n operatorKeyword: t(keyword),\n /**\n A control-flow related [keyword](#highlight.tags.keyword).\n */\n controlKeyword: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that defines something.\n */\n definitionKeyword: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) related to defining or\n interfacing with modules.\n */\n moduleKeyword: t(keyword),\n /**\n An operator.\n */\n operator,\n /**\n An [operator](#highlight.tags.operator) that dereferences something.\n */\n derefOperator: t(operator),\n /**\n Arithmetic-related [operator](#highlight.tags.operator).\n */\n arithmeticOperator: t(operator),\n /**\n Logical [operator](#highlight.tags.operator).\n */\n logicOperator: t(operator),\n /**\n Bit [operator](#highlight.tags.operator).\n */\n bitwiseOperator: t(operator),\n /**\n Comparison [operator](#highlight.tags.operator).\n */\n compareOperator: t(operator),\n /**\n [Operator](#highlight.tags.operator) that updates its operand.\n */\n updateOperator: t(operator),\n /**\n [Operator](#highlight.tags.operator) that defines something.\n */\n definitionOperator: t(operator),\n /**\n Type-related [operator](#highlight.tags.operator).\n */\n typeOperator: t(operator),\n /**\n Control-flow [operator](#highlight.tags.operator).\n */\n controlOperator: t(operator),\n /**\n Program or markup punctuation.\n */\n punctuation,\n /**\n [Punctuation](#highlight.tags.punctuation) that separates\n things.\n */\n separator: t(punctuation),\n /**\n Bracket-style [punctuation](#highlight.tags.punctuation).\n */\n bracket,\n /**\n Angle [brackets](#highlight.tags.bracket) (usually `<` and `>`\n tokens).\n */\n angleBracket: t(bracket),\n /**\n Square [brackets](#highlight.tags.bracket) (usually `[` and `]`\n tokens).\n */\n squareBracket: t(bracket),\n /**\n Parentheses (usually `(` and `)` tokens). Subtag of\n [bracket](#highlight.tags.bracket).\n */\n paren: t(bracket),\n /**\n Braces (usually `{` and `}` tokens). Subtag of\n [bracket](#highlight.tags.bracket).\n */\n brace: t(bracket),\n /**\n Content, for example plain text in XML or markup documents.\n */\n content,\n /**\n [Content](#highlight.tags.content) that represents a heading.\n */\n heading,\n /**\n A level 1 [heading](#highlight.tags.heading).\n */\n heading1: t(heading),\n /**\n A level 2 [heading](#highlight.tags.heading).\n */\n heading2: t(heading),\n /**\n A level 3 [heading](#highlight.tags.heading).\n */\n heading3: t(heading),\n /**\n A level 4 [heading](#highlight.tags.heading).\n */\n heading4: t(heading),\n /**\n A level 5 [heading](#highlight.tags.heading).\n */\n heading5: t(heading),\n /**\n A level 6 [heading](#highlight.tags.heading).\n */\n heading6: t(heading),\n /**\n A prose [content](#highlight.tags.content) separator (such as a horizontal rule).\n */\n contentSeparator: t(content),\n /**\n [Content](#highlight.tags.content) that represents a list.\n */\n list: t(content),\n /**\n [Content](#highlight.tags.content) that represents a quote.\n */\n quote: t(content),\n /**\n [Content](#highlight.tags.content) that is emphasized.\n */\n emphasis: t(content),\n /**\n [Content](#highlight.tags.content) that is styled strong.\n */\n strong: t(content),\n /**\n [Content](#highlight.tags.content) that is part of a link.\n */\n link: t(content),\n /**\n [Content](#highlight.tags.content) that is styled as code or\n monospace.\n */\n monospace: t(content),\n /**\n [Content](#highlight.tags.content) that has a strike-through\n style.\n */\n strikethrough: t(content),\n /**\n Inserted text in a change-tracking format.\n */\n inserted: t(),\n /**\n Deleted text.\n */\n deleted: t(),\n /**\n Changed text.\n */\n changed: t(),\n /**\n An invalid or unsyntactic element.\n */\n invalid: t(),\n /**\n Metadata or meta-instruction.\n */\n meta,\n /**\n [Metadata](#highlight.tags.meta) that applies to the entire\n document.\n */\n documentMeta: t(meta),\n /**\n [Metadata](#highlight.tags.meta) that annotates or adds\n attributes to a given syntactic element.\n */\n annotation: t(meta),\n /**\n Processing instruction or preprocessor directive. Subtag of\n [meta](#highlight.tags.meta).\n */\n processingInstruction: t(meta),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates that a\n given element is being defined. Expected to be used with the\n various [name](#highlight.tags.name) tags.\n */\n definition: Tag.defineModifier(\"definition\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates that\n something is constant. Mostly expected to be used with\n [variable names](#highlight.tags.variableName).\n */\n constant: Tag.defineModifier(\"constant\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) used to indicate that\n a [variable](#highlight.tags.variableName) or [property\n name](#highlight.tags.propertyName) is being called or defined\n as a function.\n */\n function: Tag.defineModifier(\"function\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that can be applied to\n [names](#highlight.tags.name) to indicate that they belong to\n the language's standard environment.\n */\n standard: Tag.defineModifier(\"standard\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates a given\n [names](#highlight.tags.name) is local to some scope.\n */\n local: Tag.defineModifier(\"local\"),\n /**\n A generic variant [modifier](#highlight.Tag^defineModifier) that\n can be used to tag language-specific alternative variants of\n some common tag. It is recommended for themes to define special\n forms of at least the [string](#highlight.tags.string) and\n [variable name](#highlight.tags.variableName) tags, since those\n come up a lot.\n */\n special: Tag.defineModifier(\"special\")\n};\nfor (let name in tags) {\n let val = tags[name];\n if (val instanceof Tag)\n val.name = name;\n}\n/**\nThis is a highlighter that adds stable, predictable classes to\ntokens, for styling with external CSS.\n\nThe following tags are mapped to their name prefixed with `\"tok-\"`\n(for example `\"tok-comment\"`):\n\n* [`link`](#highlight.tags.link)\n* [`heading`](#highlight.tags.heading)\n* [`emphasis`](#highlight.tags.emphasis)\n* [`strong`](#highlight.tags.strong)\n* [`keyword`](#highlight.tags.keyword)\n* [`atom`](#highlight.tags.atom)\n* [`bool`](#highlight.tags.bool)\n* [`url`](#highlight.tags.url)\n* [`labelName`](#highlight.tags.labelName)\n* [`inserted`](#highlight.tags.inserted)\n* [`deleted`](#highlight.tags.deleted)\n* [`literal`](#highlight.tags.literal)\n* [`string`](#highlight.tags.string)\n* [`number`](#highlight.tags.number)\n* [`variableName`](#highlight.tags.variableName)\n* [`typeName`](#highlight.tags.typeName)\n* [`namespace`](#highlight.tags.namespace)\n* [`className`](#highlight.tags.className)\n* [`macroName`](#highlight.tags.macroName)\n* [`propertyName`](#highlight.tags.propertyName)\n* [`operator`](#highlight.tags.operator)\n* [`comment`](#highlight.tags.comment)\n* [`meta`](#highlight.tags.meta)\n* [`punctuation`](#highlight.tags.punctuation)\n* [`invalid`](#highlight.tags.invalid)\n\nIn addition, these mappings are provided:\n\n* [`regexp`](#highlight.tags.regexp),\n [`escape`](#highlight.tags.escape), and\n [`special`](#highlight.tags.special)[`(string)`](#highlight.tags.string)\n are mapped to `\"tok-string2\"`\n* [`special`](#highlight.tags.special)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName2\"`\n* [`local`](#highlight.tags.local)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName tok-local\"`\n* [`definition`](#highlight.tags.definition)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName tok-definition\"`\n* [`definition`](#highlight.tags.definition)[`(propertyName)`](#highlight.tags.propertyName)\n to `\"tok-propertyName tok-definition\"`\n*/\nconst classHighlighter = tagHighlighter([\n { tag: tags.link, class: \"tok-link\" },\n { tag: tags.heading, class: \"tok-heading\" },\n { tag: tags.emphasis, class: \"tok-emphasis\" },\n { tag: tags.strong, class: \"tok-strong\" },\n { tag: tags.keyword, class: \"tok-keyword\" },\n { tag: tags.atom, class: \"tok-atom\" },\n { tag: tags.bool, class: \"tok-bool\" },\n { tag: tags.url, class: \"tok-url\" },\n { tag: tags.labelName, class: \"tok-labelName\" },\n { tag: tags.inserted, class: \"tok-inserted\" },\n { tag: tags.deleted, class: \"tok-deleted\" },\n { tag: tags.literal, class: \"tok-literal\" },\n { tag: tags.string, class: \"tok-string\" },\n { tag: tags.number, class: \"tok-number\" },\n { tag: [tags.regexp, tags.escape, tags.special(tags.string)], class: \"tok-string2\" },\n { tag: tags.variableName, class: \"tok-variableName\" },\n { tag: tags.local(tags.variableName), class: \"tok-variableName tok-local\" },\n { tag: tags.definition(tags.variableName), class: \"tok-variableName tok-definition\" },\n { tag: tags.special(tags.variableName), class: \"tok-variableName2\" },\n { tag: tags.definition(tags.propertyName), class: \"tok-propertyName tok-definition\" },\n { tag: tags.typeName, class: \"tok-typeName\" },\n { tag: tags.namespace, class: \"tok-namespace\" },\n { tag: tags.className, class: \"tok-className\" },\n { tag: tags.macroName, class: \"tok-macroName\" },\n { tag: tags.propertyName, class: \"tok-propertyName\" },\n { tag: tags.operator, class: \"tok-operator\" },\n { tag: tags.comment, class: \"tok-comment\" },\n { tag: tags.meta, class: \"tok-meta\" },\n { tag: tags.invalid, class: \"tok-invalid\" },\n { tag: tags.punctuation, class: \"tok-punctuation\" }\n]);\n\nexport { Tag, classHighlighter, getStyleTags, highlightCode, highlightTree, styleTags, tagHighlighter, tags };\n","import {HighlightStyle, syntaxHighlighting} from \"@codemirror/language\"\nimport {tags as t} from \"@lezer/highlight\"\nimport {EditorView} from \"@codemirror/view\"\n\nexport const ui = {\n\t\"&\": {\n\t\tcolor: \"var(--text-editor-line)\",\n\t\tbackgroundColor: \"var(--text-editor-fill)\",\n\t\tfontFamily: \"var(--text-editor-family-code)\",\n\t\tfontSize: \"var(--text-editor-font-size)\",\n\t\theight: \"100%\",\n\t},\n\t\".cm-content\": {\n\t\tcaretColor: \"var(--text-editor-cursor-fill)\",\n\t\tfontFamily: \"var(--editor-family-code)\",\n\t},\n\t\".cm-cursor, .cm-dropCursor\": {\n\t\tborderLeft: \"1px solid var(--text-editor-cursor-fill)\",\n\t},\n\t\".cm-selectionBackground, .cm-content ::selection\": {\n\t\tbackgroundColor: \"var(--text-editor-selection-fill)\",\n\t\tcolor: \"var(--text-editor-selection-line)\",\n\t},\n\t\".cm-activeLine\": {\n\t\tbackgroundColor: \"var(--text-editor-active-line-fill)\",\n\t\tcolor: \"var(--text-editor-active-line-line)\",\n\t},\n\t\".cm-activeLineGutter\": {\n\t\tbackgroundColor: \"var(--text-editor-active-line-fill--gutter)\",\n\t\tcolor: \"var(--text-editor-active-line-line--gutter)\",\n\t},\n\t\".cm-gutters\": {\n\t\tuserSelect: \"none\",\n\t\tbackground: \"var(--text-editor-gutter-fill)\",\n\t\tcolor: \"var(--text-editor-gutter-line)\",\n\t\tborder: \"var(--text-editor-gutter-border)\",\n\t\tfontSize: \"var(--text-editor-gutter-font-size)\",\n\t},\n\t\".cm-gutterElement\": {\n\t\tuserSelect: \"none\",\n\t\tbackground: \"var(--text-editor-gutter-fill--line-numbers)\",\n\t\tcolor: \"var(--text-editor-gutter-line--line-numbers)\",\n\t\tfontSize: \"var(--text-editor-gutter-font-size--line-numbers)\",\n\t\tdisplay: \"flex\",\n\t\tplaceItems: \"center\",\n\t\tplaceContent: \"center\",\n\t},\n\t\".cm-tooltip\": {\n\t\tbackgroundColor: \"var(--text-editor-tooltip-fill)\",\n\t\tcolor: \"var(--text-editor-tooltip-color)\",\n\t},\n\t\".cm-panel.cm-search\": {\n\t\tbackgroundColor: \"#e3f6ff\",\n\t},\n\t\".cm-scroller\": {\n\t\tfontFamily: \"var(--text-editor-family)\",\n\t\tlineHeight: \"var(--text-editor-line-height)\",\n\t},\n\t\".cm-highlightTab\": {},\n\t\".cm-highlightSpace\": {},\n}\n\nexport const syntax = [\n\t{\n\t\ttag: t.comment,\n\t\tcolor: \"var(--syntax-comment)\",\n\t\tfontStyle: \"var(--syntax-style-comment)\",\n\t\tbackgroundColor: \"var(--syntax-fill-comment)\",\n\t\tfontWeight: \"var(--syntax-weight-comment)\",\n\t},\n\t{\n\t\ttag: t.lineComment,\n\t\tcolor: \"var(--syntax-line-comment)\",\n\t\tfontStyle: \"var(--syntax-style-line-comment)\",\n\t\tbackgroundColor: \"var(--syntax-fill-line-comment)\",\n\t\tfontWeight: \"var(--syntax-weight-line-comment)\",\n\t},\n\t{\n\t\ttag: t.blockComment,\n\t\tcolor: \"var(--syntax-block-comment)\",\n\t\tfontStyle: \"var(--syntax-style-block-comment)\",\n\t\tbackgroundColor: \"var(--syntax-fill-block-comment)\",\n\t\tfontWeight: \"var(--syntax-weight-block-comment)\",\n\t},\n\t{\n\t\ttag: t.docComment,\n\t\tcolor: \"var(--syntax-doc-comment)\",\n\t\tfontStyle: \"var(--syntax-style-doc-comment)\",\n\t\tbackgroundColor: \"var(--syntax-fill-doc-comment)\",\n\t\tfontWeight: \"var(--syntax-weight-doc-comment)\",\n\t},\n\t{\n\t\ttag: t.meta,\n\t\tcolor: \"var(--syntax-meta)\",\n\t\tfontStyle: \"var(--syntax-style-meta)\",\n\t\tbackgroundColor: \"var(--syntax-fill-meta)\",\n\t\tfontWeight: \"var(--syntax-weight-meta)\",\n\t},\n\t{\n\t\ttag: t.invalid,\n\t\tcolor: \"var(--syntax-invalid)\",\n\t\tfontStyle: \"var(--syntax-style-invalid)\",\n\t\tbackgroundColor: \"var(--syntax-fill-invalid)\",\n\t\tfontWeight: \"var(--syntax-weight-invalid)\",\n\t},\n\t{\n\t\ttag: t.operator,\n\t\tcolor: \"var(--syntax-operator)\",\n\t\tfontStyle: \"var(--syntax-style-operator)\",\n\t\tbackgroundColor: \"var(--syntax-fill-operator)\",\n\t\tfontWeight: \"var(--syntax-weight-operator)\",\n\t},\n\t{\n\t\ttag: t.punctuation,\n\t\tcolor: \"var(--syntax-punctuation)\",\n\t\tfontStyle: \"var(--syntax-style-punctuation)\",\n\t\tbackgroundColor: \"var(--syntax-fill-punctuation)\",\n\t\tfontWeight: \"var(--syntax-weight-punctuation)\",\n\t},\n\t{\n\t\ttag: t.bool,\n\t\tcolor: \"var(--syntax-bool)\",\n\t\tfontStyle: \"var(--syntax-style-bool)\",\n\t\tbackgroundColor: \"var(--syntax-fill-bool)\",\n\t\tfontWeight: \"var(--syntax-weight-bool)\",\n\t},\n\t{\n\t\ttag: t.atom,\n\t\tcolor: \"var(--syntax-atom)\",\n\t\tfontStyle: \"var(--syntax-style-atom)\",\n\t\tbackgroundColor: \"var(--syntax-fill-atom)\",\n\t\tfontWeight: \"var(--syntax-weight-atom)\",\n\t},\n\t{\n\t\ttag: t.special(t.variableName),\n\t\tcolor: \"var(--syntax-special--variable-name)\",\n\t\tfontStyle: \"var(--syntax-style-special--variable-name)\",\n\t\tbackgroundColor: \"var(--syntax-fill-special--variable-name)\",\n\t\tfontWeight: \"var(--syntax-weight-special--variable-name)\",\n\t},\n\t{\n\t\ttag: t.keyword,\n\t\tcolor: \"var(--syntax-keyword)\",\n\t\tfontStyle: \"var(--syntax-style-keyword)\",\n\t\tbackgroundColor: \"var(--syntax-fill-keyword)\",\n\t\tfontWeight: \"var(--syntax-weight-keyword)\",\n\t},\n\t{\n\t\ttag: t.controlKeyword,\n\t\tcolor: \"var(--syntax-control-keyword)\",\n\t\tfontStyle: \"var(--syntax-style-control-keyword)\",\n\t\tbackgroundColor: \"var(--syntax-fill-control-keyword)\",\n\t\tfontWeight: \"var(--syntax-weight-control-keyword)\",\n\t},\n\t{\n\t\ttag: t.moduleKeyword,\n\t\tcolor: \"var(--syntax-module-keyword)\",\n\t\tfontStyle: \"var(--syntax-style-module-keyword)\",\n\t\tbackgroundColor: \"var(--syntax-fill-module-keyword)\",\n\t\tfontWeight: \"var(--syntax-weight-module-keyword)\",\n\t},\n\t{\n\t\ttag: t.typeName,\n\t\tcolor: \"var(--syntax-type-name)\",\n\t\tfontStyle: \"var(--syntax-style-type-name)\",\n\t\tbackgroundColor: \"var(--syntax-fill-type-name)\",\n\t\tfontWeight: \"var(--syntax-weight-type-name)\",\n\t},\n\t{\n\t\ttag: t.className,\n\t\tcolor: \"var(--syntax-class-name)\",\n\t\tfontStyle: \"var(--syntax-style-class-name)\",\n\t\tbackgroundColor: \"var(--syntax-fill-class-name)\",\n\t\tfontWeight: \"var(--syntax-weight-class-name)\",\n\t},\n\t{\n\t\ttag: t.typeOperator,\n\t\tcolor: \"var(--syntax-type-operator)\",\n\t\tfontStyle: \"var(--syntax-style-type-operator)\",\n\t\tbackgroundColor: \"var(--syntax-fill-type-operator)\",\n\t\tfontWeight: \"var(--syntax-weight-type-operator)\",\n\t},\n\t{\n\t\ttag: t.function(t.variableName),\n\t\tcolor: \"var(--syntax-function--variable-name)\",\n\t\tfontStyle: \"var(--syntax-style-function--variable-name)\",\n\t\tbackgroundColor: \"var(--syntax-fill-function--variableName)\",\n\t\tfontWeight: \"var(--syntax-weight-function--variableName)\",\n\t},\n\t{\n\t\ttag: t.function(t.propertyName),\n\t\tcolor: \"var(--syntax-function--property-name)\",\n\t\tfontStyle: \"var(--syntax-style-function--property-name)\",\n\t\tbackgroundColor: \"var(--syntax-fill-function--property-name)\",\n\t\tfontWeight: \"var(--syntax-weight-function--property-name)\",\n\t},\n\t{\n\t\ttag: t.variableName,\n\t\tcolor: \"var(--syntax-variable-name)\",\n\t\tfontStyle: \"var(--syntax-style-variable-name)\",\n\t\tbackgroundColor: \"var(--syntax-fill-variable-name)\",\n\t\tfontWeight: \"var(--syntax-weight-variable-name)\",\n\t},\n\t{\n\t\ttag: t.definition(t.variableName),\n\t\tcolor: \"var(--syntax-definition--variable-name)\",\n\t\tfontStyle: \"var(--syntax-style-definition--variable-name)\",\n\t\tbackgroundColor: \"var(--syntax-fill-definition--variable-name)\",\n\t\tfontWeight: \"var(--syntax-weight-definition--variable-name)\",\n\t},\n\t{\n\t\ttag: t.string,\n\t\tcolor: \"var(--syntax-string)\",\n\t\tbackgroundColor: \"var(--syntax-fill-string)\",\n\t\tfontStyle: \"var(--syntax-style-string)\",\n\t\tfontWeight: \"var(--syntax-weight-string)\",\n\t},\n\t{\n\t\ttag: t.number,\n\t\tcolor: \"var(--syntax-number)\",\n\t\tbackgroundColor: \"var(--syntax-fill-number)\",\n\t\tfontStyle: \"var(--syntax-style-number)\",\n\t\tfontWeight: \"var(--syntax-weight-number)\",\n\t},\n\t{\n\t\ttag: t.integer,\n\t\tcolor: \"var(--syntax-integer)\",\n\t\tbackgroundColor: \"var(--syntax-fill-integer)\",\n\t\tfontStyle: \"var(--syntax-style-integer)\",\n\t\tfontWeight: \"var(--syntax-weight-integer)\",\n\t},\n\t{\n\t\ttag: t.float,\n\t\tcolor: \"var(--syntax-float)\",\n\t\tbackgroundColor: \"var(--syntax-fill-float)\",\n\t\tfontStyle: \"var(--syntax-style-float)\",\n\t\tfontWeight: \"var(--syntax-weight-float)\",\n\t},\n\t{\n\t\ttag: t.escape,\n\t\tcolor: \"var(--syntax-escape)\",\n\t\tfontStyle: \"var(--syntax-style-escape)\",\n\t\tbackgroundColor: \"var(--syntax-fill-escape)\",\n\t\tfontWeight: \"var(--syntax-weight-escape)\",\n\t},\n\t{\n\t\ttag: t.regexp,\n\t\tcolor: \"var(--syntax-regexp)\",\n\t\tfontStyle: \"var(--syntax-style-regexp)\",\n\t\tbackgroundColor: \"var(--syntax-fill-regexp)\",\n\t\tfontWeight: \"var(--syntax-weight-regexp)\",\n\t},\n\t{\n\t\ttag: t.special(t.string),\n\t\tcolor: \"var(--syntax-special--string)\",\n\t\tfontStyle: \"var(--syntax-style-special--string)\",\n\t\tbackgroundColor: \"var(--syntax-fill-special--string)\",\n\t\tfontWeight: \"var(--syntax-weight-special--string)\",\n\t},\n\t{\n\t\ttag: t.tagName,\n\t\tcolor: \"var(--syntax-tag-name)\",\n\t\tfontStyle: \"var(--syntax-style-tag-name)\",\n\t\tbackgroundColor: \"var(--syntax-fill-tag-name)\",\n\t\tfontWeight: \"var(--syntax-weight-tag-name)\",\n\t},\n\t{\n\t\ttag: t.angleBracket,\n\t\tcolor: \"var(--syntax-angle-bracket)\",\n\t\tfontStyle: \"var(--syntax-style-angle-bracket)\",\n\t\tbackgroundColor: \"var(--syntax-fill-angle-bracket)\",\n\t\tfontWeight: \"var(--syntax-weight-angle-bracket)\",\n\t},\n\t{\n\t\ttag: t.attributeName,\n\t\tcolor: \"var(--syntax-attribute-name)\",\n\t\tbackgroundColor: \"var(--syntax-fill-attribute-name)\",\n\t\tfontWeight: \"var(--syntax-weight-attribute-name)\",\n\t\tfontStyle: \"var(--syntax-style-attribute-name)\",\n\t},\n\t{\n\t\ttag: t.namespace,\n\t\tcolor: \"var(--syntax-namespace)\",\n\t\tfontStyle: \"var(--syntax-style-namespace)\",\n\t\tbackgroundColor: \"var(--syntax-fill-namespace)\",\n\t\tfontWeight: \"var(--syntax-weight-namespace)\",\n\t},\n\t{\n\t\ttag: t.strong,\n\t\tcolor: \"var(--syntax-strong)\",\n\t\tbackgroundColor: \"var(--syntax-fill-strong)\",\n\t\tfontStyle: \"var(--syntax-style-strong)\",\n\t\tfontWeight: \"var(--syntax-weight-strong)\",\n\t},\n\t{\n\t\ttag: t.emphasis,\n\t\tcolor: \"var(--syntax-emphasis)\",\n\t\tbackgroundColor: \"var(--syntax-fill-emphasis)\",\n\t\tfontWeight: \"var(--syntax-weight-emphasis)\",\n\t\tfontStyle: \"var(--syntax-style-emphasis)\",\n\t},\n\t{\n\t\ttag: t.heading,\n\t\tcolor: \"var(--syntax-heading)\",\n\t\tbackgroundColor: \"var(--syntax-fill-heading)\",\n\t\tfontStyle: \"var(--syntax-style-heading)\",\n\t\tfontWeight: \"var(--syntax-weight-heading)\",\n\t},\n\t{\n\t\ttag: t.link,\n\t\tcolor: \"var(--syntax-link)\",\n\t\tbackgroundColor: \"var(--syntax-fill-link)\",\n\t\tfontStyle: \"var(--syntax-style-link)\",\n\t\tfontWeight: \"var(--syntax-weight-link)\",\n\t\ttextDecoration: \"underline\",\n\t},\n\t{\n\t\ttag: t.quote,\n\t\tcolor: \"var(--syntax-quote)\",\n\t\tbackgroundColor: \"var(--syntax-fill-quote)\",\n\t\tfontStyle: \"var(--syntax-style-quote)\",\n\t\tfontWeight: \"var(--syntax-weight-quote)\",\n\t},\n\t{\n\t\ttag: t.list,\n\t\tcolor: \"var(--syntax-list)\",\n\t\tbackgroundColor: \"var(--syntax-fill-list)\",\n\t\tfontStyle: \"var(--syntax-style-list)\",\n\t\tfontWeight: \"var(--syntax-weight-list)\",\n\t},\n\t{\n\t\ttag: t.inserted,\n\t\tcolor: \"var(--syntax-inserted)\",\n\t\tbackgroundColor: \"var(--syntax-fill-inserted)\",\n\t\tfontStyle: \"var(--syntax-style-inserted)\",\n\t\tfontWeight: \"var(--syntax-weight-inserted)\",\n\t},\n\t{\n\t\ttag: t.deleted,\n\t\tcolor: \"var(--syntax-deleted)\",\n\t\tbackgroundColor: \"var(--syntax-fill-deleted)\",\n\t\tfontStyle: \"var(--syntax-style-deleted)\",\n\t\tfontWeight: \"var(--syntax-weight-deleted)\",\n\t},\n\t{\n\t\ttag: t.changed,\n\t\tcolor: \"var(--syntax-changed)\",\n\t\tbackgroundColor: \"var(--syntax-fill-changed)\",\n\t\tfontStyle: \"var(--syntax-style-changed)\",\n\t\tfontWeight: \"var(--syntax-weight-changed)\",\n\t},\n\t{\n\t\ttag: t.contentSeparator,\n\t\tcolor: \"var(--syntax-content-separator)\",\n\t\tbackgroundColor: \"var(--syntax-fill-content-separator)\",\n\t\tfontStyle: \"var(--syntax-style-content-separator)\",\n\t\tfontWeight: \"var(--syntax-weight-content-separator)\",\n\t},\n]\n\nexport default [\n\tEditorView.theme(ui, {\n\t\tget dark() {\n\t\t\treturn false\n\t\t},\n\t}),\n\tsyntaxHighlighting(HighlightStyle.define(syntax)),\n]\n","import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */ && this.setLookAhead(this.pos);\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, mustSink = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!mustSink || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && (this.buffer[index - 4] != 0 /* Term.Err */ || this.buffer[index - 1] < 0)) {\n let mustMove = false;\n for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n if (this.buffer[scan - 1] >= 0) {\n mustMove = true;\n break;\n }\n }\n if (mustMove)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n this.pos = end;\n let skipped = parser.stateFlag(nextState, 1 /* StateFlag.Skipped */);\n // Skipped or zero-length non-tree tokens don't move reducePos\n if (!skipped && (end > start || type <= parser.maxNode))\n this.reducePos = end;\n this.pushState(nextState, skipped ? start : Math.min(start, this.reducePos));\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead <= this.lookAhead)\n return false;\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n return true;\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n /**\n Accept a token ending at a specific given position.\n */\n acceptTokenTo(token, endPos) {\n this.token.value = token;\n this.token.end = endPos;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */) {\n newStacks.sort((a, b) => b.score - a.score);\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; j < 10 /* Rec.ForceReduceLimit */ && force.forceReduce(); j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < force.score) {\n finished = force;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n","import { ContextTracker, ExternalTokenizer, LRParser, LocalTokenGroup } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst noSemi = 316,\n noSemiType = 317,\n incdec = 1,\n incdecPrefix = 2,\n questionDot = 3,\n JSXStartTag = 4,\n insertSemi = 318,\n spaces = 320,\n newline = 321,\n LineComment = 5,\n BlockComment = 6,\n Dialect_jsx = 0;\n\n/* Hand-written tokenizers for JavaScript tokens that can't be\n expressed by lezer's built-in tokenizer. */\n\nconst space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200,\n 8201, 8202, 8232, 8233, 8239, 8287, 12288];\n\nconst braceR = 125, semicolon = 59, slash = 47, star = 42, plus = 43, minus = 45, lt = 60, comma = 44,\n question = 63, dot = 46, bracketL = 91;\n\nconst trackNewline = new ContextTracker({\n start: false,\n shift(context, term) {\n return term == LineComment || term == BlockComment || term == spaces ? context : term == newline\n },\n strict: false\n});\n\nconst insertSemicolon = new ExternalTokenizer((input, stack) => {\n let {next} = input;\n if (next == braceR || next == -1 || stack.context)\n input.acceptToken(insertSemi);\n}, {contextual: true, fallback: true});\n\nconst noSemicolon = new ExternalTokenizer((input, stack) => {\n let {next} = input, after;\n if (space.indexOf(next) > -1) return\n if (next == slash && ((after = input.peek(1)) == slash || after == star)) return\n if (next != braceR && next != semicolon && next != -1 && !stack.context)\n input.acceptToken(noSemi);\n}, {contextual: true});\n\nconst noSemicolonType = new ExternalTokenizer((input, stack) => {\n if (input.next == bracketL && !stack.context) input.acceptToken(noSemiType);\n}, {contextual: true});\n\nconst operatorToken = new ExternalTokenizer((input, stack) => {\n let {next} = input;\n if (next == plus || next == minus) {\n input.advance();\n if (next == input.next) {\n input.advance();\n let mayPostfix = !stack.context && stack.canShift(incdec);\n input.acceptToken(mayPostfix ? incdec : incdecPrefix);\n }\n } else if (next == question && input.peek(1) == dot) {\n input.advance(); input.advance();\n if (input.next < 48 || input.next > 57) // No digit after\n input.acceptToken(questionDot);\n }\n}, {contextual: true});\n\nfunction identifierChar(ch, start) {\n return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch == 95 || ch >= 192 ||\n !start && ch >= 48 && ch <= 57\n}\n\nconst jsx = new ExternalTokenizer((input, stack) => {\n if (input.next != lt || !stack.dialectEnabled(Dialect_jsx)) return\n input.advance();\n if (input.next == slash) return\n // Scan for an identifier followed by a comma or 'extends', don't\n // treat this as a start tag if present.\n let back = 0;\n while (space.indexOf(input.next) > -1) { input.advance(); back++; }\n if (identifierChar(input.next, true)) {\n input.advance();\n back++;\n while (identifierChar(input.next, false)) { input.advance(); back++; }\n while (space.indexOf(input.next) > -1) { input.advance(); back++; }\n if (input.next == comma) return\n for (let i = 0;; i++) {\n if (i == 7) {\n if (!identifierChar(input.next, true)) return\n break\n }\n if (input.next != \"extends\".charCodeAt(i)) break\n input.advance();\n back++;\n }\n }\n input.acceptToken(JSXStartTag, -back);\n});\n\nconst jsHighlight = styleTags({\n \"get set async static\": tags.modifier,\n \"for while do if else switch try catch finally return throw break continue default case defer\": tags.controlKeyword,\n \"in of await yield void typeof delete instanceof as satisfies\": tags.operatorKeyword,\n \"let var const using function class extends\": tags.definitionKeyword,\n \"import export from\": tags.moduleKeyword,\n \"with debugger new\": tags.keyword,\n TemplateString: tags.special(tags.string),\n super: tags.atom,\n BooleanLiteral: tags.bool,\n this: tags.self,\n null: tags.null,\n Star: tags.modifier,\n VariableName: tags.variableName,\n \"CallExpression/VariableName TaggedTemplateExpression/VariableName\": tags.function(tags.variableName),\n VariableDefinition: tags.definition(tags.variableName),\n Label: tags.labelName,\n PropertyName: tags.propertyName,\n PrivatePropertyName: tags.special(tags.propertyName),\n \"CallExpression/MemberExpression/PropertyName\": tags.function(tags.propertyName),\n \"FunctionDeclaration/VariableDefinition\": tags.function(tags.definition(tags.variableName)),\n \"ClassDeclaration/VariableDefinition\": tags.definition(tags.className),\n \"NewExpression/VariableName\": tags.className,\n PropertyDefinition: tags.definition(tags.propertyName),\n PrivatePropertyDefinition: tags.definition(tags.special(tags.propertyName)),\n UpdateOp: tags.updateOperator,\n \"LineComment Hashbang\": tags.lineComment,\n BlockComment: tags.blockComment,\n Number: tags.number,\n String: tags.string,\n Escape: tags.escape,\n ArithOp: tags.arithmeticOperator,\n LogicOp: tags.logicOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n RegExp: tags.regexp,\n Equals: tags.definitionOperator,\n Arrow: tags.function(tags.punctuation),\n \": Spread\": tags.punctuation,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \"InterpolationStart InterpolationEnd\": tags.special(tags.brace),\n \".\": tags.derefOperator,\n \", ;\": tags.separator,\n \"@\": tags.meta,\n\n TypeName: tags.typeName,\n TypeDefinition: tags.definition(tags.typeName),\n \"type enum interface implements namespace module declare\": tags.definitionKeyword,\n \"abstract global Privacy readonly override\": tags.modifier,\n \"is keyof unique infer asserts\": tags.operatorKeyword,\n\n JSXAttributeValue: tags.attributeValue,\n JSXText: tags.content,\n \"JSXStartTag JSXStartCloseTag JSXSelfCloseEndTag JSXEndTag\": tags.angleBracket,\n \"JSXIdentifier JSXNameSpacedName\": tags.tagName,\n \"JSXAttribute/JSXIdentifier JSXAttribute/JSXNameSpacedName\": tags.attributeName,\n \"JSXBuiltin/JSXIdentifier\": tags.standard(tags.tagName)\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,export:20, as:25, from:33, default:36, async:41, function:42, in:52, out:55, const:56, extends:60, this:64, true:72, false:72, null:84, void:88, typeof:92, super:108, new:142, delete:154, yield:163, await:167, class:172, public:235, private:235, protected:235, readonly:237, instanceof:256, satisfies:259, import:292, keyof:349, unique:353, infer:359, asserts:395, is:397, abstract:417, implements:419, type:421, let:424, var:426, using:429, interface:435, enum:439, namespace:445, module:447, declare:451, global:455, defer:471, for:476, of:485, while:488, with:492, do:496, if:500, else:502, switch:506, case:512, try:518, catch:522, finally:526, return:530, throw:534, break:538, continue:542, debugger:546};\nconst spec_word = {__proto__:null,async:129, get:131, set:133, declare:195, public:197, private:197, protected:197, static:199, abstract:201, override:203, readonly:209, accessor:211, new:401};\nconst spec_LessThan = {__proto__:null,\"<\":193};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$F|Q%TQlOOO%[QlOOO'_QpOOP(lO`OOO*zQ!0MxO'#CiO+RO#tO'#CjO+aO&jO'#CjO+oO#@ItO'#DaO.QQlO'#DgO.bQlO'#DrO%[QlO'#DzO0fQlO'#ESOOQ!0Lf'#E['#E[O1PQ`O'#EXOOQO'#Ep'#EpOOQO'#Il'#IlO1XQ`O'#GsO1dQ`O'#EoO1iQ`O'#EoO3hQ!0MxO'#JrO6[Q!0MxO'#JsO6uQ`O'#F]O6zQ,UO'#FtOOQ!0Lf'#Ff'#FfO7VO7dO'#FfO9XQMhO'#F|O9`Q`O'#F{OOQ!0Lf'#Js'#JsOOQ!0Lb'#Jr'#JrO9eQ`O'#GwOOQ['#K_'#K_O9pQ`O'#IYO9uQ!0LrO'#IZOOQ['#J`'#J`OOQ['#I_'#I_Q`QlOOQ`QlOOO9}Q!L^O'#DvO:UQlO'#EOO:]QlO'#EQO9kQ`O'#GsO:dQMhO'#CoO:rQ`O'#EnO:}Q`O'#EyO;hQMhO'#FeO;xQ`O'#GsOOQO'#K`'#K`O;}Q`O'#K`O<]Q`O'#G{O<]Q`O'#G|O<]Q`O'#HOO9kQ`O'#HRO=SQ`O'#HUO>kQ`O'#CeO>{Q`O'#HcO?TQ`O'#HiO?TQ`O'#HkO`QlO'#HmO?TQ`O'#HoO?TQ`O'#HrO?YQ`O'#HxO?_Q!0LsO'#IOO%[QlO'#IQO?jQ!0LsO'#ISO?uQ!0LsO'#IUO9uQ!0LrO'#IWO@QQ!0MxO'#CiOASQpO'#DlQOQ`OOO%[QlO'#EQOAjQ`O'#ETO:dQMhO'#EnOAuQ`O'#EnOBQQ!bO'#FeOOQ['#Cg'#CgOOQ!0Lb'#Dq'#DqOOQ!0Lb'#Jv'#JvO%[QlO'#JvOOQO'#Jy'#JyOOQO'#Ih'#IhOCQQpO'#EgOOQ!0Lb'#Ef'#EfOOQ!0Lb'#J}'#J}OC|Q!0MSO'#EgODWQpO'#EWOOQO'#Jx'#JxODlQpO'#JyOEyQpO'#EWODWQpO'#EgPFWO&2DjO'#CbPOOO)CD})CD}OOOO'#I`'#I`OFcO#tO,59UOOQ!0Lh,59U,59UOOOO'#Ia'#IaOFqO&jO,59UOGPQ!L^O'#DcOOOO'#Ic'#IcOGWO#@ItO,59{OOQ!0Lf,59{,59{OGfQlO'#IdOGyQ`O'#JtOIxQ!fO'#JtO+}QlO'#JtOJPQ`O,5:ROJgQ`O'#EpOJtQ`O'#KTOKPQ`O'#KSOKPQ`O'#KSOKXQ`O,5;^OK^Q`O'#KROOQ!0Ln,5:^,5:^OKeQlO,5:^OMcQ!0MxO,5:fONSQ`O,5:nONmQ!0LrO'#KQONtQ`O'#KPO9eQ`O'#KPO! YQ`O'#KPO! bQ`O,5;]O! gQ`O'#KPO!#lQ!fO'#JsOOQ!0Lh'#Ci'#CiO%[QlO'#ESO!$[Q!fO,5:sOOQS'#Jz'#JzOOQO-E<j-E<jO9kQ`O,5=_O!$rQ`O,5=_O!$wQlO,5;ZO!&zQMhO'#EkO!(eQ`O,5;ZO!(jQlO'#DyO!(tQpO,5;dO!(|QpO,5;dO%[QlO,5;dOOQ['#FT'#FTOOQ['#FV'#FVO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eO%[QlO,5;eOOQ['#FZ'#FZO!)[QlO,5;tOOQ!0Lf,5;y,5;yOOQ!0Lf,5;z,5;zOOQ!0Lf,5;|,5;|O%[QlO'#IpO!+_Q!0LrO,5<iO%[QlO,5;eO!&zQMhO,5;eO!+|QMhO,5;eO!-nQMhO'#E^O%[QlO,5;wOOQ!0Lf,5;{,5;{O!-uQ,UO'#FjO!.rQ,UO'#KXO!.^Q,UO'#KXO!.yQ,UO'#KXOOQO'#KX'#KXO!/_Q,UO,5<SOOOW,5<`,5<`O!/pQlO'#FvOOOW'#Io'#IoO7VO7dO,5<QO!/wQ,UO'#FxOOQ!0Lf,5<Q,5<QO!0hQ$IUO'#CyOOQ!0Lh'#C}'#C}O!0{O#@ItO'#DRO!1iQMjO,5<eO!1pQ`O,5<hO!3YQ(CWO'#GXO!3jQ`O'#GYO!3oQ`O'#GYO!5_Q(CWO'#G^O!6dQpO'#GbOOQO'#Gn'#GnO!,TQMhO'#GmOOQO'#Gp'#GpO!,TQMhO'#GoO!7VQ$IUO'#JlOOQ!0Lh'#Jl'#JlO!7aQ`O'#JkO!7oQ`O'#JjO!7wQ`O'#CuOOQ!0Lh'#C{'#C{O!8YQ`O'#C}OOQ!0Lh'#DV'#DVOOQ!0Lh'#DX'#DXO!8_Q`O,5<eO1SQ`O'#DZO!,TQMhO'#GPO!,TQMhO'#GRO!8gQ`O'#GTO!8lQ`O'#GUO!3oQ`O'#G[O!,TQMhO'#GaO<]Q`O'#JkO!8qQ`O'#EqO!9`Q`O,5<gOOQ!0Lb'#Cr'#CrO!9hQ`O'#ErO!:bQpO'#EsOOQ!0Lb'#KR'#KRO!:iQ!0LrO'#KaO9uQ!0LrO,5=cO`QlO,5>tOOQ['#Jh'#JhOOQ[,5>u,5>uOOQ[-E<]-E<]O!<hQ!0MxO,5:bO!:]QpO,5:`O!?RQ!0MxO,5:jO%[QlO,5:jO!AiQ!0MxO,5:lOOQO,5@z,5@zO!BYQMhO,5=_O!BhQ!0LrO'#JiO9`Q`O'#JiO!ByQ!0LrO,59ZO!CUQpO,59ZO!C^QMhO,59ZO:dQMhO,59ZO!CiQ`O,5;ZO!CqQ`O'#HbO!DVQ`O'#KdO%[QlO,5;}O!:]QpO,5<PO!D_Q`O,5=zO!DdQ`O,5=zO!DiQ`O,5=zO!DwQ`O,5=zO9uQ!0LrO,5=zO<]Q`O,5=jOOQO'#Cy'#CyO!EOQpO,5=gO!EWQMhO,5=hO!EcQ`O,5=jO!EhQ!bO,5=mO!EpQ`O'#K`O?YQ`O'#HWO9kQ`O'#HYO!EuQ`O'#HYO:dQMhO'#H[O!EzQ`O'#H[OOQ[,5=p,5=pO!FPQ`O'#H]O!FbQ`O'#CoO!FgQ`O,59PO!FqQ`O,59PO!HvQlO,59POOQ[,59P,59PO!IWQ!0LrO,59PO%[QlO,59PO!KcQlO'#HeOOQ['#Hf'#HfOOQ['#Hg'#HgO`QlO,5=}O!KyQ`O,5=}O`QlO,5>TO`QlO,5>VO!LOQ`O,5>XO`QlO,5>ZO!LTQ`O,5>^O!LYQlO,5>dOOQ[,5>j,5>jO%[QlO,5>jO9uQ!0LrO,5>lOOQ[,5>n,5>nO#!dQ`O,5>nOOQ[,5>p,5>pO#!dQ`O,5>pOOQ[,5>r,5>rO##QQpO'#D_O%[QlO'#JvO##sQpO'#JvO##}QpO'#DmO#$`QpO'#DmO#&qQlO'#DmO#&xQ`O'#JuO#'QQ`O,5:WO#'VQ`O'#EtO#'eQ`O'#KUO#'mQ`O,5;_O#'rQpO'#DmO#(PQpO'#EVOOQ!0Lf,5:o,5:oO%[QlO,5:oO#(WQ`O,5:oO?YQ`O,5;YO!CUQpO,5;YO!C^QMhO,5;YO:dQMhO,5;YO#(`Q`O,5@bO#(eQ07dO,5:sOOQO-E<f-E<fO#)kQ!0MSO,5;RODWQpO,5:rO#)uQpO,5:rODWQpO,5;RO!ByQ!0LrO,5:rOOQ!0Lb'#Ej'#EjOOQO,5;R,5;RO%[QlO,5;RO#*SQ!0LrO,5;RO#*_Q!0LrO,5;RO!CUQpO,5:rOOQO,5;X,5;XO#*mQ!0LrO,5;RPOOO'#I^'#I^P#+RO&2DjO,58|POOO,58|,58|OOOO-E<^-E<^OOQ!0Lh1G.p1G.pOOOO-E<_-E<_OOOO,59},59}O#+^Q!bO,59}OOOO-E<a-E<aOOQ!0Lf1G/g1G/gO#+cQ!fO,5?OO+}QlO,5?OOOQO,5?U,5?UO#+mQlO'#IdOOQO-E<b-E<bO#+zQ`O,5@`O#,SQ!fO,5@`O#,ZQ`O,5@nOOQ!0Lf1G/m1G/mO%[QlO,5@oO#,cQ`O'#IjOOQO-E<h-E<hO#,ZQ`O,5@nOOQ!0Lb1G0x1G0xOOQ!0Ln1G/x1G/xOOQ!0Ln1G0Y1G0YO%[QlO,5@lO#,wQ!0LrO,5@lO#-YQ!0LrO,5@lO#-aQ`O,5@kO9eQ`O,5@kO#-iQ`O,5@kO#-wQ`O'#ImO#-aQ`O,5@kOOQ!0Lb1G0w1G0wO!(tQpO,5:uO!)PQpO,5:uOOQS,5:w,5:wO#.iQdO,5:wO#.qQMhO1G2yO9kQ`O1G2yOOQ!0Lf1G0u1G0uO#/PQ!0MxO1G0uO#0UQ!0MvO,5;VOOQ!0Lh'#GW'#GWO#0rQ!0MzO'#JlO!$wQlO1G0uO#2}Q!fO'#JwO%[QlO'#JwO#3XQ`O,5:eOOQ!0Lh'#D_'#D_OOQ!0Lf1G1O1G1OO%[QlO1G1OOOQ!0Lf1G1f1G1fO#3^Q`O1G1OO#5rQ!0MxO1G1PO#5yQ!0MxO1G1PO#8aQ!0MxO1G1PO#8hQ!0MxO1G1PO#;OQ!0MxO1G1PO#=fQ!0MxO1G1PO#=mQ!0MxO1G1PO#=tQ!0MxO1G1PO#@[Q!0MxO1G1PO#@cQ!0MxO1G1PO#BpQ?MtO'#CiO#DkQ?MtO1G1`O#DrQ?MtO'#JsO#EVQ!0MxO,5?[OOQ!0Lb-E<n-E<nO#GdQ!0MxO1G1PO#HaQ!0MzO1G1POOQ!0Lf1G1P1G1PO#IdQMjO'#J|O#InQ`O,5:xO#IsQ!0MxO1G1cO#JgQ,UO,5<WO#JoQ,UO,5<XO#JwQ,UO'#FoO#K`Q`O'#FnOOQO'#KY'#KYOOQO'#In'#InO#KeQ,UO1G1nOOQ!0Lf1G1n1G1nOOOW1G1y1G1yO#KvQ?MtO'#JrO#LQQ`O,5<bO!)[QlO,5<bOOOW-E<m-E<mOOQ!0Lf1G1l1G1lO#LVQpO'#KXOOQ!0Lf,5<d,5<dO#L_QpO,5<dO#LdQMhO'#DTOOOO'#Ib'#IbO#LkO#@ItO,59mOOQ!0Lh,59m,59mO%[QlO1G2PO!8lQ`O'#IrO#LvQ`O,5<zOOQ!0Lh,5<w,5<wO!,TQMhO'#IuO#MdQMjO,5=XO!,TQMhO'#IwO#NVQMjO,5=ZO!&zQMhO,5=]OOQO1G2S1G2SO#NaQ!dO'#CrO#NtQ(CWO'#ErO$ |QpO'#GbO$!dQ!dO,5<sO$!kQ`O'#K[O9eQ`O'#K[O$!yQ`O,5<uO$#aQ!dO'#C{O!,TQMhO,5<tO$#kQ`O'#GZO$$PQ`O,5<tO$$UQ!dO'#GWO$$cQ!dO'#K]O$$mQ`O'#K]O!&zQMhO'#K]O$$rQ`O,5<xO$$wQlO'#JvO$%RQpO'#GcO#$`QpO'#GcO$%dQ`O'#GgO!3oQ`O'#GkO$%iQ!0LrO'#ItO$%tQpO,5<|OOQ!0Lp,5<|,5<|O$%{QpO'#GcO$&YQpO'#GdO$&kQpO'#GdO$&pQMjO,5=XO$'QQMjO,5=ZOOQ!0Lh,5=^,5=^O!,TQMhO,5@VO!,TQMhO,5@VO$'bQ`O'#IyO$'vQ`O,5@UO$(OQ`O,59aOOQ!0Lh,59i,59iO$(TQ`O,5@VO$)TQ$IYO,59uOOQ!0Lh'#Jp'#JpO$)vQMjO,5<kO$*iQMjO,5<mO@zQ`O,5<oOOQ!0Lh,5<p,5<pO$*sQ`O,5<vO$*xQMjO,5<{O$+YQ`O'#KPO!$wQlO1G2RO$+_Q`O1G2RO9eQ`O'#KSO9eQ`O'#EtO%[QlO'#EtO9eQ`O'#I{O$+dQ!0LrO,5@{OOQ[1G2}1G2}OOQ[1G4`1G4`OOQ!0Lf1G/|1G/|OOQ!0Lf1G/z1G/zO$-fQ!0MxO1G0UOOQ[1G2y1G2yO!&zQMhO1G2yO%[QlO1G2yO#.tQ`O1G2yO$/jQMhO'#EkOOQ!0Lb,5@T,5@TO$/wQ!0LrO,5@TOOQ[1G.u1G.uO!ByQ!0LrO1G.uO!CUQpO1G.uO!C^QMhO1G.uO$0YQ`O1G0uO$0_Q`O'#CiO$0jQ`O'#KeO$0rQ`O,5=|O$0wQ`O'#KeO$0|Q`O'#KeO$1[Q`O'#JRO$1jQ`O,5AOO$1rQ!fO1G1iOOQ!0Lf1G1k1G1kO9kQ`O1G3fO@zQ`O1G3fO$1yQ`O1G3fO$2OQ`O1G3fO!DiQ`O1G3fO9uQ!0LrO1G3fOOQ[1G3f1G3fO!EcQ`O1G3UO!&zQMhO1G3RO$2TQ`O1G3ROOQ[1G3S1G3SO!&zQMhO1G3SO$2YQ`O1G3SO$2bQpO'#HQOOQ[1G3U1G3UO!6_QpO'#I}O!EhQ!bO1G3XOOQ[1G3X1G3XOOQ[,5=r,5=rO$2jQMhO,5=tO9kQ`O,5=tO$%dQ`O,5=vO9`Q`O,5=vO!CUQpO,5=vO!C^QMhO,5=vO:dQMhO,5=vO$2xQ`O'#KcO$3TQ`O,5=wOOQ[1G.k1G.kO$3YQ!0LrO1G.kO@zQ`O1G.kO$3eQ`O1G.kO9uQ!0LrO1G.kO$5mQ!fO,5AQO$5zQ`O,5AQO9eQ`O,5AQO$6VQlO,5>PO$6^Q`O,5>POOQ[1G3i1G3iO`QlO1G3iOOQ[1G3o1G3oOOQ[1G3q1G3qO?TQ`O1G3sO$6cQlO1G3uO$:gQlO'#HtOOQ[1G3x1G3xO$:tQ`O'#HzO?YQ`O'#H|OOQ[1G4O1G4OO$:|QlO1G4OO9uQ!0LrO1G4UOOQ[1G4W1G4WOOQ!0Lb'#G_'#G_O9uQ!0LrO1G4YO9uQ!0LrO1G4[O$?TQ`O,5@bO!)[QlO,5;`O9eQ`O,5;`O?YQ`O,5:XO!)[QlO,5:XO!CUQpO,5:XO$?YQ?MtO,5:XOOQO,5;`,5;`O$?dQpO'#IeO$?zQ`O,5@aOOQ!0Lf1G/r1G/rO$@SQpO'#IkO$@^Q`O,5@pOOQ!0Lb1G0y1G0yO#$`QpO,5:XOOQO'#Ig'#IgO$@fQpO,5:qOOQ!0Ln,5:q,5:qO#(ZQ`O1G0ZOOQ!0Lf1G0Z1G0ZO%[QlO1G0ZOOQ!0Lf1G0t1G0tO?YQ`O1G0tO!CUQpO1G0tO!C^QMhO1G0tOOQ!0Lb1G5|1G5|O!ByQ!0LrO1G0^OOQO1G0m1G0mO%[QlO1G0mO$@mQ!0LrO1G0mO$@xQ!0LrO1G0mO!CUQpO1G0^ODWQpO1G0^O$AWQ!0LrO1G0mOOQO1G0^1G0^O$AlQ!0MxO1G0mPOOO-E<[-E<[POOO1G.h1G.hOOOO1G/i1G/iO$AvQ!bO,5<iO$BOQ!fO1G4jOOQO1G4p1G4pO%[QlO,5?OO$BYQ`O1G5zO$BbQ`O1G6YO$BjQ!fO1G6ZO9eQ`O,5?UO$BtQ!0MxO1G6WO%[QlO1G6WO$CUQ!0LrO1G6WO$CgQ`O1G6VO$CgQ`O1G6VO9eQ`O1G6VO$CoQ`O,5?XO9eQ`O,5?XOOQO,5?X,5?XO$DTQ`O,5?XO$+YQ`O,5?XOOQO-E<k-E<kOOQS1G0a1G0aOOQS1G0c1G0cO#.lQ`O1G0cOOQ[7+(e7+(eO!&zQMhO7+(eO%[QlO7+(eO$DcQ`O7+(eO$DnQMhO7+(eO$D|Q!0MzO,5=XO$GXQ!0MzO,5=ZO$IdQ!0MzO,5=XO$KuQ!0MzO,5=ZO$NWQ!0MzO,59uO%!]Q!0MzO,5<kO%$hQ!0MzO,5<mO%&sQ!0MzO,5<{OOQ!0Lf7+&a7+&aO%)UQ!0MxO7+&aO%)xQlO'#IfO%*VQ`O,5@cO%*_Q!fO,5@cOOQ!0Lf1G0P1G0PO%*iQ`O7+&jOOQ!0Lf7+&j7+&jO%*nQ?MtO,5:fO%[QlO7+&zO%*xQ?MtO,5:bO%+VQ?MtO,5:jO%+aQ?MtO,5:lO%+kQMhO'#IiO%+uQ`O,5@hOOQ!0Lh1G0d1G0dOOQO1G1r1G1rOOQO1G1s1G1sO%+}Q!jO,5<ZO!)[QlO,5<YOOQO-E<l-E<lOOQ!0Lf7+'Y7+'YOOOW7+'e7+'eOOOW1G1|1G1|O%,YQ`O1G1|OOQ!0Lf1G2O1G2OOOOO,59o,59oO%,_Q!dO,59oOOOO-E<`-E<`OOQ!0Lh1G/X1G/XO%,fQ!0MxO7+'kOOQ!0Lh,5?^,5?^O%-YQMhO1G2fP%-aQ`O'#IrPOQ!0Lh-E<p-E<pO%-}QMjO,5?aOOQ!0Lh-E<s-E<sO%.pQMjO,5?cOOQ!0Lh-E<u-E<uO%.zQ!dO1G2wO%/RQ!dO'#CrO%/iQMhO'#KSO$$wQlO'#JvOOQ!0Lh1G2_1G2_O%/sQ`O'#IqO%0[Q`O,5@vO%0[Q`O,5@vO%0dQ`O,5@vO%0oQ`O,5@vOOQO1G2a1G2aO%0}QMjO1G2`O$+YQ`O'#K[O!,TQMhO1G2`O%1_Q(CWO'#IsO%1lQ`O,5@wO!&zQMhO,5@wO%1tQ!dO,5@wOOQ!0Lh1G2d1G2dO%4UQ!fO'#CiO%4`Q`O,5=POOQ!0Lb,5<},5<}O%4hQpO,5<}OOQ!0Lb,5=O,5=OOCwQ`O,5<}O%4sQpO,5<}OOQ!0Lb,5=R,5=RO$+YQ`O,5=VOOQO,5?`,5?`OOQO-E<r-E<rOOQ!0Lp1G2h1G2hO#$`QpO,5<}O$$wQlO,5=PO%5RQ`O,5=OO%5^QpO,5=OO!,TQMhO'#IuO%6WQMjO1G2sO!,TQMhO'#IwO%6yQMjO1G2uO%7TQMjO1G5qO%7_QMjO1G5qOOQO,5?e,5?eOOQO-E<w-E<wOOQO1G.{1G.{O!,TQMhO1G5qO!,TQMhO1G5qO!:]QpO,59wO%[QlO,59wOOQ!0Lh,5<j,5<jO%7lQ`O1G2ZO!,TQMhO1G2bO%7qQ!0MxO7+'mOOQ!0Lf7+'m7+'mO!$wQlO7+'mO%8eQ`O,5;`OOQ!0Lb,5?g,5?gOOQ!0Lb-E<y-E<yO%8jQ!dO'#K^O#(ZQ`O7+(eO4UQ!fO7+(eO$DfQ`O7+(eO%8tQ!0MvO'#CiO%9XQ!0MvO,5=SO%9lQ`O,5=SO%9tQ`O,5=SOOQ!0Lb1G5o1G5oOOQ[7+$a7+$aO!ByQ!0LrO7+$aO!CUQpO7+$aO!$wQlO7+&aO%9yQ`O'#JQO%:bQ`O,5APOOQO1G3h1G3hO9kQ`O,5APO%:bQ`O,5APO%:jQ`O,5APOOQO,5?m,5?mOOQO-E=P-E=POOQ!0Lf7+'T7+'TO%:oQ`O7+)QO9uQ!0LrO7+)QO9kQ`O7+)QO@zQ`O7+)QO%:tQ`O7+)QOOQ[7+)Q7+)QOOQ[7+(p7+(pO%:yQ!0MvO7+(mO!&zQMhO7+(mO!E^Q`O7+(nOOQ[7+(n7+(nO!&zQMhO7+(nO%;TQ`O'#KbO%;`Q`O,5=lOOQO,5?i,5?iOOQO-E<{-E<{OOQ[7+(s7+(sO%<rQpO'#HZOOQ[1G3`1G3`O!&zQMhO1G3`O%[QlO1G3`O%<yQ`O1G3`O%=UQMhO1G3`O9uQ!0LrO1G3bO$%dQ`O1G3bO9`Q`O1G3bO!CUQpO1G3bO!C^QMhO1G3bO%=dQ`O'#JPO%=xQ`O,5@}O%>QQpO,5@}OOQ!0Lb1G3c1G3cOOQ[7+$V7+$VO@zQ`O7+$VO9uQ!0LrO7+$VO%>]Q`O7+$VO%[QlO1G6lO%[QlO1G6mO%>bQ!0LrO1G6lO%>lQlO1G3kO%>sQ`O1G3kO%>xQlO1G3kOOQ[7+)T7+)TO9uQ!0LrO7+)_O`QlO7+)aOOQ['#Kh'#KhOOQ['#JS'#JSO%?PQlO,5>`OOQ[,5>`,5>`O%[QlO'#HuO%?^Q`O'#HwOOQ[,5>f,5>fO9eQ`O,5>fOOQ[,5>h,5>hOOQ[7+)j7+)jOOQ[7+)p7+)pOOQ[7+)t7+)tOOQ[7+)v7+)vO%?cQpO1G5|O%?}Q?MtO1G0zO%@XQ`O1G0zOOQO1G/s1G/sO%@dQ?MtO1G/sO?YQ`O1G/sO!)[QlO'#DmOOQO,5?P,5?POOQO-E<c-E<cOOQO,5?V,5?VOOQO-E<i-E<iO!CUQpO1G/sOOQO-E<e-E<eOOQ!0Ln1G0]1G0]OOQ!0Lf7+%u7+%uO#(ZQ`O7+%uOOQ!0Lf7+&`7+&`O?YQ`O7+&`O!CUQpO7+&`OOQO7+%x7+%xO$AlQ!0MxO7+&XOOQO7+&X7+&XO%[QlO7+&XO%@nQ!0LrO7+&XO!ByQ!0LrO7+%xO!CUQpO7+%xO%@yQ!0LrO7+&XO%AXQ!0MxO7++rO%[QlO7++rO%AiQ`O7++qO%AiQ`O7++qOOQO1G4s1G4sO9eQ`O1G4sO%AqQ`O1G4sOOQS7+%}7+%}O#(ZQ`O<<LPO4UQ!fO<<LPO%BPQ`O<<LPOOQ[<<LP<<LPO!&zQMhO<<LPO%[QlO<<LPO%BXQ`O<<LPO%BdQ!0MzO,5?aO%DoQ!0MzO,5?cO%FzQ!0MzO1G2`O%I]Q!0MzO1G2sO%KhQ!0MzO1G2uO%MsQ!fO,5?QO%[QlO,5?QOOQO-E<d-E<dO%M}Q`O1G5}OOQ!0Lf<<JU<<JUO%NVQ?MtO1G0uO&!^Q?MtO1G1PO&!eQ?MtO1G1PO&$fQ?MtO1G1PO&$mQ?MtO1G1PO&&nQ?MtO1G1PO&(oQ?MtO1G1PO&(vQ?MtO1G1PO&(}Q?MtO1G1PO&+OQ?MtO1G1PO&+VQ?MtO1G1PO&+^Q!0MxO<<JfO&-UQ?MtO1G1PO&.RQ?MvO1G1PO&/UQ?MvO'#JlO&1[Q?MtO1G1cO&1iQ?MtO1G0UO&1sQMjO,5?TOOQO-E<g-E<gO!)[QlO'#FqOOQO'#KZ'#KZOOQO1G1u1G1uO&1}Q`O1G1tO&2SQ?MtO,5?[OOOW7+'h7+'hOOOO1G/Z1G/ZO&2^Q!dO1G4xOOQ!0Lh7+(Q7+(QP!&zQMhO,5?^O!,TQMhO7+(cO&2eQ`O,5?]O9eQ`O,5?]O$+YQ`O,5?]OOQO-E<o-E<oO&2sQ`O1G6bO&2sQ`O1G6bO&2{Q`O1G6bO&3WQMjO7+'zO&3hQ!dO,5?_O&3rQ`O,5?_O!&zQMhO,5?_OOQO-E<q-E<qO&3wQ!dO1G6cO&4RQ`O1G6cO&4ZQ`O1G2kO!&zQMhO1G2kOOQ!0Lb1G2i1G2iOOQ!0Lb1G2j1G2jO%4hQpO1G2iO!CUQpO1G2iOCwQ`O1G2iOOQ!0Lb1G2q1G2qO&4`QpO1G2iO&4nQ`O1G2kO$+YQ`O1G2jOCwQ`O1G2jO$$wQlO1G2kO&4vQ`O1G2jO&5jQMjO,5?aOOQ!0Lh-E<t-E<tO&6]QMjO,5?cOOQ!0Lh-E<v-E<vO!,TQMhO7++]O&6gQMjO7++]O&6qQMjO7++]OOQ!0Lh1G/c1G/cO&7OQ`O1G/cOOQ!0Lh7+'u7+'uO&7TQMjO7+'|O&7eQ!0MxO<<KXOOQ!0Lf<<KX<<KXO&8XQ`O1G0zO!&zQMhO'#IzO&8^Q`O,5@xO&:`Q!fO<<LPO!&zQMhO1G2nO&:gQ!0LrO1G2nOOQ[<<G{<<G{O!ByQ!0LrO<<G{O&:xQ!0MxO<<I{OOQ!0Lf<<I{<<I{OOQO,5?l,5?lO&;lQ`O,5?lO&;qQ`O,5?lOOQO-E=O-E=OO&<PQ`O1G6kO&<PQ`O1G6kO9kQ`O1G6kO@zQ`O<<LlOOQ[<<Ll<<LlO&<XQ`O<<LlO9uQ!0LrO<<LlO9kQ`O<<LlOOQ[<<LX<<LXO%:yQ!0MvO<<LXOOQ[<<LY<<LYO!E^Q`O<<LYO&<^QpO'#I|O&<iQ`O,5@|O!)[QlO,5@|OOQ[1G3W1G3WOOQO'#JO'#JOO9uQ!0LrO'#JOO&<qQpO,5=uOOQ[,5=u,5=uO&<xQpO'#EgO&=PQpO'#GeO&=UQ`O7+(zO&=ZQ`O7+(zOOQ[7+(z7+(zO!&zQMhO7+(zO%[QlO7+(zO&=cQ`O7+(zOOQ[7+(|7+(|O9uQ!0LrO7+(|O$%dQ`O7+(|O9`Q`O7+(|O!CUQpO7+(|O&=nQ`O,5?kOOQO-E<}-E<}OOQO'#H^'#H^O&=yQ`O1G6iO9uQ!0LrO<<GqOOQ[<<Gq<<GqO@zQ`O<<GqO&>RQ`O7+,WO&>WQ`O7+,XO%[QlO7+,WO%[QlO7+,XOOQ[7+)V7+)VO&>]Q`O7+)VO&>bQlO7+)VO&>iQ`O7+)VOOQ[<<Ly<<LyOOQ[<<L{<<L{OOQ[-E=Q-E=QOOQ[1G3z1G3zO&>nQ`O,5>aOOQ[,5>c,5>cO&>sQ`O1G4QO9eQ`O7+&fO!)[QlO7+&fOOQO7+%_7+%_O&>xQ?MtO1G6ZO?YQ`O7+%_OOQ!0Lf<<Ia<<IaOOQ!0Lf<<Iz<<IzO?YQ`O<<IzOOQO<<Is<<IsO$AlQ!0MxO<<IsO%[QlO<<IsOOQO<<Id<<IdO!ByQ!0LrO<<IdO&?SQ!0LrO<<IsO&?_Q!0MxO<= ^O&?oQ`O<= ]OOQO7+*_7+*_O9eQ`O7+*_OOQ[ANAkANAkO&?wQ!fOANAkO!&zQMhOANAkO#(ZQ`OANAkO4UQ!fOANAkO&@OQ`OANAkO%[QlOANAkO&@WQ!0MzO7+'zO&BiQ!0MzO,5?aO&DtQ!0MzO,5?cO&GPQ!0MzO7+'|O&IbQ!fO1G4lO&IlQ?MtO7+&aO&KpQ?MvO,5=XO&MwQ?MvO,5=ZO&NXQ?MvO,5=XO&NiQ?MvO,5=ZO&NyQ?MvO,59uO'#PQ?MvO,5<kO'%SQ?MvO,5<mO''hQ?MvO,5<{O')^Q?MtO7+'kO')kQ?MtO7+'mO')xQ`O,5<]OOQO7+'`7+'`OOQ!0Lh7+*d7+*dO')}QMjO<<K}OOQO1G4w1G4wO'*UQ`O1G4wO'*aQ`O1G4wO'*oQ`O7++|O'*oQ`O7++|O!&zQMhO1G4yO'*wQ!dO1G4yO'+RQ`O7++}O'+ZQ`O7+(VO'+fQ!dO7+(VOOQ!0Lb7+(T7+(TOOQ!0Lb7+(U7+(UO!CUQpO7+(TOCwQ`O7+(TO'+pQ`O7+(VO!&zQMhO7+(VO$+YQ`O7+(UO'+uQ`O7+(VOCwQ`O7+(UO'+}QMjO<<NwO!,TQMhO<<NwOOQ!0Lh7+$}7+$}O',XQ!dO,5?fOOQO-E<x-E<xO',cQ!0MvO7+(YO!&zQMhO7+(YOOQ[AN=gAN=gO9kQ`O1G5WOOQO1G5W1G5WO',sQ`O1G5WO',xQ`O7+,VO',xQ`O7+,VO9uQ!0LrOANBWO@zQ`OANBWOOQ[ANBWANBWO'-QQ`OANBWOOQ[ANAsANAsOOQ[ANAtANAtO'-VQ`O,5?hOOQO-E<z-E<zO'-bQ?MtO1G6hOOQO,5?j,5?jOOQO-E<|-E<|OOQ[1G3a1G3aO'-lQ`O,5=POOQ[<<Lf<<LfO!&zQMhO<<LfO&=UQ`O<<LfO'-qQ`O<<LfO%[QlO<<LfOOQ[<<Lh<<LhO9uQ!0LrO<<LhO$%dQ`O<<LhO9`Q`O<<LhO'-yQpO1G5VO'.UQ`O7+,TOOQ[AN=]AN=]O9uQ!0LrOAN=]OOQ[<= r<= rOOQ[<= s<= sO'.^Q`O<= rO'.cQ`O<= sOOQ[<<Lq<<LqO'.hQ`O<<LqO'.mQlO<<LqOOQ[1G3{1G3{O?YQ`O7+)lO'.tQ`O<<JQO'/PQ?MtO<<JQOOQO<<Hy<<HyOOQ!0LfAN?fAN?fOOQOAN?_AN?_O$AlQ!0MxOAN?_OOQOAN?OAN?OO%[QlOAN?_OOQO<<My<<MyOOQ[G27VG27VO!&zQMhOG27VO#(ZQ`OG27VO'/ZQ!fOG27VO4UQ!fOG27VO'/bQ`OG27VO'/jQ?MtO<<JfO'/wQ?MvO1G2`O'1mQ?MvO,5?aO'3pQ?MvO,5?cO'5sQ?MvO1G2sO'7vQ?MvO1G2uO'9yQ?MtO<<KXO':WQ?MtO<<I{OOQO1G1w1G1wO!,TQMhOANAiOOQO7+*c7+*cO':eQ`O7+*cO':pQ`O<= hO':xQ!dO7+*eOOQ!0Lb<<Kq<<KqO$+YQ`O<<KqOCwQ`O<<KqO';SQ`O<<KqO!&zQMhO<<KqOOQ!0Lb<<Ko<<KoO!CUQpO<<KoO';_Q!dO<<KqOOQ!0Lb<<Kp<<KpO';iQ`O<<KqO!&zQMhO<<KqO$+YQ`O<<KpO';nQMjOANDcO';xQ!0MvO<<KtOOQO7+*r7+*rO9kQ`O7+*rO'<YQ`O<= qOOQ[G27rG27rO9uQ!0LrOG27rO@zQ`OG27rO!)[QlO1G5SO'<bQ`O7+,SO'<jQ`O1G2kO&=UQ`OANBQOOQ[ANBQANBQO!&zQMhOANBQO'<oQ`OANBQOOQ[ANBSANBSO9uQ!0LrOANBSO$%dQ`OANBSOOQO'#H_'#H_OOQO7+*q7+*qOOQ[G22wG22wOOQ[ANE^ANE^OOQ[ANE_ANE_OOQ[ANB]ANB]O'<wQ`OANB]OOQ[<<MW<<MWO!)[QlOAN?lOOQOG24yG24yO$AlQ!0MxOG24yO#(ZQ`OLD,qOOQ[LD,qLD,qO!&zQMhOLD,qO'<|Q!fOLD,qO'=TQ?MvO7+'zO'>yQ?MvO,5?aO'@|Q?MvO,5?cO'CPQ?MvO7+'|O'DuQMjOG27TOOQO<<M}<<M}OOQ!0LbANA]ANA]O$+YQ`OANA]OCwQ`OANA]O'EVQ!dOANA]OOQ!0LbANAZANAZO'E^Q`OANA]O!&zQMhOANA]O'EiQ!dOANA]OOQ!0LbANA[ANA[OOQO<<N^<<N^OOQ[LD-^LD-^O9uQ!0LrOLD-^O'EsQ?MtO7+*nOOQO'#Gf'#GfOOQ[G27lG27lO&=UQ`OG27lO!&zQMhOG27lOOQ[G27nG27nO9uQ!0LrOG27nOOQ[G27wG27wO'E}Q?MtOG25WOOQOLD*eLD*eOOQ[!$(!]!$(!]O#(ZQ`O!$(!]O!&zQMhO!$(!]O'FXQ!0MzOG27TOOQ!0LbG26wG26wO$+YQ`OG26wO'HjQ`OG26wOCwQ`OG26wO'HuQ!dOG26wO!&zQMhOG26wOOQ[!$(!x!$(!xOOQ[LD-WLD-WO&=UQ`OLD-WOOQ[LD-YLD-YOOQ[!)9Ew!)9EwO#(ZQ`O!)9EwOOQ!0LbLD,cLD,cO$+YQ`OLD,cOCwQ`OLD,cO'H|Q`OLD,cO'IXQ!dOLD,cOOQ[!$(!r!$(!rOOQ[!.K;c!.K;cO'I`Q?MvOG27TOOQ!0Lb!$( }!$( }O$+YQ`O!$( }OCwQ`O!$( }O'KUQ`O!$( }OOQ!0Lb!)9Ei!)9EiO$+YQ`O!)9EiOCwQ`O!)9EiOOQ!0Lb!.K;T!.K;TO$+YQ`O!.K;TOOQ!0Lb!4/0o!4/0oO!)[QlO'#DzO1PQ`O'#EXO'KaQ!fO'#JrO'KhQ!L^O'#DvO'KoQlO'#EOO'KvQ!fO'#CiO'N^Q!fO'#CiO!)[QlO'#EQO'NnQlO,5;ZO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO,5;eO!)[QlO'#IpO(!qQ`O,5<iO!)[QlO,5;eO(!yQMhO,5;eO($dQMhO,5;eO!)[QlO,5;wO!&zQMhO'#GmO(!yQMhO'#GmO!&zQMhO'#GoO(!yQMhO'#GoO1SQ`O'#DZO1SQ`O'#DZO!&zQMhO'#GPO(!yQMhO'#GPO!&zQMhO'#GRO(!yQMhO'#GRO!&zQMhO'#GaO(!yQMhO'#GaO!)[QlO,5:jO($kQpO'#D_O($uQpO'#JvO!)[QlO,5@oO'NnQlO1G0uO(%PQ?MtO'#CiO!)[QlO1G2PO!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO(%ZQ!dO'#CrO!&zQMhO,5<tO(!yQMhO,5<tO'NnQlO1G2RO!)[QlO7+&zO!&zQMhO1G2`O(!yQMhO1G2`O!&zQMhO'#IuO(!yQMhO'#IuO!&zQMhO'#IwO(!yQMhO'#IwO!&zQMhO1G2bO(!yQMhO1G2bO'NnQlO7+'mO'NnQlO7+&aO!&zQMhOANAiO(!yQMhOANAiO(%nQ`O'#EoO(%sQ`O'#EoO(%{Q`O'#F]O(&QQ`O'#EyO(&VQ`O'#KTO(&bQ`O'#KRO(&mQ`O,5;ZO(&rQMjO,5<eO(&yQ`O'#GYO('OQ`O'#GYO('TQ`O,5<eO(']Q`O,5<gO('eQ`O,5;ZO('mQ?MtO1G1`O('tQ`O,5<tO('yQ`O,5<tO((OQ`O,5<vO((TQ`O,5<vO((YQ`O1G2RO((_Q`O1G0uO((dQMjO<<K}O((kQMjO<<K}O((rQMhO'#F|O9`Q`O'#F{OAuQ`O'#EnO!)[QlO,5;tO!3oQ`O'#GYO!3oQ`O'#GYO!3oQ`O'#G[O!3oQ`O'#G[O!,TQMhO7+(cO!,TQMhO7+(cO%.zQ!dO1G2wO%.zQ!dO1G2wO!&zQMhO,5=]O!&zQMhO,5=]\",\n stateData: \"()x~O'|OS'}OSTOS(ORQ~OPYOQYOSfOY!VOaqOdzOeyOl!POpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!uwO!xxO!|]O$W|O$niO%h}O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO&W!WO&^!XO&`!YO&b!ZO&d![O&g!]O&m!^O&s!_O&u!`O&w!aO&y!bO&{!cO(TSO(VTO(YUO(aVO(o[O~OWtO~P`OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa!wOs!nO!S!oO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!xO#W!pO#X!pO#[!zO#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O(O!{O~OP]XR]X[]Xa]Xj]Xr]X!Q]X!S]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X'z]X(a]X(r]X(y]X(z]X~O!g%RX~P(qO_!}O(V#PO(W!}O(X#PO~O_#QO(X#PO(Y#PO(Z#QO~Ox#SO!U#TO(b#TO(c#VO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T<ZO(VTO(YUO(aVO(o[O~O![#ZO!]#WO!Y(hP!Y(vP~P+}O!^#cO~P`OPYOQYOSfOd!jOe!iOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(VTO(YUO(aVO(o[O~Op#mO![#iO!|]O#i#lO#j#iO(T<[O!k(sP~P.iO!l#oO(T#nO~O!x#sO!|]O%h#tO~O#k#uO~O!g#vO#k#uO~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!]$_O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa(fX'z(fX'w(fX!k(fX!Y(fX!_(fX%i(fX!g(fX~P1qO#S$dO#`$eO$Q$eOP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX!_(gX%i(gX~Oa(gX'z(gX'w(gX!Y(gX!k(gXv(gX!g(gX~P4UO#`$eO~O$]$hO$_$gO$f$mO~OSfO!_$nO$i$oO$k$qO~Oh%VOj%dOk%dOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T$sO(VTO(YUO(a$uO(y$}O(z%POg(^P~Ol%[O~P7eO!l%eO~O!S%hO!_%iO(T%gO~O!g%mO~Oa%nO'z%nO~O!Q%rO~P%[O(U!lO~P%[O%n%vO~P%[Oh%VO!l%eO(T%gO(U!lO~Oe%}O!l%eO(T%gO~Oj$RO~O!_&PO(T%gO(U!lO(VTO(YUO`)WP~O!Q&SO!l&RO%j&VO&T&WO~P;SO!x#sO~O%s&YO!S)SX!_)SX(T)SX~O(T&ZO~Ol!PO!u&`O%j!QO%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO~Od&eOe&dO!x&bO%h&cO%{&aO~P<bOd&hOeyOl!PO!_&gO!u&`O!xxO!|]O%h}O%l!OO%m!OO%n!OO%q!RO%s!SO%v!TO%w!TO%y!UO~Ob&kO#`&nO%j&iO(U!lO~P=gO!l&oO!u&sO~O!l#oO~O!_XO~Oa%nO'x&{O'z%nO~Oa%nO'x'OO'z%nO~Oa%nO'x'QO'z%nO~O'w]X!Y]Xv]X!k]X&[]X!_]X%i]X!g]X~P(qO!b'_O!c'WO!d'WO(U!lO(VTO(YUO~Os'UO!S'TO!['XO(e'SO!^(iP!^(xP~P@nOn'bO!_'`O(T%gO~Oe'gO!l%eO(T%gO~O!Q&SO!l&RO~Os!nO!S!oO!|<VO#T!pO#U!pO#W!pO#X!pO(U!lO(VTO(YUO(e!mO(o!sO~O!b'mO!c'lO!d'lO#V!pO#['nO#]'nO~PBYOa%nOh%VO!g#vO!l%eO'z%nO(r'pO~O!p'tO#`'rO~PChOs!nO!S!oO(VTO(YUO(e!mO(o!sO~O!_XOs(mX!S(mX!b(mX!c(mX!d(mX!|(mX#T(mX#U(mX#V(mX#W(mX#X(mX#[(mX#](mX(U(mX(V(mX(Y(mX(e(mX(o(mX~O!c'lO!d'lO(U!lO~PDWO(P'xO(Q'xO(R'zO~O_!}O(V'|O(W!}O(X'|O~O_#QO(X'|O(Y'|O(Z#QO~Ov(OO~P%[Ox#SO!U#TO(b#TO(c(RO~O![(TO!Y'WX!Y'^X!]'WX!]'^X~P+}O!](VO!Y(hX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!](VO!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~O!Y(hX~PHRO!Y([O~O!Y(uX!](uX!g(uX!k(uX(r(uX~O#`(uX#k#dX!^(uX~PJUO#`(]O!Y(wX!](wX~O!](^O!Y(vX~O!Y(aO~O#`$eO~PJUO!^(bO~P`OR#zO!Q#yO!S#{O!l#xO(aVOP!na[!naj!nar!na!]!na!p!na#R!na#n!na#o!na#p!na#q!na#r!na#s!na#t!na#u!na#v!na#x!na#z!na#{!na(r!na(y!na(z!na~Oa!na'z!na'w!na!Y!na!k!nav!na!_!na%i!na!g!na~PKlO!k(cO~O!g#vO#`(dO(r'pO!](tXa(tX'z(tX~O!k(tX~PNXO!S%hO!_%iO!|]O#i(iO#j(hO(T%gO~O!](jO!k(sX~O!k(lO~O!S%hO!_%iO#j(hO(T%gO~OP(gXR(gX[(gXj(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~O!g#vO!k(gX~P! uOR(nO!Q(mO!l#xO#S$dO!|!{a!S!{a~O!x!{a%h!{a!_!{a#i!{a#j!{a(T!{a~P!#vO!x(rO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_XO!iuO!lZO!oYO!pYO!qYO!svO!u!gO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~O#k(xO~O![(zO!k(kP~P%[O(e(|O(o[O~O!S)OO!l#xO(e(|O(o[O~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]$_Oa$qa'z$qa'w$qa!k$qa!Y$qa!_$qa%i$qa!g$qa~Ol)dO~P!&zOh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O%]O!S${O!_$|O!i%bO!l$xO#j%cO$W%`O$t%^O$v%_O$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Og(pP~P!,TO!Q)iO!g)hO!_$^X$Z$^X$]$^X$_$^X$f$^X~O!g)hO!_({X$Z({X$]({X$_({X$f({X~O!Q)iO~P!.^O!Q)iO!_({X$Z({X$]({X$_({X$f({X~O!_)kO$Z)oO$])jO$_)jO$f)pO~O![)sO~P!)[O$]$hO$_$gO$f)wO~On$zX!Q$zX#S$zX'y$zX(y$zX(z$zX~OgmXg$zXnmX!]mX#`mX~P!0SOx)yO(b)zO(c)|O~On*VO!Q*OO'y*PO(y$}O(z%PO~Og)}O~P!1WOg*WO~Oh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S*YO!_*ZO!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op*`O}O(T&ZO~O!l+SO~O(T(vO~Op+WO!S%hO![#iO!_%iO!|]O#i#lO#j#iO(T%gO!k(sP~O!g#vO#k+XO~O!S%hOTX'z)TX~OP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO#z$WO#{$XO(aVO(r$YO(y#|O(z#}O~Oa!ja!]!ja'z!ja'w!ja!Y!ja!k!jav!ja!_!ja%i!ja!g!ja~P!:tOR#zO!Q#yO!S#{O!l#xO(aVOP!ra[!raj!rar!ra!]!ra!p!ra#R!ra#n!ra#o!ra#p!ra#q!ra#r!ra#s!ra#t!ra#u!ra#v!ra#x!ra#z!ra#{!ra(r!ra(y!ra(z!ra~Oa!ra'z!ra'w!ra!Y!ra!k!rav!ra!_!ra%i!ra!g!ra~P!=[OR#zO!Q#yO!S#{O!l#xO(aVOP!ta[!taj!tar!ta!]!ta!p!ta#R!ta#n!ta#o!ta#p!ta#q!ta#r!ta#s!ta#t!ta#u!ta#v!ta#x!ta#z!ta#{!ta(r!ta(y!ta(z!ta~Oa!ta'z!ta'w!ta!Y!ta!k!tav!ta!_!ta%i!ta!g!ta~P!?rOh%VOn+gO!_'`O%i+fO~O!g+iOa(]X!_(]X'z(]X!](]X~Oa%nO!_XO'z%nO~Oh%VO!l%eO~Oh%VO!l%eO(T%gO~O!g#vO#k(xO~Ob+tO%j+uO(T+qO(VTO(YUO!^)XP~O!]+vO`)WX~O[+zO~O`+{O~O!_&PO(T%gO(U!lO`)WP~O%j,OO~P;SOh%VO#`,SO~Oh%VOn,VO!_$|O~O!_,XO~O!Q,ZO!_XO~O%n%vO~O!x,`O~Oe,eO~Ob,fO(T#nO(VTO(YUO!^)VP~Oe%}O~O%j!QO(T&ZO~P=gO[,kO`,jO~OPYOQYOSfOdzOeyOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!iuO!lZO!oYO!pYO!qYO!svO!xxO!|]O$niO%h}O(VTO(YUO(aVO(o[O~O!_!eO!u!gO$W!kO(T!dO~P!FyO`,jOa%nO'z%nO~OPYOQYOSfOd!jOe!iOpkOrYOskOtkOzkO|YO!OYO!SWO!WkO!XkO!_!eO!iuO!lZO!oYO!pYO!qYO!svO!x!hO$W!kO$niO(T!dO(VTO(YUO(aVO(o[O~Oa,pOl!OO!uwO%l!OO%m!OO%n!OO~P!IcO!l&oO~O&^,vO~O!_,xO~O&o,zO&q,{OP&laQ&laS&laY&laa&lad&lae&lal&lap&lar&las&lat&laz&la|&la!O&la!S&la!W&la!X&la!_&la!i&la!l&la!o&la!p&la!q&la!s&la!u&la!x&la!|&la$W&la$n&la%h&la%j&la%l&la%m&la%n&la%q&la%s&la%v&la%w&la%y&la&W&la&^&la&`&la&b&la&d&la&g&la&m&la&s&la&u&la&w&la&y&la&{&la'w&la(T&la(V&la(Y&la(a&la(o&la!^&la&e&lab&la&j&la~O(T-QO~Oh!eX!]!RX!^!RX!g!RX!g!eX!l!eX#`!RX~O!]!eX!^!eX~P#!iO!g-VO#`-UOh(jX!]#hX!^#hX!g(jX!l(jX~O!](jX!^(jX~P##[Oh%VO!g-XO!l%eO!]!aX!^!aX~Os!nO!S!oO(VTO(YUO(e!mO~OP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_!eO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(VTO(YUO(aVO(o[O~O(T=QO~P#$qO!]-]O!^(iX~O!^-_O~O!g-VO#`-UO!]#hX!^#hX~O!]-`O!^(xX~O!^-bO~O!c-cO!d-cO(U!lO~P#$`O!^-fO~P'_On-iO!_'`O~O!Y-nO~Os!{a!b!{a!c!{a!d!{a#T!{a#U!{a#V!{a#W!{a#X!{a#[!{a#]!{a(U!{a(V!{a(Y!{a(e!{a(o!{a~P!#vO!p-sO#`-qO~PChO!c-uO!d-uO(U!lO~PDWOa%nO#`-qO'z%nO~Oa%nO!g#vO#`-qO'z%nO~Oa%nO!g#vO!p-sO#`-qO'z%nO(r'pO~O(P'xO(Q'xO(R-zO~Ov-{O~O!Y'Wa!]'Wa~P!:tO![.PO!Y'WX!]'WX~P%[O!](VO!Y(ha~O!Y(ha~PHRO!](^O!Y(va~O!S%hO![.TO!_%iO(T%gO!Y'^X!]'^X~O#`.VO!](ta!k(taa(ta'z(ta~O!g#vO~P#,wO!](jO!k(sa~O!S%hO!_%iO#j.ZO(T%gO~Op.`O!S%hO![.]O!_%iO!|]O#i._O#j.]O(T%gO!]'aX!k'aX~OR.dO!l#xO~Oh%VOn.gO!_'`O%i.fO~Oa#ci!]#ci'z#ci'w#ci!Y#ci!k#civ#ci!_#ci%i#ci!g#ci~P!:tOn>]O!Q*OO'y*PO(y$}O(z%PO~O#k#_aa#_a#`#_a'z#_a!]#_a!k#_a!_#_a!Y#_a~P#/sO#k(`XP(`XR(`X[(`Xa(`Xj(`Xr(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X'z(`X(a(`X(r(`X!k(`X!Y(`X'w(`Xv(`X!_(`X%i(`X!g(`X~P!6kO!].tO!k(kX~P!:tO!k.wO~O!Y.yO~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mia#mij#mir#mi!]#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#n#mi~P#3cO#n$OO~P#3cOP$[OR#zOr$aO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO[#mia#mij#mi!]#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#r#mi~P#6QO#r$QO~P#6QOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO(aVOa#mi!]#mi#x#mi#z#mi#{#mi'z#mi(r#mi(y#mi(z#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#v#mi~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO(aVO(z#}Oa#mi!]#mi#z#mi#{#mi'z#mi(r#mi(y#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#x$UO~P#;VO#x#mi~P#;VO#v$SO~P#8oOP$[OR#zO[$cOj$ROr$aO!Q#yO!S#{O!l#xO!p$[O#R$RO#n$OO#o$PO#p$PO#q$PO#r$QO#s$RO#t$RO#u$bO#v$SO#x$UO(aVO(y#|O(z#}Oa#mi!]#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~O#z#mi~P#={O#z$WO~P#={OP]XR]X[]Xj]Xr]X!Q]X!S]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X!]]X!^]X~O$O]X~P#@jOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO#z<gO#{<hO(aVO(r$YO(y#|O(z#}O~O$O.{O~P#BwO#S$dO#`<nO$Q<nO$O(gX!^(gX~P! uOa'da!]'da'z'da'w'da!k'da!Y'dav'da!_'da%i'da!g'da~P!:tO[#mia#mij#mir#mi!]#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi'z#mi(r#mi'w#mi!Y#mi!k#miv#mi!_#mi%i#mi!g#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n$OO#o$PO#p$PO#q$PO(aVO(y#mi(z#mi~P#EyOn>]O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P#EyO!]/POg(pX~P!1WOg/RO~Oa$Pi!]$Pi'z$Pi'w$Pi!Y$Pi!k$Piv$Pi!_$Pi%i$Pi!g$Pi~P!:tO$]/SO$_/SO~O$]/TO$_/TO~O!g)hO#`/UO!_$cX$Z$cX$]$cX$_$cX$f$cX~O![/VO~O!_)kO$Z/XO$])jO$_)jO$f/YO~O!]<iO!^(fX~P#BwO!^/ZO~O!g)hO$f({X~O$f/]O~Ov/^O~P!&zOx)yO(b)zO(c/aO~O!S/dO~O(y$}On%aa!Q%aa'y%aa(z%aa!]%aa#`%aa~Og%aa$O%aa~P#L{O(z%POn%ca!Q%ca'y%ca(y%ca!]%ca#`%ca~Og%ca$O%ca~P#MnO!]fX!gfX!kfX!k$zX(rfX~P!0SOp%WOPP~P!1uOr*sO!b*qO!c*kO!d*kO!l*bO#[*rO%`*mO(U!lO(VTO(YUO~Os<}O!S/nO![+[O!^*pO(e<|O!^(xP~P$ [O!k/oO~P#/sO!]/pO!g#vO(r'pO!k)OX~O!k/uO~OnoX!QoX'yoX(yoX(zoX~O!g#vO!koX~P$#OOp/wO!S%hO![*^O!_%iO(T%gO!k)OP~O#k/xO~O!Y$zX!]$zX!g%RX~P!0SO!]/yO!Y)PX~P#/sO!g/{O~O!Y/}O~OpkO(T0OO~P.iOh%VOr0TO!g#vO!l%eO(r'pO~O!g+iO~Oa%nO!]0XO'z%nO~O!^0ZO~P!5iO!c0[O!d0[O(U!lO~P#$`Os!nO!S0]O(VTO(YUO(e!mO~O#[0_O~Og%aa!]%aa#`%aa$O%aa~P!1WOg%ca!]%ca#`%ca$O%ca~P!1WOj%dOk%dOl%dO(T&ZOg'mX!]'mX~O!]*yOg(^a~Og0hO~On0jO#`0iOg(_a!](_a~OR0kO!Q0kO!S0lO#S$dOn}a'y}a(y}a(z}a!]}a#`}a~Og}a$O}a~P$(cO!Q*OO'y*POn$sa(y$sa(z$sa!]$sa#`$sa~Og$sa$O$sa~P$)_O!Q*OO'y*POn$ua(y$ua(z$ua!]$ua#`$ua~Og$ua$O$ua~P$*QO#k0oO~Og%Ta!]%Ta#`%Ta$O%Ta~P!1WO!g#vO~O#k0rO~O!]+^Oa)Ta'z)Ta~OR#zO!Q#yO!S#{O!l#xO(aVOP!ri[!rij!rir!ri!]!ri!p!ri#R!ri#n!ri#o!ri#p!ri#q!ri#r!ri#s!ri#t!ri#u!ri#v!ri#x!ri#z!ri#{!ri(r!ri(y!ri(z!ri~Oa!ri'z!ri'w!ri!Y!ri!k!riv!ri!_!ri%i!ri!g!ri~P$+oOh%VOr%XOs$tOt$tOz%YO|%ZO!O<sO!S${O!_$|O!i>VO!l$xO#j<yO$W%`O$t<uO$v<wO$y%aO(VTO(YUO(a$uO(y$}O(z%PO~Op0{O%]0|O(T0zO~P$.VO!g+iOa(]a!_(]a'z(]a!](]a~O#k1SO~O[]X!]fX!^fX~O!]1TO!^)XX~O!^1VO~O[1WO~Ob1YO(T+qO(VTO(YUO~O!_&PO(T%gO`'uX!]'uX~O!]+vO`)Wa~O!k1]O~P!:tO[1`O~O`1aO~O#`1fO~On1iO!_$|O~O(e(|O!^)UP~Oh%VOn1rO!_1oO%i1qO~O[1|O!]1zO!^)VX~O!^1}O~O`2POa%nO'z%nO~O(T#nO(VTO(YUO~O#S$dO#`$eO$Q$eOP(gXR(gX[(gXr(gX!Q(gX!S(gX!](gX!l(gX!p(gX#R(gX#n(gX#o(gX#p(gX#q(gX#r(gX#s(gX#t(gX#u(gX#v(gX#x(gX#z(gX#{(gX(a(gX(r(gX(y(gX(z(gX~Oj2SO&[2TOa(gX~P$3pOj2SO#`$eO&[2TO~Oa2VO~P%[Oa2XO~O&e2[OP&ciQ&ciS&ciY&cia&cid&cie&cil&cip&cir&cis&cit&ciz&ci|&ci!O&ci!S&ci!W&ci!X&ci!_&ci!i&ci!l&ci!o&ci!p&ci!q&ci!s&ci!u&ci!x&ci!|&ci$W&ci$n&ci%h&ci%j&ci%l&ci%m&ci%n&ci%q&ci%s&ci%v&ci%w&ci%y&ci&W&ci&^&ci&`&ci&b&ci&d&ci&g&ci&m&ci&s&ci&u&ci&w&ci&y&ci&{&ci'w&ci(T&ci(V&ci(Y&ci(a&ci(o&ci!^&cib&ci&j&ci~Ob2bO!^2`O&j2aO~P`O!_XO!l2dO~O&q,{OP&liQ&liS&liY&lia&lid&lie&lil&lip&lir&lis&lit&liz&li|&li!O&li!S&li!W&li!X&li!_&li!i&li!l&li!o&li!p&li!q&li!s&li!u&li!x&li!|&li$W&li$n&li%h&li%j&li%l&li%m&li%n&li%q&li%s&li%v&li%w&li%y&li&W&li&^&li&`&li&b&li&d&li&g&li&m&li&s&li&u&li&w&li&y&li&{&li'w&li(T&li(V&li(Y&li(a&li(o&li!^&li&e&lib&li&j&li~O!Y2jO~O!]!aa!^!aa~P#BwOs!nO!S!oO![2pO(e!mO!]'XX!^'XX~P@nO!]-]O!^(ia~O!]'_X!^'_X~P!9|O!]-`O!^(xa~O!^2wO~P'_Oa%nO#`3QO'z%nO~Oa%nO!g#vO#`3QO'z%nO~Oa%nO!g#vO!p3UO#`3QO'z%nO(r'pO~Oa%nO'z%nO~P!:tO!]$_Ov$qa~O!Y'Wi!]'Wi~P!:tO!](VO!Y(hi~O!](^O!Y(vi~O!Y(wi!](wi~P!:tO!](ti!k(tia(ti'z(ti~P!:tO#`3WO!](ti!k(tia(ti'z(ti~O!](jO!k(si~O!S%hO!_%iO!|]O#i3]O#j3[O(T%gO~O!S%hO!_%iO#j3[O(T%gO~On3dO!_'`O%i3cO~Oh%VOn3dO!_'`O%i3cO~O#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aav%aa!_%aa%i%aa!g%aa~P#L{O#k%caP%caR%ca[%caa%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%cav%ca!_%ca%i%ca!g%ca~P#MnO#k%aaP%aaR%aa[%aaa%aaj%aar%aa!S%aa!]%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa'z%aa(a%aa(r%aa!k%aa!Y%aa'w%aa#`%aav%aa!_%aa%i%aa!g%aa~P#/sO#k%caP%caR%ca[%caa%caj%car%ca!S%ca!]%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca'z%ca(a%ca(r%ca!k%ca!Y%ca'w%ca#`%cav%ca!_%ca%i%ca!g%ca~P#/sO#k}aP}a[}aa}aj}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a'z}a(a}a(r}a!k}a!Y}a'w}av}a!_}a%i}a!g}a~P$(cO#k$saP$saR$sa[$saa$saj$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa'z$sa(a$sa(r$sa!k$sa!Y$sa'w$sav$sa!_$sa%i$sa!g$sa~P$)_O#k$uaP$uaR$ua[$uaa$uaj$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua'z$ua(a$ua(r$ua!k$ua!Y$ua'w$uav$ua!_$ua%i$ua!g$ua~P$*QO#k%TaP%TaR%Ta[%Taa%Taj%Tar%Ta!S%Ta!]%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta'z%Ta(a%Ta(r%Ta!k%Ta!Y%Ta'w%Ta#`%Tav%Ta!_%Ta%i%Ta!g%Ta~P#/sOa#cq!]#cq'z#cq'w#cq!Y#cq!k#cqv#cq!_#cq%i#cq!g#cq~P!:tO![3lO!]'YX!k'YX~P%[O!].tO!k(ka~O!].tO!k(ka~P!:tO!Y3oO~O$O!na!^!na~PKlO$O!ja!]!ja!^!ja~P#BwO$O!ra!^!ra~P!=[O$O!ta!^!ta~P!?rOg']X!]']X~P!,TO!]/POg(pa~OSfO!_4TO$d4UO~O!^4YO~Ov4ZO~P#/sOa$mq!]$mq'z$mq'w$mq!Y$mq!k$mqv$mq!_$mq%i$mq!g$mq~P!:tO!Y4]O~P!&zO!S4^O~O!Q*OO'y*PO(z%POn'ia(y'ia!]'ia#`'ia~Og'ia$O'ia~P%-fO!Q*OO'y*POn'ka(y'ka(z'ka!]'ka#`'ka~Og'ka$O'ka~P%.XO(r$YO~P#/sO!YfX!Y$zX!]fX!]$zX!g%RX#`fX~P!0SOp%WO(T=WO~P!1uOp4bO!S%hO![4aO!_%iO(T%gO!]'eX!k'eX~O!]/pO!k)Oa~O!]/pO!g#vO!k)Oa~O!]/pO!g#vO(r'pO!k)Oa~Og$|i!]$|i#`$|i$O$|i~P!1WO![4jO!Y'gX!]'gX~P!3tO!]/yO!Y)Pa~O!]/yO!Y)Pa~P#/sOP]XR]X[]Xj]Xr]X!Q]X!S]X!Y]X!]]X!l]X!p]X#R]X#S]X#`]X#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~Oj%YX!g%YX~P%2OOj4oO!g#vO~Oh%VO!g#vO!l%eO~Oh%VOr4tO!l%eO(r'pO~Or4yO!g#vO(r'pO~Os!nO!S4zO(VTO(YUO(e!mO~O(y$}On%ai!Q%ai'y%ai(z%ai!]%ai#`%ai~Og%ai$O%ai~P%5oO(z%POn%ci!Q%ci'y%ci(y%ci!]%ci#`%ci~Og%ci$O%ci~P%6bOg(_i!](_i~P!1WO#`5QOg(_i!](_i~P!1WO!k5VO~Oa$oq!]$oq'z$oq'w$oq!Y$oq!k$oqv$oq!_$oq%i$oq!g$oq~P!:tO!Y5ZO~O!]5[O!_)QX~P#/sOa$zX!_$zX%^]X'z$zX!]$zX~P!0SO%^5_OaoX!_oX'zoX!]oX~P$#OOp5`O(T#nO~O%^5_O~Ob5fO%j5gO(T+qO(VTO(YUO!]'tX!^'tX~O!]1TO!^)Xa~O[5kO~O`5lO~O[5pO~Oa%nO'z%nO~P#/sO!]5uO#`5wO!^)UX~O!^5xO~Or6OOs!nO!S*iO!b!yO!c!vO!d!vO!|<VO#T!pO#U!pO#V!pO#W!pO#X!pO#[5}O#]!zO(U!lO(VTO(YUO(e!mO(o!sO~O!^5|O~P%;eOn6TO!_1oO%i6SO~Oh%VOn6TO!_1oO%i6SO~Ob6[O(T#nO(VTO(YUO!]'sX!^'sX~O!]1zO!^)Va~O(VTO(YUO(e6^O~O`6bO~Oj6eO&[6fO~PNXO!k6gO~P%[Oa6iO~Oa6iO~P%[Ob2bO!^6nO&j2aO~P`O!g6pO~O!g6rOh(ji!](ji!^(ji!g(ji!l(jir(ji(r(ji~O!]#hi!^#hi~P#BwO#`6sO!]#hi!^#hi~O!]!ai!^!ai~P#BwOa%nO#`6|O'z%nO~Oa%nO!g#vO#`6|O'z%nO~O!](tq!k(tqa(tq'z(tq~P!:tO!](jO!k(sq~O!S%hO!_%iO#j7TO(T%gO~O!_'`O%i7WO~On7[O!_'`O%i7WO~O#k'iaP'iaR'ia['iaa'iaj'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia'z'ia(a'ia(r'ia!k'ia!Y'ia'w'iav'ia!_'ia%i'ia!g'ia~P%-fO#k'kaP'kaR'ka['kaa'kaj'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka'z'ka(a'ka(r'ka!k'ka!Y'ka'w'kav'ka!_'ka%i'ka!g'ka~P%.XO#k$|iP$|iR$|i[$|ia$|ij$|ir$|i!S$|i!]$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i'z$|i(a$|i(r$|i!k$|i!Y$|i'w$|i#`$|iv$|i!_$|i%i$|i!g$|i~P#/sO#k%aiP%aiR%ai[%aia%aij%air%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai'z%ai(a%ai(r%ai!k%ai!Y%ai'w%aiv%ai!_%ai%i%ai!g%ai~P%5oO#k%ciP%ciR%ci[%cia%cij%cir%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci'z%ci(a%ci(r%ci!k%ci!Y%ci'w%civ%ci!_%ci%i%ci!g%ci~P%6bO!]'Ya!k'Ya~P!:tO!].tO!k(ki~O$O#ci!]#ci!^#ci~P#BwOP$[OR#zO!Q#yO!S#{O!l#xO!p$[O(aVO[#mij#mir#mi#R#mi#o#mi#p#mi#q#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#n#mi~P%NdO#n<_O~P%NdOP$[OR#zOr<kO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO[#mij#mi#R#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#r#mi~P&!lO#r<aO~P&!lOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO(aVO#x#mi#z#mi#{#mi$O#mi(r#mi(y#mi(z#mi!]#mi!^#mi~O#v#mi~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO(aVO(z#}O#z#mi#{#mi$O#mi(r#mi(y#mi!]#mi!^#mi~O#x<eO~P&&uO#x#mi~P&&uO#v<cO~P&$tOP$[OR#zO[<mOj<bOr<kO!Q#yO!S#{O!l#xO!p$[O#R<bO#n<_O#o<`O#p<`O#q<`O#r<aO#s<bO#t<bO#u<lO#v<cO#x<eO(aVO(y#|O(z#}O#{#mi$O#mi(r#mi!]#mi!^#mi~O#z#mi~P&)UO#z<gO~P&)UOa#|y!]#|y'z#|y'w#|y!Y#|y!k#|yv#|y!_#|y%i#|y!g#|y~P!:tO[#mij#mir#mi#R#mi#r#mi#s#mi#t#mi#u#mi#v#mi#x#mi#z#mi#{#mi$O#mi(r#mi!]#mi!^#mi~OP$[OR#zO!Q#yO!S#{O!l#xO!p$[O#n<_O#o<`O#p<`O#q<`O(aVO(y#mi(z#mi~P&,QOn>^O!Q*OO'y*PO(y$}O(z%POP#miR#mi!S#mi!l#mi!p#mi#n#mi#o#mi#p#mi#q#mi(a#mi~P&,QO#S$dOP(`XR(`X[(`Xj(`Xn(`Xr(`X!Q(`X!S(`X!l(`X!p(`X#R(`X#n(`X#o(`X#p(`X#q(`X#r(`X#s(`X#t(`X#u(`X#v(`X#x(`X#z(`X#{(`X$O(`X'y(`X(a(`X(r(`X(y(`X(z(`X!](`X!^(`X~O$O$Pi!]$Pi!^$Pi~P#BwO$O!ri!^!ri~P$+oOg']a!]']a~P!1WO!^7nO~O!]'da!^'da~P#BwO!Y7oO~P#/sO!g#vO(r'pO!]'ea!k'ea~O!]/pO!k)Oi~O!]/pO!g#vO!k)Oi~Og$|q!]$|q#`$|q$O$|q~P!1WO!Y'ga!]'ga~P#/sO!g7vO~O!]/yO!Y)Pi~P#/sO!]/yO!Y)Pi~O!Y7yO~Oh%VOr8OO!l%eO(r'pO~Oj8QO!g#vO~Or8TO!g#vO(r'pO~O!Q*OO'y*PO(z%POn'ja(y'ja!]'ja#`'ja~Og'ja$O'ja~P&5RO!Q*OO'y*POn'la(y'la(z'la!]'la#`'la~Og'la$O'la~P&5tOg(_q!](_q~P!1WO#`8VOg(_q!](_q~P!1WO!Y8WO~Og%Oq!]%Oq#`%Oq$O%Oq~P!1WOa$oy!]$oy'z$oy'w$oy!Y$oy!k$oyv$oy!_$oy%i$oy!g$oy~P!:tO!g6rO~O!]5[O!_)Qa~O!_'`OP$TaR$Ta[$Taj$Tar$Ta!Q$Ta!S$Ta!]$Ta!l$Ta!p$Ta#R$Ta#n$Ta#o$Ta#p$Ta#q$Ta#r$Ta#s$Ta#t$Ta#u$Ta#v$Ta#x$Ta#z$Ta#{$Ta(a$Ta(r$Ta(y$Ta(z$Ta~O%i7WO~P&8fO%^8[Oa%[i!_%[i'z%[i!]%[i~Oa#cy!]#cy'z#cy'w#cy!Y#cy!k#cyv#cy!_#cy%i#cy!g#cy~P!:tO[8^O~Ob8`O(T+qO(VTO(YUO~O!]1TO!^)Xi~O`8dO~O(e(|O!]'pX!^'pX~O!]5uO!^)Ua~O!^8nO~P%;eO(o!sO~P$&YO#[8oO~O!_1oO~O!_1oO%i8qO~On8tO!_1oO%i8qO~O[8yO!]'sa!^'sa~O!]1zO!^)Vi~O!k8}O~O!k9OO~O!k9RO~O!k9RO~P%[Oa9TO~O!g9UO~O!k9VO~O!](wi!^(wi~P#BwOa%nO#`9_O'z%nO~O!](ty!k(tya(ty'z(ty~P!:tO!](jO!k(sy~O%i9bO~P&8fO!_'`O%i9bO~O#k$|qP$|qR$|q[$|qa$|qj$|qr$|q!S$|q!]$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q'z$|q(a$|q(r$|q!k$|q!Y$|q'w$|q#`$|qv$|q!_$|q%i$|q!g$|q~P#/sO#k'jaP'jaR'ja['jaa'jaj'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja'z'ja(a'ja(r'ja!k'ja!Y'ja'w'jav'ja!_'ja%i'ja!g'ja~P&5RO#k'laP'laR'la['laa'laj'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la'z'la(a'la(r'la!k'la!Y'la'w'lav'la!_'la%i'la!g'la~P&5tO#k%OqP%OqR%Oq[%Oqa%Oqj%Oqr%Oq!S%Oq!]%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq'z%Oq(a%Oq(r%Oq!k%Oq!Y%Oq'w%Oq#`%Oqv%Oq!_%Oq%i%Oq!g%Oq~P#/sO!]'Yi!k'Yi~P!:tO$O#cq!]#cq!^#cq~P#BwO(y$}OP%aaR%aa[%aaj%aar%aa!S%aa!l%aa!p%aa#R%aa#n%aa#o%aa#p%aa#q%aa#r%aa#s%aa#t%aa#u%aa#v%aa#x%aa#z%aa#{%aa$O%aa(a%aa(r%aa!]%aa!^%aa~On%aa!Q%aa'y%aa(z%aa~P&IyO(z%POP%caR%ca[%caj%car%ca!S%ca!l%ca!p%ca#R%ca#n%ca#o%ca#p%ca#q%ca#r%ca#s%ca#t%ca#u%ca#v%ca#x%ca#z%ca#{%ca$O%ca(a%ca(r%ca!]%ca!^%ca~On%ca!Q%ca'y%ca(y%ca~P&LQOn>^O!Q*OO'y*PO(z%PO~P&IyOn>^O!Q*OO'y*PO(y$}O~P&LQOR0kO!Q0kO!S0lO#S$dOP}a[}aj}an}ar}a!l}a!p}a#R}a#n}a#o}a#p}a#q}a#r}a#s}a#t}a#u}a#v}a#x}a#z}a#{}a$O}a'y}a(a}a(r}a(y}a(z}a!]}a!^}a~O!Q*OO'y*POP$saR$sa[$saj$san$sar$sa!S$sa!l$sa!p$sa#R$sa#n$sa#o$sa#p$sa#q$sa#r$sa#s$sa#t$sa#u$sa#v$sa#x$sa#z$sa#{$sa$O$sa(a$sa(r$sa(y$sa(z$sa!]$sa!^$sa~O!Q*OO'y*POP$uaR$ua[$uaj$uan$uar$ua!S$ua!l$ua!p$ua#R$ua#n$ua#o$ua#p$ua#q$ua#r$ua#s$ua#t$ua#u$ua#v$ua#x$ua#z$ua#{$ua$O$ua(a$ua(r$ua(y$ua(z$ua!]$ua!^$ua~On>^O!Q*OO'y*PO(y$}O(z%PO~OP%TaR%Ta[%Taj%Tar%Ta!S%Ta!l%Ta!p%Ta#R%Ta#n%Ta#o%Ta#p%Ta#q%Ta#r%Ta#s%Ta#t%Ta#u%Ta#v%Ta#x%Ta#z%Ta#{%Ta$O%Ta(a%Ta(r%Ta!]%Ta!^%Ta~P''VO$O$mq!]$mq!^$mq~P#BwO$O$oq!]$oq!^$oq~P#BwO!^9oO~O$O9pO~P!1WO!g#vO!]'ei!k'ei~O!g#vO(r'pO!]'ei!k'ei~O!]/pO!k)Oq~O!Y'gi!]'gi~P#/sO!]/yO!Y)Pq~Or9wO!g#vO(r'pO~O[9yO!Y9xO~P#/sO!Y9xO~Oj:PO!g#vO~Og(_y!](_y~P!1WO!]'na!_'na~P#/sOa%[q!_%[q'z%[q!]%[q~P#/sO[:UO~O!]1TO!^)Xq~O`:YO~O#`:ZO!]'pa!^'pa~O!]5uO!^)Ui~P#BwO!S:]O~O!_1oO%i:`O~O(VTO(YUO(e:eO~O!]1zO!^)Vq~O!k:hO~O!k:iO~O!k:jO~O!k:jO~P%[O#`:mO!]#hy!^#hy~O!]#hy!^#hy~P#BwO%i:rO~P&8fO!_'`O%i:rO~O$O#|y!]#|y!^#|y~P#BwOP$|iR$|i[$|ij$|ir$|i!S$|i!l$|i!p$|i#R$|i#n$|i#o$|i#p$|i#q$|i#r$|i#s$|i#t$|i#u$|i#v$|i#x$|i#z$|i#{$|i$O$|i(a$|i(r$|i!]$|i!^$|i~P''VO!Q*OO'y*PO(z%POP'iaR'ia['iaj'ian'iar'ia!S'ia!l'ia!p'ia#R'ia#n'ia#o'ia#p'ia#q'ia#r'ia#s'ia#t'ia#u'ia#v'ia#x'ia#z'ia#{'ia$O'ia(a'ia(r'ia(y'ia!]'ia!^'ia~O!Q*OO'y*POP'kaR'ka['kaj'kan'kar'ka!S'ka!l'ka!p'ka#R'ka#n'ka#o'ka#p'ka#q'ka#r'ka#s'ka#t'ka#u'ka#v'ka#x'ka#z'ka#{'ka$O'ka(a'ka(r'ka(y'ka(z'ka!]'ka!^'ka~O(y$}OP%aiR%ai[%aij%ain%air%ai!Q%ai!S%ai!l%ai!p%ai#R%ai#n%ai#o%ai#p%ai#q%ai#r%ai#s%ai#t%ai#u%ai#v%ai#x%ai#z%ai#{%ai$O%ai'y%ai(a%ai(r%ai(z%ai!]%ai!^%ai~O(z%POP%ciR%ci[%cij%cin%cir%ci!Q%ci!S%ci!l%ci!p%ci#R%ci#n%ci#o%ci#p%ci#q%ci#r%ci#s%ci#t%ci#u%ci#v%ci#x%ci#z%ci#{%ci$O%ci'y%ci(a%ci(r%ci(y%ci!]%ci!^%ci~O$O$oy!]$oy!^$oy~P#BwO$O#cy!]#cy!^#cy~P#BwO!g#vO!]'eq!k'eq~O!]/pO!k)Oy~O!Y'gq!]'gq~P#/sOr:|O!g#vO(r'pO~O[;QO!Y;PO~P#/sO!Y;PO~Og(_!R!](_!R~P!1WOa%[y!_%[y'z%[y!]%[y~P#/sO!]1TO!^)Xy~O!]5uO!^)Uq~O(T;XO~O!_1oO%i;[O~O!k;_O~O%i;dO~P&8fOP$|qR$|q[$|qj$|qr$|q!S$|q!l$|q!p$|q#R$|q#n$|q#o$|q#p$|q#q$|q#r$|q#s$|q#t$|q#u$|q#v$|q#x$|q#z$|q#{$|q$O$|q(a$|q(r$|q!]$|q!^$|q~P''VO!Q*OO'y*PO(z%POP'jaR'ja['jaj'jan'jar'ja!S'ja!l'ja!p'ja#R'ja#n'ja#o'ja#p'ja#q'ja#r'ja#s'ja#t'ja#u'ja#v'ja#x'ja#z'ja#{'ja$O'ja(a'ja(r'ja(y'ja!]'ja!^'ja~O!Q*OO'y*POP'laR'la['laj'lan'lar'la!S'la!l'la!p'la#R'la#n'la#o'la#p'la#q'la#r'la#s'la#t'la#u'la#v'la#x'la#z'la#{'la$O'la(a'la(r'la(y'la(z'la!]'la!^'la~OP%OqR%Oq[%Oqj%Oqr%Oq!S%Oq!l%Oq!p%Oq#R%Oq#n%Oq#o%Oq#p%Oq#q%Oq#r%Oq#s%Oq#t%Oq#u%Oq#v%Oq#x%Oq#z%Oq#{%Oq$O%Oq(a%Oq(r%Oq!]%Oq!^%Oq~P''VOg%e!Z!]%e!Z#`%e!Z$O%e!Z~P!1WO!Y;hO~P#/sOr;iO!g#vO(r'pO~O[;kO!Y;hO~P#/sO!]'pq!^'pq~P#BwO!]#h!Z!^#h!Z~P#BwO#k%e!ZP%e!ZR%e!Z[%e!Za%e!Zj%e!Zr%e!Z!S%e!Z!]%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z'z%e!Z(a%e!Z(r%e!Z!k%e!Z!Y%e!Z'w%e!Z#`%e!Zv%e!Z!_%e!Z%i%e!Z!g%e!Z~P#/sOr;tO!g#vO(r'pO~O!Y;uO~P#/sOr;|O!g#vO(r'pO~O!Y;}O~P#/sOP%e!ZR%e!Z[%e!Zj%e!Zr%e!Z!S%e!Z!l%e!Z!p%e!Z#R%e!Z#n%e!Z#o%e!Z#p%e!Z#q%e!Z#r%e!Z#s%e!Z#t%e!Z#u%e!Z#v%e!Z#x%e!Z#z%e!Z#{%e!Z$O%e!Z(a%e!Z(r%e!Z!]%e!Z!^%e!Z~P''VOr<QO!g#vO(r'pO~Ov(fX~P1qO!Q%rO~P!)[O(U!lO~P!)[O!YfX!]fX#`fX~P%2OOP]XR]X[]Xj]Xr]X!Q]X!S]X!]]X!]fX!l]X!p]X#R]X#S]X#`]X#`fX#kfX#n]X#o]X#p]X#q]X#r]X#s]X#t]X#u]X#v]X#x]X#z]X#{]X$Q]X(a]X(r]X(y]X(z]X~O!gfX!k]X!kfX(rfX~P'LTOP<UOQ<UOSfOd>ROe!iOpkOr<UOskOtkOzkO|<UO!O<UO!SWO!WkO!XkO!_XO!i<XO!lZO!o<UO!p<UO!q<UO!s<YO!u<]O!x!hO$W!kO$n>PO(T)]O(VTO(YUO(aVO(o[O~O!]<iO!^$qa~Oh%VOp%WOr%XOs$tOt$tOz%YO|%ZO!O<tO!S${O!_$|O!i>WO!l$xO#j<zO$W%`O$t<vO$v<xO$y%aO(T(vO(VTO(YUO(a$uO(y$}O(z%PO~Ol)dO~P(!yOr!eX(r!eX~P#!iOr(jX(r(jX~P##[O!^]X!^fX~P'LTO!YfX!Y$zX!]fX!]$zX#`fX~P!0SO#k<^O~O!g#vO#k<^O~O#`<nO~Oj<bO~O#`=OO!](wX!^(wX~O#`<nO!](uX!^(uX~O#k=PO~Og=RO~P!1WO#k=XO~O#k=YO~Og=RO(T&ZO~O!g#vO#k=ZO~O!g#vO#k=PO~O$O=[O~P#BwO#k=]O~O#k=^O~O#k=cO~O#k=dO~O#k=eO~O#k=fO~O$O=gO~P!1WO$O=hO~P!1WOl=sO~P7eOk#S#T#U#W#X#[#i#j#u$n$t$v$y%]%^%h%i%j%q%s%v%w%y%{~(OT#o!X'|(U#ps#n#qr!Q'}$]'}(T$_(e~\",\n goto: \"$9Y)]PPPPPP)^PP)aP)rP+W/]PPPP6mPP7TPP=QPPP@tPA^PA^PPPA^PCfPA^PA^PA^PCjPCoPD^PIWPPPI[PPPPI[L_PPPLeMVPI[PI[PP! eI[PPPI[PI[P!#lI[P!'S!(X!(bP!)U!)Y!)U!,gPPPPPPP!-W!(XPP!-h!/YP!2iI[I[!2n!5z!:h!:h!>gPPP!>oI[PPPPPPPPP!BOP!C]PPI[!DnPI[PI[I[I[I[I[PI[!FQP!I[P!LbP!Lf!Lp!Lt!LtP!IXP!Lx!LxP#!OP#!SI[PI[#!Y#%_CjA^PA^PA^A^P#&lA^A^#)OA^#+vA^#.SA^A^#.r#1W#1W#1]#1f#1W#1qPP#1WPA^#2ZA^#6YA^A^6mPPP#:_PPP#:x#:xP#:xP#;`#:xPP#;fP#;]P#;]#;y#;]#<e#<k#<n)aP#<q)aP#<z#<z#<zP)aP)aP)aP)aPP)aP#=Q#=TP#=T)aP#=XP#=[P)aP)aP)aP)aP)aP)a)aPP#=b#=h#=s#=y#>P#>V#>]#>k#>q#>{#?R#?]#?c#?s#?y#@k#@}#AT#AZ#Ai#BO#Cs#DR#DY#Et#FS#Gt#HS#HY#H`#Hf#Hp#Hv#H|#IW#Ij#IpPPPPPPPPPPP#IvPPPPPPP#Jk#Mx$ b$ i$ qPPP$']P$'f$*_$0x$0{$1O$1}$2Q$2X$2aP$2g$2jP$3W$3[$4S$5b$5g$5}PP$6S$6Y$6^$6a$6e$6i$7e$7|$8e$8i$8l$8o$8y$8|$9Q$9UR!|RoqOXst!Z#d%m&r&t&u&w,s,x2[2_Y!vQ'`-e1o5{Q%tvQ%|yQ&T|Q&j!VS'W!e-]Q'f!iS'l!r!yU*k$|*Z*oQ+o%}S+|&V&WQ,d&dQ-c'_Q-m'gQ-u'mQ0[*qQ1b,OQ1y,eR<{<Y%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_S#q]<V!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU+P%]<s<tQ+t&PQ,f&gQ,m&oQ0x+gQ0}+iQ1Y+uQ2R,kQ3`.gQ5`0|Q5f1TQ6[1zQ7Y3dQ8`5gR9e7['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S!S!nQ!r!v!y!z$|'W'_'`'l'm'n*k*o*q*r-]-c-e-u0[0_1o5{5}%[$ti#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q&X|Q'U!eS'[%i-`Q+t&PQ,P&WQ,f&gQ0n+SQ1Y+uQ1_+{Q2Q,jQ2R,kQ5f1TQ5o1aQ6[1zQ6_1|Q6`2PQ8`5gQ8c5lQ8|6bQ:X8dQ:f8yQ;V:YR<}*ZrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R,h&k&z^OPXYstuvwz!Z!`!g!j!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'b'r(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>R>S[#]WZ#W#Z'X(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ%wxQ%{yW&Q|&V&W,OQ&_!TQ'c!hQ'e!iQ(q#sS+n%|%}Q+r&PQ,_&bQ,c&dS-l'f'gQ.i(rQ1R+oQ1X+uQ1Z+vQ1^+zQ1t,`S1x,d,eQ2|-mQ5e1TQ5i1WQ5n1`Q6Z1yQ8_5gQ8b5kQ8f5pQ:T8^R;T:U!U$zi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y!^%yy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{Q+h%wQ,T&[Q,W&]Q,b&dQ.h(qQ1s,_U1w,c,d,eQ3e.iQ6U1tS6Y1x1yQ8x6Z#f>T#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o>U<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hW%Ti%V*y>PS&[!Q&iQ&]!RQ&^!SU*}%[%d=sR,R&Y%]%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^T)z$u){V+P%]<s<tW'[!e%i*Z-`S(}#y#zQ+c%rQ+y&SS.b(m(nQ1j,XQ5T0kR8i5u'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S$i$^c#Y#e%q%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.|.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vT#TV#U'RkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ'Y!eR2q-]!W!nQ!e!r!v!y!z$|'W'_'`'l'm'n*Z*k*o*q*r-]-c-e-u0[0_1o5{5}R1l,ZnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&y!^Q'v!xS(s#u<^Q+l%zQ,]&_Q,^&aQ-j'dQ-w'oS.r(x=PS0q+X=ZQ1P+mQ1n,[Q2c,zQ2e,{Q2m-WQ2z-kQ2}-oS5Y0r=eQ5a1QS5d1S=fQ6t2oQ6x2{Q6}3SQ8]5bQ9Y6vQ9Z6yQ9^7OR:l9V$d$]c#Y#e%s%u(S(Y(t(y)R)S)T)U)V)W)X)Y)Z)[)^)`)b)g)q+d+x-Z-x-}.S.U.s.v.z.}/O/b0p2k2n3O3V3k3p3q3r3s3t3u3v3w3x3y3z3{3|4P4Q4X5X5c6u6{7Q7a7b7k7l8k9X9]9g9m9n:o;W;`<W=vS(o#p'iQ)P#zS+b%q.|S.c(n(pR3^.d'QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS#q]<VQ&t!XQ&u!YQ&w![Q&x!]R2Z,vQ'a!hQ+e%wQ-h'cS.e(q+hQ2x-gW3b.h.i0w0yQ6w2yW7U3_3a3e5^U9a7V7X7ZU:q9c9d9fS;b:p:sQ;p;cR;x;qU!wQ'`-eT5y1o5{!Q_OXZ`st!V!Z#d#h%e%m&i&k&r&t&u&w(j,s,x.[2[2_]!pQ!r'`-e1o5{T#q]<V%^{OPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S(}#y#zS.b(m(n!s=l$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SU$fd)_,mS(p#p'iU*v%R(w4OU0m+O.n7gQ5^0xQ7V3`Q9d7YR:s9em!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}Q't!uS(f#g2US-s'k'wQ/s*]Q0R*jQ3U-vQ4f/tQ4r0TQ4s0UQ4x0^Q7r4`S7}4t4vS8R4y4{Q9r7sQ9v7yQ9{8OQ:Q8TS:{9w9xS;g:|;PS;s;h;iS;{;t;uS<P;|;}R<S<QQ#wbQ's!uS(e#g2US(g#m+WQ+Y%fQ+j%xQ+p&OU-r'k't'wQ.W(fU/r*]*`/wQ0S*jQ0V*lQ1O+kQ1u,aS3R-s-vQ3Z.`S4e/s/tQ4n0PS4q0R0^Q4u0WQ6W1vQ7P3US7q4`4bQ7u4fU7|4r4x4{Q8P4wQ8v6XS9q7r7sQ9u7yQ9}8RQ:O8SQ:c8wQ:y9rS:z9v9xQ;S:QQ;^:dS;f:{;PS;r;g;hS;z;s;uS<O;{;}Q<R<PQ<T<SQ=o=jQ={=tR=|=uV!wQ'`-e%^aOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_S#wz!j!r=i$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=o>R%^bOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Q%fj!^%xy!i!u%{%|%}'V'e'f'g'k'u*j+n+o-Y-l-m-t0R0U1R2u2|3T4r4s4v7}9{S&Oz!jQ+k%yQ,a&dW1v,b,c,d,eU6X1w1x1yS8w6Y6ZQ:d8x!r=j$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ=t>QR=u>R%QeOPXYstuvw!Z!`!g!o#S#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_Y#bWZ#W#Z(T!b%jm#h#i#l$x%e%h(^(h(i(j*Y*^*b+Z+[+^,o-V.T.Z.[.]._/m/p2d3[3]4a6r7TQ,n&o!p=k$Z$n)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SR=n'XU']!e%i*ZR2s-`%SdOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+],p,s,x-i-q.P.V.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3l4z6T6e6f6i6|8t9T9_!r)_$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SQ,m&oQ0x+gQ3`.gQ7Y3dR9e7[!b$Tc#Y%q(S(Y(t(y)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!P<d)^)q-Z.|2k2n3p3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!f$Vc#Y%q(S(Y(t(y)W)X)Z)[)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<W!T<f)^)q-Z.|2k2n3p3v3w3y3z4P4X6u7b7k7l8k9X9g9m9n;W;`=v!^$Zc#Y%q(S(Y(t(y)`)g+x-x-}.S.U.s.v/b0p3O3V3k3{5X5c6{7Q7a9]:o<WQ4_/kz>S)^)q-Z.|2k2n3p4P4X6u7b7k7l8k9X9g9m9n;W;`=vQ>X>ZR>Y>['QkOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>SS$oh$pR4U/U'XgOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$kf$qQ$ifS)j$l)nR)v$qT$jf$qT)l$l)n'XhOPWXYZhstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$Z$_$a$e$n$p%m%t&R&k&n&o&r&t&u&w&{'T'X'b'r(T(V(](d(x(z)O)s)}*i+X+]+g,p,s,x-U-X-i-q.P.V.g.t.{/U/V/n0]0l0r1S1r2S2T2V2X2[2_2a2p3Q3W3d3l4T4z5w6T6e6f6i6s6|7[8t9T9_:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>ST$oh$pQ$rhR)u$p%^jOPWXYZstuvw!Z!`!g!o#S#W#Z#d#o#u#x#{$O$P$Q$R$S$T$U$V$W$X$_$a$e%m%t&R&k&n&o&r&t&u&w&{'T'b'r(T(V(](d(x(z)O)}*i+X+]+g,p,s,x-i-q.P.V.g.t.{/n0]0l0r1S1r2S2T2V2X2[2_2a3Q3W3d3l4z6T6e6f6i6|7[8t9T9_!s>Q$Z$n'X)s-U-X/V2p4T5w6s:Z:m<U<X<Y<]<^<_<`<a<b<c<d<e<f<g<h<i<k<n<{=O=P=R=Z=[=e=f>S#glOPXZst!Z!`!o#S#d#o#{$n%m&k&n&o&r&t&u&w&{'T'b)O)s*i+]+g,p,s,x-i.g/V/n0]0l1r2S2T2V2X2[2_2a3d4T4z6T6e6f6i7[8t9T!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^Q+T%aQ/c*Oo4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!U$yi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>YQ*c$zU*l$|*Z*oQ+U%bQ0W*m#f=q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n=r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hQ=w>TQ=x>UQ=y>VR=z>W!U%Ri$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y#f(w#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^o4O<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=hnoOXst!Z#d%m&r&t&u&w,s,x2[2_S*f${*YQ-R'OQ-S'QR4i/y%[%Si#v$b$c$d$x${%O%Q%^%_%c)y*R*T*V*Y*a*g*w*x+f+i,S,V.f/P/d/m/x/y/{0`0b0i0j0o1f1i1q3c4^4_4j4o5Q5[5_6S7W7v8Q8V8[8q9b9p9y:P:`:r;Q;[;d;k<l<m<o<p<q<r<u<v<w<x<y<z=S=T=U=V=X=Y=]=^=_=`=a=b=c=d=g=h>P>X>Y>]>^Q,U&]Q1h,WQ5s1gR8h5tV*n$|*Z*oU*n$|*Z*oT5z1o5{S0P*i/nQ4w0]T8S4z:]Q+j%xQ0V*lQ1O+kQ1u,aQ6W1vQ8v6XQ:c8wR;^:d!U%Oi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Yx*R$v)e*S*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>OS0`*t0a#f<o#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<p<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!d=S(u)c*[*e.j.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[`=T3}7c7f7j9h:t:w;yS=_.l3iT=`7e9k!U%Qi$d%O%Q%^%_%c*R*T*a*w*x/P/x0`0b0i0j0o4_5Q8V9p>P>X>Y|*T$v)e*U*t+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>OS0b*u0c#f<q#v$b$c$x${)y*V*Y*g+f+i,S,V.f/d/m/y/{1f1i1q3c4^4j4o5[5_6S7W7v8Q8[8q9b9y:P:`:r;Q;[;d;k<o<q<u<w<y=S=U=X=]=_=a=c=g>]>^n<r<l<m<p<r<v<x<z=T=V=Y=^=`=b=d=h!h=U(u)c*[*e.k.l.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[d=V3}7d7e7j9h9i:t:u:w;yS=a.m3jT=b7f9lrnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q&f!UR,p&ornOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_R&f!UQ,Y&^R1d,RsnOXst!V!Z#d%m&i&r&t&u&w,s,x2[2_Q1p,_S6R1s1tU8p6P6Q6US:_8r8sS;Y:^:aQ;m;ZR;w;nQ&m!VR,i&iR6_1|R:f8yW&Q|&V&W,OR1Z+vQ&r!WR,s&sR,y&xT2],x2_R,}&yQ,|&yR2f,}Q'y!{R-y'ySsOtQ#dXT%ps#dQ#OTR'{#OQ#RUR'}#RQ){$uR/`){Q#UVR(Q#UQ#XWU(W#X(X.QQ(X#YR.Q(YQ-^'YR2r-^Q.u(yS3m.u3nR3n.vQ-e'`R2v-eY!rQ'`-e1o5{R'j!rQ/Q)eR4S/QU#_W%h*YU(_#_(`.RQ(`#`R.R(ZQ-a']R2t-at`OXst!V!Z#d%m&i&k&r&t&u&w,s,x2[2_S#hZ%eU#r`#h.[R.[(jQ(k#jQ.X(gW.a(k.X3X7RQ3X.YR7R3YQ)n$lR/W)nQ$phR)t$pQ$`cU)a$`-|<jQ-|<WR<j)qQ/q*]W4c/q4d7t9sU4d/r/s/tS7t4e4fR9s7u$e*Q$v(u)c)e*[*e*t*u+Q+R+V.l.m.o.p.q/_/g/i/k/v/|0d0e0v1e3f3g3h3}4R4[4g4h4l4|5O5R5S5W5r7]7^7_7`7e7f7h7i7j7p7w7z8U8X8Z9h9i9j9t9|:R:S:t:u:v:w:x:};R;e;j;v;y=p=}>O>Z>[Q/z*eU4k/z4m7xQ4m/|R7x4lS*o$|*ZR0Y*ox*S$v)e*t*u+V/v0d0e4R4g5R5S5W7p8U:R:x=p=}>O!d.j(u)c*[*e.l.m.q/_/k/|0v1e3h4[4h4l5r7]7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/h*S.j7ca7c3}7e7f7j9h:t:w;yQ0a*tQ3i.lU4}0a3i9kR9k7e|*U$v)e*t*u+V/g/v0d0e4R4g4|5R5S5W7p8U:R:x=p=}>O!h.k(u)c*[*e.l.m.q/_/k/|0v1e3f3h4[4h4l5r7]7^7`7w7z8X8Z9t9|:S:};R;e;j;v>Z>[U/j*U.k7de7d3}7e7f7j9h9i:t:u:w;yQ0c*uQ3j.mU5P0c3j9lR9l7fQ*z%UR0g*zQ5]0vR8Y5]Q+_%kR0u+_Q5v1jS8j5v:[R:[8kQ,[&_R1m,[Q5{1oR8m5{Q1{,fS6]1{8zR8z6_Q1U+rW5h1U5j8a:VQ5j1XQ8a5iR:V8bQ+w&QR1[+wQ2_,xR6m2_YrOXst#dQ&v!ZQ+a%mQ,r&rQ,t&tQ,u&uQ,w&wQ2Y,sS2],x2_R6l2[Q%opQ&z!_Q&}!aQ'P!bQ'R!cQ'q!uQ+`%lQ+l%zQ,Q&XQ,h&mQ-P&|W-p'k's't'wQ-w'oQ0X*nQ1P+mQ1c,PS2O,i,lQ2g-OQ2h-RQ2i-SQ2}-oW3P-r-s-v-xQ5a1QQ5m1_Q5q1eQ6V1uQ6a2QQ6k2ZU6z3O3R3UQ6}3SQ8]5bQ8e5oQ8g5rQ8l5zQ8u6WQ8{6`S9[6{7PQ9^7OQ:W8cQ:b8vQ:g8|Q:n9]Q;U:XQ;]:cQ;a:oQ;l;VR;o;^Q%zyQ'd!iQ'o!uU+m%{%|%}Q-W'VU-k'e'f'gS-o'k'uQ0Q*jS1Q+n+oQ2o-YS2{-l-mQ3S-tS4p0R0UQ5b1RQ6v2uQ6y2|Q7O3TU7{4r4s4vQ9z7}R;O9{S$wi>PR*{%VU%Ui%V>PR0f*yQ$viS(u#v+iS)c$b$cQ)e$dQ*[$xS*e${*YQ*t%OQ*u%QQ+Q%^Q+R%_Q+V%cQ.l<oQ.m<qQ.o<uQ.p<wQ.q<yQ/_)yQ/g*RQ/i*TQ/k*VQ/v*aS/|*g/mQ0d*wQ0e*xl0v+f,V.f1i1q3c6S7W8q9b:`:r;[;dQ1e,SQ3f=SQ3g=UQ3h=XS3}<l<mQ4R/PS4[/d4^Q4g/xQ4h/yQ4l/{Q4|0`Q5O0bQ5R0iQ5S0jQ5W0oQ5r1fQ7]=]Q7^=_Q7_=aQ7`=cQ7e<pQ7f<rQ7h<vQ7i<xQ7j<zQ7p4_Q7w4jQ7z4oQ8U5QQ8X5[Q8Z5_Q9h=YQ9i=TQ9j=VQ9t7vQ9|8QQ:R8VQ:S8[Q:t=^Q:u=`Q:v=bQ:w=dQ:x9pQ:}9yQ;R:PQ;e=gQ;j;QQ;v;kQ;y=hQ=p>PQ=}>XQ>O>YQ>Z>]R>[>^Q+O%]Q.n<sR7g<tnpOXst!Z#d%m&r&t&u&w,s,x2[2_Q!fPS#fZ#oQ&|!`W'h!o*i0]4zQ(P#SQ)Q#{Q)r$nS,l&k&nQ,q&oQ-O&{S-T'T/nQ-g'bQ.x)OQ/[)sQ0s+]Q0y+gQ2W,pQ2y-iQ3a.gQ4W/VQ5U0lQ6Q1rQ6c2SQ6d2TQ6h2VQ6j2XQ6o2aQ7Z3dQ7m4TQ8s6TQ9P6eQ9Q6fQ9S6iQ9f7[Q:a8tR:k9T#[cOPXZst!Z!`!o#d#o#{%m&k&n&o&r&t&u&w&{'T'b)O*i+]+g,p,s,x-i.g/n0]0l1r2S2T2V2X2[2_2a3d4z6T6e6f6i7[8t9TQ#YWQ#eYQ%quQ%svS%uw!gS(S#W(VQ(Y#ZQ(t#uQ(y#xQ)R$OQ)S$PQ)T$QQ)U$RQ)V$SQ)W$TQ)X$UQ)Y$VQ)Z$WQ)[$XQ)^$ZQ)`$_Q)b$aQ)g$eW)q$n)s/V4TQ+d%tQ+x&RS-Z'X2pQ-x'rS-}(T.PQ.S(]Q.U(dQ.s(xQ.v(zQ.z<UQ.|<XQ.}<YQ/O<]Q/b)}Q0p+XQ2k-UQ2n-XQ3O-qQ3V.VQ3k.tQ3p<^Q3q<_Q3r<`Q3s<aQ3t<bQ3u<cQ3v<dQ3w<eQ3x<fQ3y<gQ3z<hQ3{.{Q3|<kQ4P<nQ4Q<{Q4X<iQ5X0rQ5c1SQ6u=OQ6{3QQ7Q3WQ7a3lQ7b=PQ7k=RQ7l=ZQ8k5wQ9X6sQ9]6|Q9g=[Q9m=eQ9n=fQ:o9_Q;W:ZQ;`:mQ<W#SR=v>SR#[WR'Z!el!tQ!r!v!y!z'`'l'm'n-e-u1o5{5}S'V!e-]U*j$|*Z*oS-Y'W'_S0U*k*qQ0^*rQ2u-cQ4v0[R4{0_R({#xQ!fQT-d'`-e]!qQ!r'`-e1o5{Q#p]R'i<VR)f$dY!uQ'`-e1o5{Q'k!rS'u!v!yS'w!z5}S-t'l'mQ-v'nR3T-uT#kZ%eS#jZ%eS%km,oU(g#h#i#lS.Y(h(iQ.^(jQ0t+^Q3Y.ZU3Z.[.]._S7S3[3]R9`7Td#^W#W#Z%h(T(^*Y+Z.T/mr#gZm#h#i#l%e(h(i(j+^.Z.[.]._3[3]7TS*]$x*bQ/t*^Q2U,oQ2l-VQ4`/pQ6q2dQ7s4aQ9W6rT=m'X+[V#aW%h*YU#`W%h*YS(U#W(^U(Z#Z+Z/mS-['X+[T.O(T.TV'^!e%i*ZQ$lfR)x$qT)m$l)nR4V/UT*_$x*bT*h${*YQ0w+fQ1g,VQ3_.fQ5t1iQ6P1qQ7X3cQ8r6SQ9c7WQ:^8qQ:p9bQ;Z:`Q;c:rQ;n;[R;q;dnqOXst!Z#d%m&r&t&u&w,s,x2[2_Q&l!VR,h&itmOXst!U!V!Z#d%m&i&r&t&u&w,s,x2[2_R,o&oT%lm,oR1k,XR,g&gQ&U|S+}&V&WR1^,OR+s&PT&p!W&sT&q!W&sT2^,x2_\",\n nodeNames: \"⚠ ArithOp ArithOp ?. JSXStartTag LineComment BlockComment Script Hashbang ExportDeclaration export Star as VariableName String Escape from ; default FunctionDeclaration async function VariableDefinition > < TypeParamList in out const TypeDefinition extends ThisType this LiteralType ArithOp Number BooleanLiteral TemplateType InterpolationEnd Interpolation InterpolationStart NullType null VoidType void TypeofType typeof MemberExpression . PropertyName [ TemplateString Escape Interpolation super RegExp ] ArrayExpression Spread , } { ObjectExpression Property async get set PropertyDefinition Block : NewTarget new NewExpression ) ( ArgList UnaryExpression delete LogicOp BitOp YieldExpression yield AwaitExpression await ParenthesizedExpression ClassExpression class ClassBody MethodDeclaration Decorator @ MemberExpression PrivatePropertyName CallExpression TypeArgList CompareOp < declare Privacy static abstract override PrivatePropertyDefinition PropertyDeclaration readonly accessor Optional TypeAnnotation Equals StaticBlock FunctionExpression ArrowFunction ParamList ParamList ArrayPattern ObjectPattern PatternProperty Privacy readonly Arrow MemberExpression BinaryExpression ArithOp ArithOp ArithOp ArithOp BitOp CompareOp instanceof satisfies CompareOp BitOp BitOp BitOp LogicOp LogicOp ConditionalExpression LogicOp LogicOp AssignmentExpression UpdateOp PostfixExpression CallExpression InstantiationExpression TaggedTemplateExpression DynamicImport import ImportMeta JSXElement JSXSelfCloseEndTag JSXSelfClosingTag JSXIdentifier JSXBuiltin JSXIdentifier JSXNamespacedName JSXMemberExpression JSXSpreadAttribute JSXAttribute JSXAttributeValue JSXEscape JSXEndTag JSXOpenTag JSXFragmentTag JSXText JSXEscape JSXStartCloseTag JSXCloseTag PrefixCast < ArrowFunction TypeParamList SequenceExpression InstantiationExpression KeyofType keyof UniqueType unique ImportType InferredType infer TypeName ParenthesizedType FunctionSignature ParamList NewSignature IndexedType TupleType Label ArrayType ReadonlyType ObjectType MethodType PropertyType IndexSignature PropertyDefinition CallSignature TypePredicate asserts is NewSignature new UnionType LogicOp IntersectionType LogicOp ConditionalType ParameterizedType ClassDeclaration abstract implements type VariableDeclaration let var using TypeAliasDeclaration InterfaceDeclaration interface EnumDeclaration enum EnumBody NamespaceDeclaration namespace module AmbientDeclaration declare GlobalDeclaration global ClassDeclaration ClassBody AmbientFunctionDeclaration ExportGroup VariableName VariableName ImportDeclaration defer ImportGroup ForStatement for ForSpec ForInSpec ForOfSpec of WhileStatement while WithStatement with DoStatement do IfStatement if else SwitchStatement switch SwitchBody CaseLabel case DefaultLabel TryStatement try CatchClause catch FinallyClause finally ReturnStatement return ThrowStatement throw BreakStatement break ContinueStatement continue DebuggerStatement debugger LabeledStatement ExpressionStatement SingleExpression SingleClassItem\",\n maxTerm: 380,\n context: trackNewline,\n nodeProps: [\n [\"isolate\", -8,5,6,14,37,39,51,53,55,\"\"],\n [\"group\", -26,9,17,19,68,207,211,215,216,218,221,224,234,237,243,245,247,249,252,258,264,266,268,270,272,274,275,\"Statement\",-34,13,14,32,35,36,42,51,54,55,57,62,70,72,76,80,82,84,85,110,111,120,121,136,139,141,142,143,144,145,147,148,167,169,171,\"Expression\",-23,31,33,37,41,43,45,173,175,177,178,180,181,182,184,185,186,188,189,190,201,203,205,206,\"Type\",-3,88,103,109,\"ClassItem\"],\n [\"openedBy\", 23,\"<\",38,\"InterpolationStart\",56,\"[\",60,\"{\",73,\"(\",160,\"JSXStartCloseTag\"],\n [\"closedBy\", -2,24,168,\">\",40,\"InterpolationEnd\",50,\"]\",61,\"}\",74,\")\",165,\"JSXEndTag\"]\n ],\n propSources: [jsHighlight],\n skippedNodes: [0,5,6,278],\n repeatNodeCount: 37,\n tokenData: \"$Fq07[R!bOX%ZXY+gYZ-yZ[+g[]%Z]^.c^p%Zpq+gqr/mrs3cst:_tuEruvJSvwLkwx! Yxy!'iyz!(sz{!)}{|!,q|}!.O}!O!,q!O!P!/Y!P!Q!9j!Q!R#:O!R![#<_![!]#I_!]!^#Jk!^!_#Ku!_!`$![!`!a$$v!a!b$*T!b!c$,r!c!}Er!}#O$-|#O#P$/W#P#Q$4o#Q#R$5y#R#SEr#S#T$7W#T#o$8b#o#p$<r#p#q$=h#q#r$>x#r#s$@U#s$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$I|Er$I|$I}$Dk$I}$JO$Dk$JO$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr(n%d_$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z&j&hT$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c&j&zP;=`<%l&c'|'U]$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!b(SU(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!b(iP;=`<%l'}'|(oP;=`<%l&}'[(y]$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(rp)wU(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)rp*^P;=`<%l)r'[*dP;=`<%l(r#S*nX(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g#S+^P;=`<%l*g(n+dP;=`<%l%Z07[+rq$i&j(Wp(Z!b'|0/lOX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p$f%Z$f$g+g$g#BY%Z#BY#BZ+g#BZ$IS%Z$IS$I_+g$I_$JT%Z$JT$JU+g$JU$KV%Z$KV$KW+g$KW&FU%Z&FU&FV+g&FV;'S%Z;'S;=`+a<%l?HT%Z?HT?HU+g?HUO%Z07[.ST(X#S$i&j'}0/lO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c07[.n_$i&j(Wp(Z!b'}0/lOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)3p/x`$i&j!p),Q(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW1V`#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`2X!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW2d_#v(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At3l_(V':f$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k(^4r_$i&j(Z!bOY4kYZ5qZr4krs7nsw4kwx5qx!^4k!^!_8p!_#O4k#O#P5q#P#o4k#o#p8p#p;'S4k;'S;=`:X<%lO4k&z5vX$i&jOr5qrs6cs!^5q!^!_6y!_#o5q#o#p6y#p;'S5q;'S;=`7h<%lO5q&z6jT$d`$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c`6|TOr6yrs7]s;'S6y;'S;=`7b<%lO6y`7bO$d``7eP;=`<%l6y&z7kP;=`<%l5q(^7w]$d`$i&j(Z!bOY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}!r8uZ(Z!bOY8pYZ6yZr8prs9hsw8pwx6yx#O8p#O#P6y#P;'S8p;'S;=`:R<%lO8p!r9oU$d`(Z!bOY'}Zw'}x#O'}#P;'S'};'S;=`(f<%lO'}!r:UP;=`<%l8p(^:[P;=`<%l4k%9[:hh$i&j(Wp(Z!bOY%ZYZ&cZq%Zqr<Srs&}st%ZtuCruw%Zwx(rx!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr(r<__WS$i&j(Wp(Z!bOY<SYZ&cZr<Srs=^sw<Swx@nx!^<S!^!_Bm!_#O<S#O#P>`#P#o<S#o#pBm#p;'S<S;'S;=`Cl<%lO<S(Q=g]WS$i&j(Z!bOY=^YZ&cZw=^wx>`x!^=^!^!_?q!_#O=^#O#P>`#P#o=^#o#p?q#p;'S=^;'S;=`@h<%lO=^&n>gXWS$i&jOY>`YZ&cZ!^>`!^!_?S!_#o>`#o#p?S#p;'S>`;'S;=`?k<%lO>`S?XSWSOY?SZ;'S?S;'S;=`?e<%lO?SS?hP;=`<%l?S&n?nP;=`<%l>`!f?xWWS(Z!bOY?qZw?qwx?Sx#O?q#O#P?S#P;'S?q;'S;=`@b<%lO?q!f@eP;=`<%l?q(Q@kP;=`<%l=^'`@w]WS$i&j(WpOY@nYZ&cZr@nrs>`s!^@n!^!_Ap!_#O@n#O#P>`#P#o@n#o#pAp#p;'S@n;'S;=`Bg<%lO@ntAwWWS(WpOYApZrAprs?Ss#OAp#O#P?S#P;'SAp;'S;=`Ba<%lOAptBdP;=`<%lAp'`BjP;=`<%l@n#WBvYWS(Wp(Z!bOYBmZrBmrs?qswBmwxApx#OBm#O#P?S#P;'SBm;'S;=`Cf<%lOBm#WCiP;=`<%lBm(rCoP;=`<%l<S%9[C}i$i&j(o%1l(Wp(Z!bOY%ZYZ&cZr%Zrs&}st%ZtuCruw%Zwx(rx!Q%Z!Q![Cr![!^%Z!^!_*g!_!c%Z!c!}Cr!}#O%Z#O#P&c#P#R%Z#R#SCr#S#T%Z#T#oCr#o#p*g#p$g%Z$g;'SCr;'S;=`El<%lOCr%9[EoP;=`<%lCr07[FRk$i&j(Wp(Z!b$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr+dHRk$i&j(Wp(Z!b$]#tOY%ZYZ&cZr%Zrs&}st%ZtuGvuw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Gv![!^%Z!^!_*g!_!c%Z!c!}Gv!}#O%Z#O#P&c#P#R%Z#R#SGv#S#T%Z#T#oGv#o#p*g#p$g%Z$g;'SGv;'S;=`Iv<%lOGv+dIyP;=`<%lGv07[JPP;=`<%lEr(KWJ_`$i&j(Wp(Z!b#p(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWKl_$i&j$Q(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,#xLva(z+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sv%ZvwM{wx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KWNW`$i&j#z(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'At! c_(Y';W$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b'l!!i_$i&j(WpOY!!bYZ!#hZr!!brs!#hsw!!bwx!$xx!^!!b!^!_!%z!_#O!!b#O#P!#h#P#o!!b#o#p!%z#p;'S!!b;'S;=`!'c<%lO!!b&z!#mX$i&jOw!#hwx6cx!^!#h!^!_!$Y!_#o!#h#o#p!$Y#p;'S!#h;'S;=`!$r<%lO!#h`!$]TOw!$Ywx7]x;'S!$Y;'S;=`!$l<%lO!$Y`!$oP;=`<%l!$Y&z!$uP;=`<%l!#h'l!%R]$d`$i&j(WpOY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r!Q!&PZ(WpOY!%zYZ!$YZr!%zrs!$Ysw!%zwx!&rx#O!%z#O#P!$Y#P;'S!%z;'S;=`!']<%lO!%z!Q!&yU$d`(WpOY)rZr)rs#O)r#P;'S)r;'S;=`*Z<%lO)r!Q!'`P;=`<%l!%z'l!'fP;=`<%l!!b/5|!'t_!l/.^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#&U!)O_!k!Lf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z-!n!*[b$i&j(Wp(Z!b(U%&f#q(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rxz%Zz{!+d{!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW!+o`$i&j(Wp(Z!b#n(ChOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;x!,|`$i&j(Wp(Z!br+4YOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z,$U!.Z_!]+Jf$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!/ec$i&j(Wp(Z!b!Q.2^OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!0p!P!Q%Z!Q![!3Y![!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!0ya$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!2O!P!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z#%|!2Z_![!L^$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!3eg$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!3Y![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S!3Y#S#X%Z#X#Y!4|#Y#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!5Vg$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx{%Z{|!6n|}%Z}!O!6n!O!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!6wc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad!8_c$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![!8S![!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S!8S#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[!9uf$i&j(Wp(Z!b#o(ChOY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcxz!;Zz{#-}{!P!;Z!P!Q#/d!Q!^!;Z!^!_#(i!_!`#7S!`!a#8i!a!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z?O!;fb$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z>^!<w`$i&j(Z!b!X7`OY!<nYZ&cZw!<nwx!=yx!P!<n!P!Q!Eq!Q!^!<n!^!_!Gr!_!}!<n!}#O!KS#O#P!Dy#P#o!<n#o#p!Gr#p;'S!<n;'S;=`!L]<%lO!<n<z!>Q^$i&j!X7`OY!=yYZ&cZ!P!=y!P!Q!>|!Q!^!=y!^!_!@c!_!}!=y!}#O!CW#O#P!Dy#P#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!?Td$i&j!X7`O!^&c!_#W&c#W#X!>|#X#Z&c#Z#[!>|#[#]&c#]#^!>|#^#a&c#a#b!>|#b#g&c#g#h!>|#h#i&c#i#j!>|#j#k!>|#k#m&c#m#n!>|#n#o&c#p;'S&c;'S;=`&w<%lO&c7`!@hX!X7`OY!@cZ!P!@c!P!Q!AT!Q!}!@c!}#O!Ar#O#P!Bq#P;'S!@c;'S;=`!CQ<%lO!@c7`!AYW!X7`#W#X!AT#Z#[!AT#]#^!AT#a#b!AT#g#h!AT#i#j!AT#j#k!AT#m#n!AT7`!AuVOY!ArZ#O!Ar#O#P!B[#P#Q!@c#Q;'S!Ar;'S;=`!Bk<%lO!Ar7`!B_SOY!ArZ;'S!Ar;'S;=`!Bk<%lO!Ar7`!BnP;=`<%l!Ar7`!BtSOY!@cZ;'S!@c;'S;=`!CQ<%lO!@c7`!CTP;=`<%l!@c<z!C][$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#O!CW#O#P!DR#P#Q!=y#Q#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DWX$i&jOY!CWYZ&cZ!^!CW!^!_!Ar!_#o!CW#o#p!Ar#p;'S!CW;'S;=`!Ds<%lO!CW<z!DvP;=`<%l!CW<z!EOX$i&jOY!=yYZ&cZ!^!=y!^!_!@c!_#o!=y#o#p!@c#p;'S!=y;'S;=`!Ek<%lO!=y<z!EnP;=`<%l!=y>^!Ezl$i&j(Z!b!X7`OY&}YZ&cZw&}wx&cx!^&}!^!_'}!_#O&}#O#P&c#P#W&}#W#X!Eq#X#Z&}#Z#[!Eq#[#]&}#]#^!Eq#^#a&}#a#b!Eq#b#g&}#g#h!Eq#h#i&}#i#j!Eq#j#k!Eq#k#m&}#m#n!Eq#n#o&}#o#p'}#p;'S&};'S;=`(l<%lO&}8r!GyZ(Z!b!X7`OY!GrZw!Grwx!@cx!P!Gr!P!Q!Hl!Q!}!Gr!}#O!JU#O#P!Bq#P;'S!Gr;'S;=`!J|<%lO!Gr8r!Hse(Z!b!X7`OY'}Zw'}x#O'}#P#W'}#W#X!Hl#X#Z'}#Z#[!Hl#[#]'}#]#^!Hl#^#a'}#a#b!Hl#b#g'}#g#h!Hl#h#i'}#i#j!Hl#j#k!Hl#k#m'}#m#n!Hl#n;'S'};'S;=`(f<%lO'}8r!JZX(Z!bOY!JUZw!JUwx!Arx#O!JU#O#P!B[#P#Q!Gr#Q;'S!JU;'S;=`!Jv<%lO!JU8r!JyP;=`<%l!JU8r!KPP;=`<%l!Gr>^!KZ^$i&j(Z!bOY!KSYZ&cZw!KSwx!CWx!^!KS!^!_!JU!_#O!KS#O#P!DR#P#Q!<n#Q#o!KS#o#p!JU#p;'S!KS;'S;=`!LV<%lO!KS>^!LYP;=`<%l!KS>^!L`P;=`<%l!<n=l!Ll`$i&j(Wp!X7`OY!LcYZ&cZr!Lcrs!=ys!P!Lc!P!Q!Mn!Q!^!Lc!^!_# o!_!}!Lc!}#O#%P#O#P!Dy#P#o!Lc#o#p# o#p;'S!Lc;'S;=`#&Y<%lO!Lc=l!Mwl$i&j(Wp!X7`OY(rYZ&cZr(rrs&cs!^(r!^!_)r!_#O(r#O#P&c#P#W(r#W#X!Mn#X#Z(r#Z#[!Mn#[#](r#]#^!Mn#^#a(r#a#b!Mn#b#g(r#g#h!Mn#h#i(r#i#j!Mn#j#k!Mn#k#m(r#m#n!Mn#n#o(r#o#p)r#p;'S(r;'S;=`*a<%lO(r8Q# vZ(Wp!X7`OY# oZr# ors!@cs!P# o!P!Q#!i!Q!}# o!}#O#$R#O#P!Bq#P;'S# o;'S;=`#$y<%lO# o8Q#!pe(Wp!X7`OY)rZr)rs#O)r#P#W)r#W#X#!i#X#Z)r#Z#[#!i#[#])r#]#^#!i#^#a)r#a#b#!i#b#g)r#g#h#!i#h#i)r#i#j#!i#j#k#!i#k#m)r#m#n#!i#n;'S)r;'S;=`*Z<%lO)r8Q#$WX(WpOY#$RZr#$Rrs!Ars#O#$R#O#P!B[#P#Q# o#Q;'S#$R;'S;=`#$s<%lO#$R8Q#$vP;=`<%l#$R8Q#$|P;=`<%l# o=l#%W^$i&j(WpOY#%PYZ&cZr#%Prs!CWs!^#%P!^!_#$R!_#O#%P#O#P!DR#P#Q!Lc#Q#o#%P#o#p#$R#p;'S#%P;'S;=`#&S<%lO#%P=l#&VP;=`<%l#%P=l#&]P;=`<%l!Lc?O#&kn$i&j(Wp(Z!b!X7`OY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#W%Z#W#X#&`#X#Z%Z#Z#[#&`#[#]%Z#]#^#&`#^#a%Z#a#b#&`#b#g%Z#g#h#&`#h#i%Z#i#j#&`#j#k#&`#k#m%Z#m#n#&`#n#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z9d#(r](Wp(Z!b!X7`OY#(iZr#(irs!Grsw#(iwx# ox!P#(i!P!Q#)k!Q!}#(i!}#O#+`#O#P!Bq#P;'S#(i;'S;=`#,`<%lO#(i9d#)th(Wp(Z!b!X7`OY*gZr*grs'}sw*gwx)rx#O*g#P#W*g#W#X#)k#X#Z*g#Z#[#)k#[#]*g#]#^#)k#^#a*g#a#b#)k#b#g*g#g#h#)k#h#i*g#i#j#)k#j#k#)k#k#m*g#m#n#)k#n;'S*g;'S;=`+Z<%lO*g9d#+gZ(Wp(Z!bOY#+`Zr#+`rs!JUsw#+`wx#$Rx#O#+`#O#P!B[#P#Q#(i#Q;'S#+`;'S;=`#,Y<%lO#+`9d#,]P;=`<%l#+`9d#,cP;=`<%l#(i?O#,o`$i&j(Wp(Z!bOY#,fYZ&cZr#,frs!KSsw#,fwx#%Px!^#,f!^!_#+`!_#O#,f#O#P!DR#P#Q!;Z#Q#o#,f#o#p#+`#p;'S#,f;'S;=`#-q<%lO#,f?O#-tP;=`<%l#,f?O#-zP;=`<%l!;Z07[#.[b$i&j(Wp(Z!b(O0/l!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z07[#/o_$i&j(Wp(Z!bT0/lOY#/dYZ&cZr#/drs#0nsw#/dwx#4Ox!^#/d!^!_#5}!_#O#/d#O#P#1p#P#o#/d#o#p#5}#p;'S#/d;'S;=`#6|<%lO#/d06j#0w]$i&j(Z!bT0/lOY#0nYZ&cZw#0nwx#1px!^#0n!^!_#3R!_#O#0n#O#P#1p#P#o#0n#o#p#3R#p;'S#0n;'S;=`#3x<%lO#0n05W#1wX$i&jT0/lOY#1pYZ&cZ!^#1p!^!_#2d!_#o#1p#o#p#2d#p;'S#1p;'S;=`#2{<%lO#1p0/l#2iST0/lOY#2dZ;'S#2d;'S;=`#2u<%lO#2d0/l#2xP;=`<%l#2d05W#3OP;=`<%l#1p01O#3YW(Z!bT0/lOY#3RZw#3Rwx#2dx#O#3R#O#P#2d#P;'S#3R;'S;=`#3r<%lO#3R01O#3uP;=`<%l#3R06j#3{P;=`<%l#0n05x#4X]$i&j(WpT0/lOY#4OYZ&cZr#4Ors#1ps!^#4O!^!_#5Q!_#O#4O#O#P#1p#P#o#4O#o#p#5Q#p;'S#4O;'S;=`#5w<%lO#4O00^#5XW(WpT0/lOY#5QZr#5Qrs#2ds#O#5Q#O#P#2d#P;'S#5Q;'S;=`#5q<%lO#5Q00^#5tP;=`<%l#5Q05x#5zP;=`<%l#4O01p#6WY(Wp(Z!bT0/lOY#5}Zr#5}rs#3Rsw#5}wx#5Qx#O#5}#O#P#2d#P;'S#5};'S;=`#6v<%lO#5}01p#6yP;=`<%l#5}07[#7PP;=`<%l#/d)3h#7ab$i&j$Q(Ch(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;ZAt#8vb$Z#t$i&j(Wp(Z!b!X7`OY!;ZYZ&cZr!;Zrs!<nsw!;Zwx!Lcx!P!;Z!P!Q#&`!Q!^!;Z!^!_#(i!_!}!;Z!}#O#,f#O#P!Dy#P#o!;Z#o#p#(i#p;'S!;Z;'S;=`#-w<%lO!;Z'Ad#:Zp$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#U%Z#U#V#?i#V#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#d#Bq#d#l%Z#l#m#Es#m#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#<jk$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!O%Z!O!P!3Y!P!Q%Z!Q![#<_![!^%Z!^!_*g!_!g%Z!g!h!4|!h#O%Z#O#P&c#P#R%Z#R#S#<_#S#X%Z#X#Y!4|#Y#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#>j_$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#?rd$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#A]f$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!R#AQ!R!S#AQ!S!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#AQ#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Bzc$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Dbe$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q!Y#DV!Y!^%Z!^!_*g!_#O%Z#O#P&c#P#R%Z#R#S#DV#S#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#E|g$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z'Ad#Gpi$i&j(Wp(Z!bs'9tOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!Q%Z!Q![#Ge![!^%Z!^!_*g!_!c%Z!c!i#Ge!i#O%Z#O#P&c#P#R%Z#R#S#Ge#S#T%Z#T#Z#Ge#Z#b%Z#b#c#>_#c#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x#Il_!g$b$i&j$O)Lv(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z)[#Jv_al$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f#LS^h#)`#R-<U(Wp(Z!b$n7`OY*gZr*grs'}sw*gwx)rx!P*g!P!Q#MO!Q!^*g!^!_#Mt!_!`$ f!`#O*g#P;'S*g;'S;=`+Z<%lO*g(n#MXX$k&j(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El#M}Z#r(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx!_*g!_!`#Np!`#O*g#P;'S*g;'S;=`+Z<%lO*g(El#NyX$Q(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g(El$ oX#s(Ch(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g*)x$!ga#`*!Y$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`0z!`!a$#l!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(K[$#w_#k(Cl$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z*)x$%Vag!*r#s(Ch$f#|$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`$&[!`!a$'f!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$&g_#s(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$'qa#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`!a$(v!a#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$)R`#r(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(Kd$*`a(r(Ct$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!a%Z!a!b$+e!b#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$+p`$i&j#{(Ch(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z%#`$,}_!|$Ip$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z04f$.X_!S0,v$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(n$/]Z$i&jO!^$0O!^!_$0f!_#i$0O#i#j$0k#j#l$0O#l#m$2^#m#o$0O#o#p$0f#p;'S$0O;'S;=`$4i<%lO$0O(n$0VT_#S$i&jO!^&c!_#o&c#p;'S&c;'S;=`&w<%lO&c#S$0kO_#S(n$0p[$i&jO!Q&c!Q![$1f![!^&c!_!c&c!c!i$1f!i#T&c#T#Z$1f#Z#o&c#o#p$3|#p;'S&c;'S;=`&w<%lO&c(n$1kZ$i&jO!Q&c!Q![$2^![!^&c!_!c&c!c!i$2^!i#T&c#T#Z$2^#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$2cZ$i&jO!Q&c!Q![$3U![!^&c!_!c&c!c!i$3U!i#T&c#T#Z$3U#Z#o&c#p;'S&c;'S;=`&w<%lO&c(n$3ZZ$i&jO!Q&c!Q![$0O![!^&c!_!c&c!c!i$0O!i#T&c#T#Z$0O#Z#o&c#p;'S&c;'S;=`&w<%lO&c#S$4PR!Q![$4Y!c!i$4Y#T#Z$4Y#S$4]S!Q![$4Y!c!i$4Y#T#Z$4Y#q#r$0f(n$4lP;=`<%l$0O#1[$4z_!Y#)l$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z(KW$6U`#x(Ch$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z+;p$7c_$i&j(Wp(Z!b(a+4QOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$8qk$i&j(Wp(Z!b(T,2j$_#t(e$I[OY%ZYZ&cZr%Zrs&}st%Ztu$8buw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$8b![!^%Z!^!_*g!_!c%Z!c!}$8b!}#O%Z#O#P&c#P#R%Z#R#S$8b#S#T%Z#T#o$8b#o#p*g#p$g%Z$g;'S$8b;'S;=`$<l<%lO$8b+d$:qk$i&j(Wp(Z!b$_#tOY%ZYZ&cZr%Zrs&}st%Ztu$:fuw%Zwx(rx}%Z}!O$:f!O!Q%Z!Q![$:f![!^%Z!^!_*g!_!c%Z!c!}$:f!}#O%Z#O#P&c#P#R%Z#R#S$:f#S#T%Z#T#o$:f#o#p*g#p$g%Z$g;'S$:f;'S;=`$<f<%lO$:f+d$<iP;=`<%l$:f07[$<oP;=`<%l$8b#Jf$<{X!_#Hb(Wp(Z!bOY*gZr*grs'}sw*gwx)rx#O*g#P;'S*g;'S;=`+Z<%lO*g,#x$=sa(y+JY$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_!`Ka!`#O%Z#O#P&c#P#o%Z#o#p*g#p#q$+e#q;'S%Z;'S;=`+a<%lO%Z)>v$?V_!^(CdvBr$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z?O$@a_!q7`$i&j(Wp(Z!bOY%ZYZ&cZr%Zrs&}sw%Zwx(rx!^%Z!^!_*g!_#O%Z#O#P&c#P#o%Z#o#p*g#p;'S%Z;'S;=`+a<%lO%Z07[$Aq|$i&j(Wp(Z!b'|0/l$]#t(T,2j(e$I[OX%ZXY+gYZ&cZ[+g[p%Zpq+gqr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$f%Z$f$g+g$g#BYEr#BY#BZ$A`#BZ$ISEr$IS$I_$A`$I_$JTEr$JT$JU$A`$JU$KVEr$KV$KW$A`$KW&FUEr&FU&FV$A`&FV;'SEr;'S;=`I|<%l?HTEr?HT?HU$A`?HUOEr07[$D|k$i&j(Wp(Z!b'}0/l$]#t(T,2j(e$I[OY%ZYZ&cZr%Zrs&}st%ZtuEruw%Zwx(rx}%Z}!OGv!O!Q%Z!Q![Er![!^%Z!^!_*g!_!c%Z!c!}Er!}#O%Z#O#P&c#P#R%Z#R#SEr#S#T%Z#T#oEr#o#p*g#p$g%Z$g;'SEr;'S;=`I|<%lOEr\",\n tokenizers: [noSemicolon, noSemicolonType, operatorToken, jsx, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, insertSemicolon, new LocalTokenGroup(\"$S~RRtu[#O#Pg#S#T#|~_P#o#pb~gOx~~jVO#i!P#i#j!U#j#l!P#l#m!q#m;'S!P;'S;=`#v<%lO!P~!UO!U~~!XS!Q![!e!c!i!e#T#Z!e#o#p#Z~!hR!Q![!q!c!i!q#T#Z!q~!tR!Q![!}!c!i!}#T#Z!}~#QR!Q![!P!c!i!P#T#Z!P~#^R!Q![#g!c!i#g#T#Z#g~#jS!Q![#g!c!i#g#T#Z#g#q#r!P~#yP;=`<%l!P~$RO(c~~\", 141, 340), new LocalTokenGroup(\"j~RQYZXz{^~^O(Q~~aP!P!Qd~iO(R~~\", 25, 323)],\n topRules: {\"Script\":[0,7],\"SingleExpression\":[1,276],\"SingleClassItem\":[2,277]},\n dialects: {jsx: 0, ts: 15175},\n dynamicPrecedences: {\"80\":1,\"82\":1,\"94\":1,\"169\":1,\"199\":1},\n specialized: [{term: 327, get: (value) => spec_identifier[value] || -1},{term: 343, get: (value) => spec_word[value] || -1},{term: 95, get: (value) => spec_LessThan[value] || -1}],\n tokenPrec: 15201\n});\n\nexport { parser };\n","import { Annotation, StateEffect, EditorSelection, codePointAt, codePointSize, fromCodePoint, Facet, combineConfig, StateField, Prec, Text, Transaction, MapMode, RangeValue, RangeSet, CharCategory } from '@codemirror/state';\nimport { Direction, logException, showTooltip, EditorView, ViewPlugin, getTooltip, Decoration, WidgetType, keymap } from '@codemirror/view';\nimport { syntaxTree, indentUnit } from '@codemirror/language';\n\n/**\nAn instance of this is passed to completion source functions.\n*/\nclass CompletionContext {\n /**\n Create a new completion context. (Mostly useful for testing\n completion sources—in the editor, the extension will create\n these for you.)\n */\n constructor(\n /**\n The editor state that the completion happens in.\n */\n state, \n /**\n The position at which the completion is happening.\n */\n pos, \n /**\n Indicates whether completion was activated explicitly, or\n implicitly by typing. The usual way to respond to this is to\n only return completions when either there is part of a\n completable entity before the cursor, or `explicit` is true.\n */\n explicit, \n /**\n The editor view. May be undefined if the context was created\n in a situation where there is no such view available, such as\n in synchronous updates via\n [`CompletionResult.update`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.update)\n or when called by test code.\n */\n view) {\n this.state = state;\n this.pos = pos;\n this.explicit = explicit;\n this.view = view;\n /**\n @internal\n */\n this.abortListeners = [];\n /**\n @internal\n */\n this.abortOnDocChange = false;\n }\n /**\n Get the extent, content, and (if there is a token) type of the\n token before `this.pos`.\n */\n tokenBefore(types) {\n let token = syntaxTree(this.state).resolveInner(this.pos, -1);\n while (token && types.indexOf(token.name) < 0)\n token = token.parent;\n return token ? { from: token.from, to: this.pos,\n text: this.state.sliceDoc(token.from, this.pos),\n type: token.type } : null;\n }\n /**\n Get the match of the given expression directly before the\n cursor.\n */\n matchBefore(expr) {\n let line = this.state.doc.lineAt(this.pos);\n let start = Math.max(line.from, this.pos - 250);\n let str = line.text.slice(start - line.from, this.pos - line.from);\n let found = str.search(ensureAnchor(expr, false));\n return found < 0 ? null : { from: start + found, to: this.pos, text: str.slice(found) };\n }\n /**\n Yields true when the query has been aborted. Can be useful in\n asynchronous queries to avoid doing work that will be ignored.\n */\n get aborted() { return this.abortListeners == null; }\n /**\n Allows you to register abort handlers, which will be called when\n the query is\n [aborted](https://codemirror.net/6/docs/ref/#autocomplete.CompletionContext.aborted).\n \n By default, running queries will not be aborted for regular\n typing or backspacing, on the assumption that they are likely to\n return a result with a\n [`validFor`](https://codemirror.net/6/docs/ref/#autocomplete.CompletionResult.validFor) field that\n allows the result to be used after all. Passing `onDocChange:\n true` will cause this query to be aborted for any document\n change.\n */\n addEventListener(type, listener, options) {\n if (type == \"abort\" && this.abortListeners) {\n this.abortListeners.push(listener);\n if (options && options.onDocChange)\n this.abortOnDocChange = true;\n }\n }\n}\nfunction toSet(chars) {\n let flat = Object.keys(chars).join(\"\");\n let words = /\\w/.test(flat);\n if (words)\n flat = flat.replace(/\\w/g, \"\");\n return `[${words ? \"\\\\w\" : \"\"}${flat.replace(/[^\\w\\s]/g, \"\\\\$&\")}]`;\n}\nfunction prefixMatch(options) {\n let first = Object.create(null), rest = Object.create(null);\n for (let { label } of options) {\n first[label[0]] = true;\n for (let i = 1; i < label.length; i++)\n rest[label[i]] = true;\n }\n let source = toSet(first) + toSet(rest) + \"*$\";\n return [new RegExp(\"^\" + source), new RegExp(source)];\n}\n/**\nGiven a a fixed array of options, return an autocompleter that\ncompletes them.\n*/\nfunction completeFromList(list) {\n let options = list.map(o => typeof o == \"string\" ? { label: o } : o);\n let [validFor, match] = options.every(o => /^\\w+$/.test(o.label)) ? [/\\w*$/, /\\w+$/] : prefixMatch(options);\n return (context) => {\n let token = context.matchBefore(match);\n return token || context.explicit ? { from: token ? token.from : context.pos, options, validFor } : null;\n };\n}\n/**\nWrap the given completion source so that it will only fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return source(context);\n if (pos.type.isTop)\n break;\n }\n return null;\n };\n}\n/**\nWrap the given completion source so that it will not fire when the\ncursor is in a syntax node with one of the given names.\n*/\nfunction ifNotIn(nodes, source) {\n return (context) => {\n for (let pos = syntaxTree(context.state).resolveInner(context.pos, -1); pos; pos = pos.parent) {\n if (nodes.indexOf(pos.name) > -1)\n return null;\n if (pos.type.isTop)\n break;\n }\n return source(context);\n };\n}\nclass Option {\n constructor(completion, source, match, score) {\n this.completion = completion;\n this.source = source;\n this.match = match;\n this.score = score;\n }\n}\nfunction cur(state) { return state.selection.main.from; }\n// Make sure the given regexp has a $ at its end and, if `start` is\n// true, a ^ at its start.\nfunction ensureAnchor(expr, start) {\n var _a;\n let { source } = expr;\n let addStart = start && source[0] != \"^\", addEnd = source[source.length - 1] != \"$\";\n if (!addStart && !addEnd)\n return expr;\n return new RegExp(`${addStart ? \"^\" : \"\"}(?:${source})${addEnd ? \"$\" : \"\"}`, (_a = expr.flags) !== null && _a !== void 0 ? _a : (expr.ignoreCase ? \"i\" : \"\"));\n}\n/**\nThis annotation is added to transactions that are produced by\npicking a completion.\n*/\nconst pickedCompletion = /*@__PURE__*/Annotation.define();\n/**\nHelper function that returns a transaction spec which inserts a\ncompletion's text in the main selection range, and any other\nselection range that has the same text in front of it.\n*/\nfunction insertCompletionText(state, text, from, to) {\n let { main } = state.selection, fromOff = from - main.from, toOff = to - main.from;\n return {\n ...state.changeByRange(range => {\n if (range != main && from != to &&\n state.sliceDoc(range.from + fromOff, range.from + toOff) != state.sliceDoc(from, to))\n return { range };\n let lines = state.toText(text);\n return {\n changes: { from: range.from + fromOff, to: to == main.from ? range.to : range.from + toOff, insert: lines },\n range: EditorSelection.cursor(range.from + fromOff + lines.length)\n };\n }),\n scrollIntoView: true,\n userEvent: \"input.complete\"\n };\n}\nconst SourceCache = /*@__PURE__*/new WeakMap();\nfunction asSource(source) {\n if (!Array.isArray(source))\n return source;\n let known = SourceCache.get(source);\n if (!known)\n SourceCache.set(source, known = completeFromList(source));\n return known;\n}\nconst startCompletionEffect = /*@__PURE__*/StateEffect.define();\nconst closeCompletionEffect = /*@__PURE__*/StateEffect.define();\n\n// A pattern matcher for fuzzy completion matching. Create an instance\n// once for a pattern, and then use that to match any number of\n// completions.\nclass FuzzyMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.chars = [];\n this.folded = [];\n // Buffers reused by calls to `match` to track matched character\n // positions.\n this.any = [];\n this.precise = [];\n this.byWord = [];\n this.score = 0;\n this.matched = [];\n for (let p = 0; p < pattern.length;) {\n let char = codePointAt(pattern, p), size = codePointSize(char);\n this.chars.push(char);\n let part = pattern.slice(p, p + size), upper = part.toUpperCase();\n this.folded.push(codePointAt(upper == part ? part.toLowerCase() : upper, 0));\n p += size;\n }\n this.astral = pattern.length != this.chars.length;\n }\n ret(score, matched) {\n this.score = score;\n this.matched = matched;\n return this;\n }\n // Matches a given word (completion) against the pattern (input).\n // Will return a boolean indicating whether there was a match and,\n // on success, set `this.score` to the score, `this.matched` to an\n // array of `from, to` pairs indicating the matched parts of `word`.\n //\n // The score is a number that is more negative the worse the match\n // is. See `Penalty` above.\n match(word) {\n if (this.pattern.length == 0)\n return this.ret(-100 /* Penalty.NotFull */, []);\n if (word.length < this.pattern.length)\n return null;\n let { chars, folded, any, precise, byWord } = this;\n // For single-character queries, only match when they occur right\n // at the start\n if (chars.length == 1) {\n let first = codePointAt(word, 0), firstSize = codePointSize(first);\n let score = firstSize == word.length ? 0 : -100 /* Penalty.NotFull */;\n if (first == chars[0]) ;\n else if (first == folded[0])\n score += -200 /* Penalty.CaseFold */;\n else\n return null;\n return this.ret(score, [0, firstSize]);\n }\n let direct = word.indexOf(this.pattern);\n if (direct == 0)\n return this.ret(word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */, [0, this.pattern.length]);\n let len = chars.length, anyTo = 0;\n if (direct < 0) {\n for (let i = 0, e = Math.min(word.length, 200); i < e && anyTo < len;) {\n let next = codePointAt(word, i);\n if (next == chars[anyTo] || next == folded[anyTo])\n any[anyTo++] = i;\n i += codePointSize(next);\n }\n // No match, exit immediately\n if (anyTo < len)\n return null;\n }\n // This tracks the extent of the precise (non-folded, not\n // necessarily adjacent) match\n let preciseTo = 0;\n // Tracks whether there is a match that hits only characters that\n // appear to be starting words. `byWordFolded` is set to true when\n // a case folded character is encountered in such a match\n let byWordTo = 0, byWordFolded = false;\n // If we've found a partial adjacent match, these track its state\n let adjacentTo = 0, adjacentStart = -1, adjacentEnd = -1;\n let hasLower = /[a-z]/.test(word), wordAdjacent = true;\n // Go over the option's text, scanning for the various kinds of matches\n for (let i = 0, e = Math.min(word.length, 200), prevType = 0 /* Tp.NonWord */; i < e && byWordTo < len;) {\n let next = codePointAt(word, i);\n if (direct < 0) {\n if (preciseTo < len && next == chars[preciseTo])\n precise[preciseTo++] = i;\n if (adjacentTo < len) {\n if (next == chars[adjacentTo] || next == folded[adjacentTo]) {\n if (adjacentTo == 0)\n adjacentStart = i;\n adjacentEnd = i + 1;\n adjacentTo++;\n }\n else {\n adjacentTo = 0;\n }\n }\n }\n let ch, type = next < 0xff\n ? (next >= 48 && next <= 57 || next >= 97 && next <= 122 ? 2 /* Tp.Lower */ : next >= 65 && next <= 90 ? 1 /* Tp.Upper */ : 0 /* Tp.NonWord */)\n : ((ch = fromCodePoint(next)) != ch.toLowerCase() ? 1 /* Tp.Upper */ : ch != ch.toUpperCase() ? 2 /* Tp.Lower */ : 0 /* Tp.NonWord */);\n if (!i || type == 1 /* Tp.Upper */ && hasLower || prevType == 0 /* Tp.NonWord */ && type != 0 /* Tp.NonWord */) {\n if (chars[byWordTo] == next || (folded[byWordTo] == next && (byWordFolded = true)))\n byWord[byWordTo++] = i;\n else if (byWord.length)\n wordAdjacent = false;\n }\n prevType = type;\n i += codePointSize(next);\n }\n if (byWordTo == len && byWord[0] == 0 && wordAdjacent)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0), byWord, word);\n if (adjacentTo == len && adjacentStart == 0)\n return this.ret(-200 /* Penalty.CaseFold */ - word.length + (adjacentEnd == word.length ? 0 : -100 /* Penalty.NotFull */), [0, adjacentEnd]);\n if (direct > -1)\n return this.ret(-700 /* Penalty.NotStart */ - word.length, [direct, direct + this.pattern.length]);\n if (adjacentTo == len)\n return this.ret(-200 /* Penalty.CaseFold */ + -700 /* Penalty.NotStart */ - word.length, [adjacentStart, adjacentEnd]);\n if (byWordTo == len)\n return this.result(-100 /* Penalty.ByWord */ + (byWordFolded ? -200 /* Penalty.CaseFold */ : 0) + -700 /* Penalty.NotStart */ +\n (wordAdjacent ? 0 : -1100 /* Penalty.Gap */), byWord, word);\n return chars.length == 2 ? null\n : this.result((any[0] ? -700 /* Penalty.NotStart */ : 0) + -200 /* Penalty.CaseFold */ + -1100 /* Penalty.Gap */, any, word);\n }\n result(score, positions, word) {\n let result = [], i = 0;\n for (let pos of positions) {\n let to = pos + (this.astral ? codePointSize(codePointAt(word, pos)) : 1);\n if (i && result[i - 1] == pos)\n result[i - 1] = to;\n else {\n result[i++] = pos;\n result[i++] = to;\n }\n }\n return this.ret(score - word.length, result);\n }\n}\nclass StrictMatcher {\n constructor(pattern) {\n this.pattern = pattern;\n this.matched = [];\n this.score = 0;\n this.folded = pattern.toLowerCase();\n }\n match(word) {\n if (word.length < this.pattern.length)\n return null;\n let start = word.slice(0, this.pattern.length);\n let match = start == this.pattern ? 0 : start.toLowerCase() == this.folded ? -200 /* Penalty.CaseFold */ : null;\n if (match == null)\n return null;\n this.matched = [0, start.length];\n this.score = match + (word.length == this.pattern.length ? 0 : -100 /* Penalty.NotFull */);\n return this;\n }\n}\n\nconst completionConfig = /*@__PURE__*/Facet.define({\n combine(configs) {\n return combineConfig(configs, {\n activateOnTyping: true,\n activateOnCompletion: () => false,\n activateOnTypingDelay: 100,\n selectOnOpen: true,\n override: null,\n closeOnBlur: true,\n maxRenderedOptions: 100,\n defaultKeymap: true,\n tooltipClass: () => \"\",\n optionClass: () => \"\",\n aboveCursor: false,\n icons: true,\n addToOptions: [],\n positionInfo: defaultPositionInfo,\n filterStrict: false,\n compareCompletions: (a, b) => (a.sortText || a.label).localeCompare(b.sortText || b.label),\n interactionDelay: 75,\n updateSyncTime: 100\n }, {\n defaultKeymap: (a, b) => a && b,\n closeOnBlur: (a, b) => a && b,\n icons: (a, b) => a && b,\n tooltipClass: (a, b) => c => joinClass(a(c), b(c)),\n optionClass: (a, b) => c => joinClass(a(c), b(c)),\n addToOptions: (a, b) => a.concat(b),\n filterStrict: (a, b) => a || b,\n });\n }\n});\nfunction joinClass(a, b) {\n return a ? b ? a + \" \" + b : a : b;\n}\nfunction defaultPositionInfo(view, list, option, info, space, tooltip) {\n let rtl = view.textDirection == Direction.RTL, left = rtl, narrow = false;\n let side = \"top\", offset, maxWidth;\n let spaceLeft = list.left - space.left, spaceRight = space.right - list.right;\n let infoWidth = info.right - info.left, infoHeight = info.bottom - info.top;\n if (left && spaceLeft < Math.min(infoWidth, spaceRight))\n left = false;\n else if (!left && spaceRight < Math.min(infoWidth, spaceLeft))\n left = true;\n if (infoWidth <= (left ? spaceLeft : spaceRight)) {\n offset = Math.max(space.top, Math.min(option.top, space.bottom - infoHeight)) - list.top;\n maxWidth = Math.min(400 /* Info.Width */, left ? spaceLeft : spaceRight);\n }\n else {\n narrow = true;\n maxWidth = Math.min(400 /* Info.Width */, (rtl ? list.right : space.right - list.left) - 30 /* Info.Margin */);\n let spaceBelow = space.bottom - list.bottom;\n if (spaceBelow >= infoHeight || spaceBelow > list.top) { // Below the completion\n offset = option.bottom - list.top;\n }\n else { // Above it\n side = \"bottom\";\n offset = list.bottom - option.top;\n }\n }\n let scaleY = (list.bottom - list.top) / tooltip.offsetHeight;\n let scaleX = (list.right - list.left) / tooltip.offsetWidth;\n return {\n style: `${side}: ${offset / scaleY}px; max-width: ${maxWidth / scaleX}px`,\n class: \"cm-completionInfo-\" + (narrow ? (rtl ? \"left-narrow\" : \"right-narrow\") : left ? \"left\" : \"right\")\n };\n}\n\nconst setSelectedEffect = /*@__PURE__*/StateEffect.define();\nfunction optionContent(config) {\n let content = config.addToOptions.slice();\n if (config.icons)\n content.push({\n render(completion) {\n let icon = document.createElement(\"div\");\n icon.classList.add(\"cm-completionIcon\");\n if (completion.type)\n icon.classList.add(...completion.type.split(/\\s+/g).map(cls => \"cm-completionIcon-\" + cls));\n icon.setAttribute(\"aria-hidden\", \"true\");\n return icon;\n },\n position: 20\n });\n content.push({\n render(completion, _s, _v, match) {\n let labelElt = document.createElement(\"span\");\n labelElt.className = \"cm-completionLabel\";\n let label = completion.displayLabel || completion.label, off = 0;\n for (let j = 0; j < match.length;) {\n let from = match[j++], to = match[j++];\n if (from > off)\n labelElt.appendChild(document.createTextNode(label.slice(off, from)));\n let span = labelElt.appendChild(document.createElement(\"span\"));\n span.appendChild(document.createTextNode(label.slice(from, to)));\n span.className = \"cm-completionMatchedText\";\n off = to;\n }\n if (off < label.length)\n labelElt.appendChild(document.createTextNode(label.slice(off)));\n return labelElt;\n },\n position: 50\n }, {\n render(completion) {\n if (!completion.detail)\n return null;\n let detailElt = document.createElement(\"span\");\n detailElt.className = \"cm-completionDetail\";\n detailElt.textContent = completion.detail;\n return detailElt;\n },\n position: 80\n });\n return content.sort((a, b) => a.position - b.position).map(a => a.render);\n}\nfunction rangeAroundSelected(total, selected, max) {\n if (total <= max)\n return { from: 0, to: total };\n if (selected < 0)\n selected = 0;\n if (selected <= (total >> 1)) {\n let off = Math.floor(selected / max);\n return { from: off * max, to: (off + 1) * max };\n }\n let off = Math.ceil((total - selected) / max);\n return { from: total - off * max, to: total - (off - 1) * max };\n}\nclass CompletionTooltip {\n constructor(view, stateField, applyCompletion) {\n this.view = view;\n this.stateField = stateField;\n this.applyCompletion = applyCompletion;\n this.info = null;\n this.infoDestroy = null;\n this.placeInfoReq = {\n read: () => this.measureInfo(),\n write: (pos) => this.placeInfo(pos),\n key: this\n };\n this.space = null;\n this.currentClass = \"\";\n let cState = view.state.field(stateField);\n let { options, selected } = cState.open;\n let config = view.state.facet(completionConfig);\n this.optionContent = optionContent(config);\n this.optionClass = config.optionClass;\n this.tooltipClass = config.tooltipClass;\n this.range = rangeAroundSelected(options.length, selected, config.maxRenderedOptions);\n this.dom = document.createElement(\"div\");\n this.dom.className = \"cm-tooltip-autocomplete\";\n this.updateTooltipClass(view.state);\n this.dom.addEventListener(\"mousedown\", (e) => {\n let { options } = view.state.field(stateField).open;\n for (let dom = e.target, match; dom && dom != this.dom; dom = dom.parentNode) {\n if (dom.nodeName == \"LI\" && (match = /-(\\d+)$/.exec(dom.id)) && +match[1] < options.length) {\n this.applyCompletion(view, options[+match[1]]);\n e.preventDefault();\n return;\n }\n }\n if (e.target == this.list) {\n let move = this.list.classList.contains(\"cm-completionListIncompleteTop\") &&\n e.clientY < this.list.firstChild.getBoundingClientRect().top ? this.range.from - 1 :\n this.list.classList.contains(\"cm-completionListIncompleteBottom\") &&\n e.clientY > this.list.lastChild.getBoundingClientRect().bottom ? this.range.to : null;\n if (move != null) {\n view.dispatch({ effects: setSelectedEffect.of(move) });\n e.preventDefault();\n }\n }\n });\n this.dom.addEventListener(\"focusout\", (e) => {\n let state = view.state.field(this.stateField, false);\n if (state && state.tooltip && view.state.facet(completionConfig).closeOnBlur &&\n e.relatedTarget != view.contentDOM)\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n });\n this.showOptions(options, cState.id);\n }\n mount() { this.updateSel(); }\n showOptions(options, id) {\n if (this.list)\n this.list.remove();\n this.list = this.dom.appendChild(this.createListBox(options, id, this.range));\n this.list.addEventListener(\"scroll\", () => {\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n });\n }\n update(update) {\n var _a;\n let cState = update.state.field(this.stateField);\n let prevState = update.startState.field(this.stateField);\n this.updateTooltipClass(update.state);\n if (cState != prevState) {\n let { options, selected, disabled } = cState.open;\n if (!prevState.open || prevState.open.options != options) {\n this.range = rangeAroundSelected(options.length, selected, update.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(options, cState.id);\n }\n this.updateSel();\n if (disabled != ((_a = prevState.open) === null || _a === void 0 ? void 0 : _a.disabled))\n this.dom.classList.toggle(\"cm-tooltip-autocomplete-disabled\", !!disabled);\n }\n }\n updateTooltipClass(state) {\n let cls = this.tooltipClass(state);\n if (cls != this.currentClass) {\n for (let c of this.currentClass.split(\" \"))\n if (c)\n this.dom.classList.remove(c);\n for (let c of cls.split(\" \"))\n if (c)\n this.dom.classList.add(c);\n this.currentClass = cls;\n }\n }\n positioned(space) {\n this.space = space;\n if (this.info)\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSel() {\n let cState = this.view.state.field(this.stateField), open = cState.open;\n if (open.selected > -1 && open.selected < this.range.from || open.selected >= this.range.to) {\n this.range = rangeAroundSelected(open.options.length, open.selected, this.view.state.facet(completionConfig).maxRenderedOptions);\n this.showOptions(open.options, cState.id);\n }\n let newSel = this.updateSelectedOption(open.selected);\n if (newSel) {\n this.destroyInfo();\n let { completion } = open.options[open.selected];\n let { info } = completion;\n if (!info)\n return;\n let infoResult = typeof info === \"string\" ? document.createTextNode(info) : info(completion);\n if (!infoResult)\n return;\n if (\"then\" in infoResult) {\n infoResult.then(obj => {\n if (obj && this.view.state.field(this.stateField, false) == cState)\n this.addInfoPane(obj, completion);\n }).catch(e => logException(this.view.state, e, \"completion info\"));\n }\n else {\n this.addInfoPane(infoResult, completion);\n newSel.setAttribute(\"aria-describedby\", this.info.id);\n }\n }\n }\n addInfoPane(content, completion) {\n this.destroyInfo();\n let wrap = this.info = document.createElement(\"div\");\n wrap.className = \"cm-tooltip cm-completionInfo\";\n wrap.id = \"cm-completionInfo-\" + Math.floor(Math.random() * 0xffff).toString(16);\n if (content.nodeType != null) {\n wrap.appendChild(content);\n this.infoDestroy = null;\n }\n else {\n let { dom, destroy } = content;\n wrap.appendChild(dom);\n this.infoDestroy = destroy || null;\n }\n this.dom.appendChild(wrap);\n this.view.requestMeasure(this.placeInfoReq);\n }\n updateSelectedOption(selected) {\n let set = null;\n for (let opt = this.list.firstChild, i = this.range.from; opt; opt = opt.nextSibling, i++) {\n if (opt.nodeName != \"LI\" || !opt.id) {\n i--; // A section header\n }\n else if (i == selected) {\n if (!opt.hasAttribute(\"aria-selected\")) {\n opt.setAttribute(\"aria-selected\", \"true\");\n set = opt;\n }\n }\n else {\n if (opt.hasAttribute(\"aria-selected\")) {\n opt.removeAttribute(\"aria-selected\");\n opt.removeAttribute(\"aria-describedby\");\n }\n }\n }\n if (set)\n scrollIntoView(this.list, set);\n return set;\n }\n measureInfo() {\n let sel = this.dom.querySelector(\"[aria-selected]\");\n if (!sel || !this.info)\n return null;\n let listRect = this.dom.getBoundingClientRect();\n let infoRect = this.info.getBoundingClientRect();\n let selRect = sel.getBoundingClientRect();\n let space = this.space;\n if (!space) {\n let docElt = this.dom.ownerDocument.documentElement;\n space = { left: 0, top: 0, right: docElt.clientWidth, bottom: docElt.clientHeight };\n }\n if (selRect.top > Math.min(space.bottom, listRect.bottom) - 10 ||\n selRect.bottom < Math.max(space.top, listRect.top) + 10)\n return null;\n return this.view.state.facet(completionConfig).positionInfo(this.view, listRect, selRect, infoRect, space, this.dom);\n }\n placeInfo(pos) {\n if (this.info) {\n if (pos) {\n if (pos.style)\n this.info.style.cssText = pos.style;\n this.info.className = \"cm-tooltip cm-completionInfo \" + (pos.class || \"\");\n }\n else {\n this.info.style.cssText = \"top: -1e6px\";\n }\n }\n }\n createListBox(options, id, range) {\n const ul = document.createElement(\"ul\");\n ul.id = id;\n ul.setAttribute(\"role\", \"listbox\");\n ul.setAttribute(\"aria-expanded\", \"true\");\n ul.setAttribute(\"aria-label\", this.view.state.phrase(\"Completions\"));\n ul.addEventListener(\"mousedown\", e => {\n // Prevent focus change when clicking the scrollbar\n if (e.target == ul)\n e.preventDefault();\n });\n let curSection = null;\n for (let i = range.from; i < range.to; i++) {\n let { completion, match } = options[i], { section } = completion;\n if (section) {\n let name = typeof section == \"string\" ? section : section.name;\n if (name != curSection && (i > range.from || range.from == 0)) {\n curSection = name;\n if (typeof section != \"string\" && section.header) {\n ul.appendChild(section.header(section));\n }\n else {\n let header = ul.appendChild(document.createElement(\"completion-section\"));\n header.textContent = name;\n }\n }\n }\n const li = ul.appendChild(document.createElement(\"li\"));\n li.id = id + \"-\" + i;\n li.setAttribute(\"role\", \"option\");\n let cls = this.optionClass(completion);\n if (cls)\n li.className = cls;\n for (let source of this.optionContent) {\n let node = source(completion, this.view.state, this.view, match);\n if (node)\n li.appendChild(node);\n }\n }\n if (range.from)\n ul.classList.add(\"cm-completionListIncompleteTop\");\n if (range.to < options.length)\n ul.classList.add(\"cm-completionListIncompleteBottom\");\n return ul;\n }\n destroyInfo() {\n if (this.info) {\n if (this.infoDestroy)\n this.infoDestroy();\n this.info.remove();\n this.info = null;\n }\n }\n destroy() {\n this.destroyInfo();\n }\n}\nfunction completionTooltip(stateField, applyCompletion) {\n return (view) => new CompletionTooltip(view, stateField, applyCompletion);\n}\nfunction scrollIntoView(container, element) {\n let parent = container.getBoundingClientRect();\n let self = element.getBoundingClientRect();\n let scaleY = parent.height / container.offsetHeight;\n if (self.top < parent.top)\n container.scrollTop -= (parent.top - self.top) / scaleY;\n else if (self.bottom > parent.bottom)\n container.scrollTop += (self.bottom - parent.bottom) / scaleY;\n}\n\n// Used to pick a preferred option when two options with the same\n// label occur in the result.\nfunction score(option) {\n return (option.boost || 0) * 100 + (option.apply ? 10 : 0) + (option.info ? 5 : 0) +\n (option.type ? 1 : 0);\n}\nfunction sortOptions(active, state) {\n let options = [];\n let sections = null, dynamicSectionScore = null;\n let addOption = (option) => {\n options.push(option);\n let { section } = option.completion;\n if (section) {\n if (!sections)\n sections = [];\n let name = typeof section == \"string\" ? section : section.name;\n if (!sections.some(s => s.name == name))\n sections.push(typeof section == \"string\" ? { name } : section);\n }\n };\n let conf = state.facet(completionConfig);\n for (let a of active)\n if (a.hasResult()) {\n let getMatch = a.result.getMatch;\n if (a.result.filter === false) {\n for (let option of a.result.options) {\n addOption(new Option(option, a.source, getMatch ? getMatch(option) : [], 1e9 - options.length));\n }\n }\n else {\n let pattern = state.sliceDoc(a.from, a.to), match;\n let matcher = conf.filterStrict ? new StrictMatcher(pattern) : new FuzzyMatcher(pattern);\n for (let option of a.result.options)\n if (match = matcher.match(option.label)) {\n let matched = !option.displayLabel ? match.matched : getMatch ? getMatch(option, match.matched) : [];\n let score = match.score + (option.boost || 0);\n addOption(new Option(option, a.source, matched, score));\n if (typeof option.section == \"object\" && option.section.rank === \"dynamic\") {\n let { name } = option.section;\n if (!dynamicSectionScore)\n dynamicSectionScore = Object.create(null);\n dynamicSectionScore[name] = Math.max(score, dynamicSectionScore[name] || -1e9);\n }\n }\n }\n }\n if (sections) {\n let sectionOrder = Object.create(null), pos = 0;\n let cmp = (a, b) => {\n return (a.rank === \"dynamic\" && b.rank === \"dynamic\" ? dynamicSectionScore[b.name] - dynamicSectionScore[a.name] : 0) ||\n (typeof a.rank == \"number\" ? a.rank : 1e9) - (typeof b.rank == \"number\" ? b.rank : 1e9) ||\n (a.name < b.name ? -1 : 1);\n };\n for (let s of sections.sort(cmp)) {\n pos -= 1e5;\n sectionOrder[s.name] = pos;\n }\n for (let option of options) {\n let { section } = option.completion;\n if (section)\n option.score += sectionOrder[typeof section == \"string\" ? section : section.name];\n }\n }\n let result = [], prev = null;\n let compare = conf.compareCompletions;\n for (let opt of options.sort((a, b) => (b.score - a.score) || compare(a.completion, b.completion))) {\n let cur = opt.completion;\n if (!prev || prev.label != cur.label || prev.detail != cur.detail ||\n (prev.type != null && cur.type != null && prev.type != cur.type) ||\n prev.apply != cur.apply || prev.boost != cur.boost)\n result.push(opt);\n else if (score(opt.completion) > score(prev))\n result[result.length - 1] = opt;\n prev = opt.completion;\n }\n return result;\n}\nclass CompletionDialog {\n constructor(options, attrs, tooltip, timestamp, selected, disabled) {\n this.options = options;\n this.attrs = attrs;\n this.tooltip = tooltip;\n this.timestamp = timestamp;\n this.selected = selected;\n this.disabled = disabled;\n }\n setSelected(selected, id) {\n return selected == this.selected || selected >= this.options.length ? this\n : new CompletionDialog(this.options, makeAttrs(id, selected), this.tooltip, this.timestamp, selected, this.disabled);\n }\n static build(active, state, id, prev, conf, didSetActive) {\n if (prev && !didSetActive && active.some(s => s.isPending))\n return prev.setDisabled();\n let options = sortOptions(active, state);\n if (!options.length)\n return prev && active.some(a => a.isPending) ? prev.setDisabled() : null;\n let selected = state.facet(completionConfig).selectOnOpen ? 0 : -1;\n if (prev && prev.selected != selected && prev.selected != -1) {\n let selectedValue = prev.options[prev.selected].completion;\n for (let i = 0; i < options.length; i++)\n if (options[i].completion == selectedValue) {\n selected = i;\n break;\n }\n }\n return new CompletionDialog(options, makeAttrs(id, selected), {\n pos: active.reduce((a, b) => b.hasResult() ? Math.min(a, b.from) : a, 1e8),\n create: createTooltip,\n above: conf.aboveCursor,\n }, prev ? prev.timestamp : Date.now(), selected, false);\n }\n map(changes) {\n return new CompletionDialog(this.options, this.attrs, { ...this.tooltip, pos: changes.mapPos(this.tooltip.pos) }, this.timestamp, this.selected, this.disabled);\n }\n setDisabled() {\n return new CompletionDialog(this.options, this.attrs, this.tooltip, this.timestamp, this.selected, true);\n }\n}\nclass CompletionState {\n constructor(active, id, open) {\n this.active = active;\n this.id = id;\n this.open = open;\n }\n static start() {\n return new CompletionState(none, \"cm-ac-\" + Math.floor(Math.random() * 2e6).toString(36), null);\n }\n update(tr) {\n let { state } = tr, conf = state.facet(completionConfig);\n let sources = conf.override ||\n state.languageDataAt(\"autocomplete\", cur(state)).map(asSource);\n let active = sources.map(source => {\n let value = this.active.find(s => s.source == source) ||\n new ActiveSource(source, this.active.some(a => a.state != 0 /* State.Inactive */) ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n return value.update(tr, conf);\n });\n if (active.length == this.active.length && active.every((a, i) => a == this.active[i]))\n active = this.active;\n let open = this.open, didSet = tr.effects.some(e => e.is(setActiveEffect));\n if (open && tr.docChanged)\n open = open.map(tr.changes);\n if (tr.selection || active.some(a => a.hasResult() && tr.changes.touchesRange(a.from, a.to)) ||\n !sameResults(active, this.active) || didSet)\n open = CompletionDialog.build(active, state, this.id, open, conf, didSet);\n else if (open && open.disabled && !active.some(a => a.isPending))\n open = null;\n if (!open && active.every(a => !a.isPending) && active.some(a => a.hasResult()))\n active = active.map(a => a.hasResult() ? new ActiveSource(a.source, 0 /* State.Inactive */) : a);\n for (let effect of tr.effects)\n if (effect.is(setSelectedEffect))\n open = open && open.setSelected(effect.value, this.id);\n return active == this.active && open == this.open ? this : new CompletionState(active, this.id, open);\n }\n get tooltip() { return this.open ? this.open.tooltip : null; }\n get attrs() { return this.open ? this.open.attrs : this.active.length ? baseAttrs : noAttrs; }\n}\nfunction sameResults(a, b) {\n if (a == b)\n return true;\n for (let iA = 0, iB = 0;;) {\n while (iA < a.length && !a[iA].hasResult())\n iA++;\n while (iB < b.length && !b[iB].hasResult())\n iB++;\n let endA = iA == a.length, endB = iB == b.length;\n if (endA || endB)\n return endA == endB;\n if (a[iA++].result != b[iB++].result)\n return false;\n }\n}\nconst baseAttrs = {\n \"aria-autocomplete\": \"list\"\n};\nconst noAttrs = {};\nfunction makeAttrs(id, selected) {\n let result = {\n \"aria-autocomplete\": \"list\",\n \"aria-haspopup\": \"listbox\",\n \"aria-controls\": id\n };\n if (selected > -1)\n result[\"aria-activedescendant\"] = id + \"-\" + selected;\n return result;\n}\nconst none = [];\nfunction getUpdateType(tr, conf) {\n if (tr.isUserEvent(\"input.complete\")) {\n let completion = tr.annotation(pickedCompletion);\n if (completion && conf.activateOnCompletion(completion))\n return 4 /* UpdateType.Activate */ | 8 /* UpdateType.Reset */;\n }\n let typing = tr.isUserEvent(\"input.type\");\n return typing && conf.activateOnTyping ? 4 /* UpdateType.Activate */ | 1 /* UpdateType.Typing */\n : typing ? 1 /* UpdateType.Typing */\n : tr.isUserEvent(\"delete.backward\") ? 2 /* UpdateType.Backspacing */\n : tr.selection ? 8 /* UpdateType.Reset */\n : tr.docChanged ? 16 /* UpdateType.ResetIfTouching */ : 0 /* UpdateType.None */;\n}\nclass ActiveSource {\n constructor(source, state, explicit = false) {\n this.source = source;\n this.state = state;\n this.explicit = explicit;\n }\n hasResult() { return false; }\n get isPending() { return this.state == 1 /* State.Pending */; }\n update(tr, conf) {\n let type = getUpdateType(tr, conf), value = this;\n if ((type & 8 /* UpdateType.Reset */) || (type & 16 /* UpdateType.ResetIfTouching */) && this.touches(tr))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n if ((type & 4 /* UpdateType.Activate */) && value.state == 0 /* State.Inactive */)\n value = new ActiveSource(this.source, 1 /* State.Pending */);\n value = value.updateFor(tr, type);\n for (let effect of tr.effects) {\n if (effect.is(startCompletionEffect))\n value = new ActiveSource(value.source, 1 /* State.Pending */, effect.value);\n else if (effect.is(closeCompletionEffect))\n value = new ActiveSource(value.source, 0 /* State.Inactive */);\n else if (effect.is(setActiveEffect))\n for (let active of effect.value)\n if (active.source == value.source)\n value = active;\n }\n return value;\n }\n updateFor(tr, type) { return this.map(tr.changes); }\n map(changes) { return this; }\n touches(tr) {\n return tr.changes.touchesRange(cur(tr.state));\n }\n}\nclass ActiveResult extends ActiveSource {\n constructor(source, explicit, limit, result, from, to) {\n super(source, 3 /* State.Result */, explicit);\n this.limit = limit;\n this.result = result;\n this.from = from;\n this.to = to;\n }\n hasResult() { return true; }\n updateFor(tr, type) {\n var _a;\n if (!(type & 3 /* UpdateType.SimpleInteraction */))\n return this.map(tr.changes);\n let result = this.result;\n if (result.map && !tr.changes.empty)\n result = result.map(result, tr.changes);\n let from = tr.changes.mapPos(this.from), to = tr.changes.mapPos(this.to, 1);\n let pos = cur(tr.state);\n if (pos > to || !result ||\n (type & 2 /* UpdateType.Backspacing */) && (cur(tr.startState) == this.from || pos < this.limit))\n return new ActiveSource(this.source, type & 4 /* UpdateType.Activate */ ? 1 /* State.Pending */ : 0 /* State.Inactive */);\n let limit = tr.changes.mapPos(this.limit);\n if (checkValid(result.validFor, tr.state, from, to))\n return new ActiveResult(this.source, this.explicit, limit, result, from, to);\n if (result.update &&\n (result = result.update(result, from, to, new CompletionContext(tr.state, pos, false))))\n return new ActiveResult(this.source, this.explicit, limit, result, result.from, (_a = result.to) !== null && _a !== void 0 ? _a : cur(tr.state));\n return new ActiveSource(this.source, 1 /* State.Pending */, this.explicit);\n }\n map(mapping) {\n if (mapping.empty)\n return this;\n let result = this.result.map ? this.result.map(this.result, mapping) : this.result;\n if (!result)\n return new ActiveSource(this.source, 0 /* State.Inactive */);\n return new ActiveResult(this.source, this.explicit, mapping.mapPos(this.limit), result, mapping.mapPos(this.from), mapping.mapPos(this.to, 1));\n }\n touches(tr) {\n return tr.changes.touchesRange(this.from, this.to);\n }\n}\nfunction checkValid(validFor, state, from, to) {\n if (!validFor)\n return false;\n let text = state.sliceDoc(from, to);\n return typeof validFor == \"function\" ? validFor(text, from, to, state) : ensureAnchor(validFor, true).test(text);\n}\nconst setActiveEffect = /*@__PURE__*/StateEffect.define({\n map(sources, mapping) { return sources.map(s => s.map(mapping)); }\n});\nconst completionState = /*@__PURE__*/StateField.define({\n create() { return CompletionState.start(); },\n update(value, tr) { return value.update(tr); },\n provide: f => [\n showTooltip.from(f, val => val.tooltip),\n EditorView.contentAttributes.from(f, state => state.attrs)\n ]\n});\nfunction applyCompletion(view, option) {\n const apply = option.completion.apply || option.completion.label;\n let result = view.state.field(completionState).active.find(a => a.source == option.source);\n if (!(result instanceof ActiveResult))\n return false;\n if (typeof apply == \"string\")\n view.dispatch({\n ...insertCompletionText(view.state, apply, result.from, result.to),\n annotations: pickedCompletion.of(option.completion)\n });\n else\n apply(view, option.completion, result.from, result.to);\n return true;\n}\nconst createTooltip = /*@__PURE__*/completionTooltip(completionState, applyCompletion);\n\n/**\nReturns a command that moves the completion selection forward or\nbackward by the given amount.\n*/\nfunction moveCompletionSelection(forward, by = \"option\") {\n return (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.open || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n let step = 1, tooltip;\n if (by == \"page\" && (tooltip = getTooltip(view, cState.open.tooltip)))\n step = Math.max(2, Math.floor(tooltip.dom.offsetHeight /\n tooltip.dom.querySelector(\"li\").offsetHeight) - 1);\n let { length } = cState.open.options;\n let selected = cState.open.selected > -1 ? cState.open.selected + step * (forward ? 1 : -1) : forward ? 0 : length - 1;\n if (selected < 0)\n selected = by == \"page\" ? 0 : length - 1;\n else if (selected >= length)\n selected = by == \"page\" ? length - 1 : 0;\n view.dispatch({ effects: setSelectedEffect.of(selected) });\n return true;\n };\n}\n/**\nAccept the current completion.\n*/\nconst acceptCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (view.state.readOnly || !cState || !cState.open || cState.open.selected < 0 || cState.open.disabled ||\n Date.now() - cState.open.timestamp < view.state.facet(completionConfig).interactionDelay)\n return false;\n return applyCompletion(view, cState.open.options[cState.open.selected]);\n};\n/**\nExplicitly start autocompletion.\n*/\nconst startCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState)\n return false;\n view.dispatch({ effects: startCompletionEffect.of(true) });\n return true;\n};\n/**\nClose the currently active completion.\n*/\nconst closeCompletion = (view) => {\n let cState = view.state.field(completionState, false);\n if (!cState || !cState.active.some(a => a.state != 0 /* State.Inactive */))\n return false;\n view.dispatch({ effects: closeCompletionEffect.of(null) });\n return true;\n};\nclass RunningQuery {\n constructor(active, context) {\n this.active = active;\n this.context = context;\n this.time = Date.now();\n this.updates = [];\n // Note that 'undefined' means 'not done yet', whereas 'null' means\n // 'query returned null'.\n this.done = undefined;\n }\n}\nconst MaxUpdateCount = 50, MinAbortTime = 1000;\nconst completionPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n constructor(view) {\n this.view = view;\n this.debounceUpdate = -1;\n this.running = [];\n this.debounceAccept = -1;\n this.pendingStart = false;\n this.composing = 0 /* CompositionState.None */;\n for (let active of view.state.field(completionState).active)\n if (active.isPending)\n this.startQuery(active);\n }\n update(update) {\n let cState = update.state.field(completionState);\n let conf = update.state.facet(completionConfig);\n if (!update.selectionSet && !update.docChanged && update.startState.field(completionState) == cState)\n return;\n let doesReset = update.transactions.some(tr => {\n let type = getUpdateType(tr, conf);\n return (type & 8 /* UpdateType.Reset */) || (tr.selection || tr.docChanged) && !(type & 3 /* UpdateType.SimpleInteraction */);\n });\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (doesReset ||\n query.context.abortOnDocChange && update.docChanged ||\n query.updates.length + update.transactions.length > MaxUpdateCount && Date.now() - query.time > MinAbortTime) {\n for (let handler of query.context.abortListeners) {\n try {\n handler();\n }\n catch (e) {\n logException(this.view.state, e);\n }\n }\n query.context.abortListeners = null;\n this.running.splice(i--, 1);\n }\n else {\n query.updates.push(...update.transactions);\n }\n }\n if (this.debounceUpdate > -1)\n clearTimeout(this.debounceUpdate);\n if (update.transactions.some(tr => tr.effects.some(e => e.is(startCompletionEffect))))\n this.pendingStart = true;\n let delay = this.pendingStart ? 50 : conf.activateOnTypingDelay;\n this.debounceUpdate = cState.active.some(a => a.isPending && !this.running.some(q => q.active.source == a.source))\n ? setTimeout(() => this.startUpdate(), delay) : -1;\n if (this.composing != 0 /* CompositionState.None */)\n for (let tr of update.transactions) {\n if (tr.isUserEvent(\"input.type\"))\n this.composing = 2 /* CompositionState.Changed */;\n else if (this.composing == 2 /* CompositionState.Changed */ && tr.selection)\n this.composing = 3 /* CompositionState.ChangedAndMoved */;\n }\n }\n startUpdate() {\n this.debounceUpdate = -1;\n this.pendingStart = false;\n let { state } = this.view, cState = state.field(completionState);\n for (let active of cState.active) {\n if (active.isPending && !this.running.some(r => r.active.source == active.source))\n this.startQuery(active);\n }\n if (this.running.length && cState.open && cState.open.disabled)\n this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n }\n startQuery(active) {\n let { state } = this.view, pos = cur(state);\n let context = new CompletionContext(state, pos, active.explicit, this.view);\n let pending = new RunningQuery(active, context);\n this.running.push(pending);\n Promise.resolve(active.source(context)).then(result => {\n if (!pending.context.aborted) {\n pending.done = result || null;\n this.scheduleAccept();\n }\n }, err => {\n this.view.dispatch({ effects: closeCompletionEffect.of(null) });\n logException(this.view.state, err);\n });\n }\n scheduleAccept() {\n if (this.running.every(q => q.done !== undefined))\n this.accept();\n else if (this.debounceAccept < 0)\n this.debounceAccept = setTimeout(() => this.accept(), this.view.state.facet(completionConfig).updateSyncTime);\n }\n // For each finished query in this.running, try to create a result\n // or, if appropriate, restart the query.\n accept() {\n var _a;\n if (this.debounceAccept > -1)\n clearTimeout(this.debounceAccept);\n this.debounceAccept = -1;\n let updated = [];\n let conf = this.view.state.facet(completionConfig), cState = this.view.state.field(completionState);\n for (let i = 0; i < this.running.length; i++) {\n let query = this.running[i];\n if (query.done === undefined)\n continue;\n this.running.splice(i--, 1);\n if (query.done) {\n let pos = cur(query.updates.length ? query.updates[0].startState : this.view.state);\n let limit = Math.min(pos, query.done.from + (query.active.explicit ? 0 : 1));\n let active = new ActiveResult(query.active.source, query.active.explicit, limit, query.done, query.done.from, (_a = query.done.to) !== null && _a !== void 0 ? _a : pos);\n // Replay the transactions that happened since the start of\n // the request and see if that preserves the result\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (active.hasResult()) {\n updated.push(active);\n continue;\n }\n }\n let current = cState.active.find(a => a.source == query.active.source);\n if (current && current.isPending) {\n if (query.done == null) {\n // Explicitly failed. Should clear the pending status if it\n // hasn't been re-set in the meantime.\n let active = new ActiveSource(query.active.source, 0 /* State.Inactive */);\n for (let tr of query.updates)\n active = active.update(tr, conf);\n if (!active.isPending)\n updated.push(active);\n }\n else {\n // Cleared by subsequent transactions. Restart.\n this.startQuery(current);\n }\n }\n }\n if (updated.length || cState.open && cState.open.disabled)\n this.view.dispatch({ effects: setActiveEffect.of(updated) });\n }\n}, {\n eventHandlers: {\n blur(event) {\n let state = this.view.state.field(completionState, false);\n if (state && state.tooltip && this.view.state.facet(completionConfig).closeOnBlur) {\n let dialog = state.open && getTooltip(this.view, state.open.tooltip);\n if (!dialog || !dialog.dom.contains(event.relatedTarget))\n setTimeout(() => this.view.dispatch({ effects: closeCompletionEffect.of(null) }), 10);\n }\n },\n compositionstart() {\n this.composing = 1 /* CompositionState.Started */;\n },\n compositionend() {\n if (this.composing == 3 /* CompositionState.ChangedAndMoved */) {\n // Safari fires compositionend events synchronously, possibly\n // from inside an update, so dispatch asynchronously to avoid reentrancy\n setTimeout(() => this.view.dispatch({ effects: startCompletionEffect.of(false) }), 20);\n }\n this.composing = 0 /* CompositionState.None */;\n }\n }\n});\nconst windows = typeof navigator == \"object\" && /*@__PURE__*//Win/.test(navigator.platform);\nconst commitCharacters = /*@__PURE__*/Prec.highest(/*@__PURE__*/EditorView.domEventHandlers({\n keydown(event, view) {\n let field = view.state.field(completionState, false);\n if (!field || !field.open || field.open.disabled || field.open.selected < 0 ||\n event.key.length > 1 || event.ctrlKey && !(windows && event.altKey) || event.metaKey)\n return false;\n let option = field.open.options[field.open.selected];\n let result = field.active.find(a => a.source == option.source);\n let commitChars = option.completion.commitCharacters || result.result.commitCharacters;\n if (commitChars && commitChars.indexOf(event.key) > -1)\n applyCompletion(view, option);\n return false;\n }\n}));\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n \".cm-tooltip.cm-tooltip-autocomplete\": {\n \"& > ul\": {\n fontFamily: \"monospace\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden auto\",\n maxWidth_fallback: \"700px\",\n maxWidth: \"min(700px, 95vw)\",\n minWidth: \"250px\",\n maxHeight: \"10em\",\n height: \"100%\",\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n \"& > li, & > completion-section\": {\n padding: \"1px 3px\",\n lineHeight: 1.2\n },\n \"& > li\": {\n overflowX: \"hidden\",\n textOverflow: \"ellipsis\",\n cursor: \"pointer\"\n },\n \"& > completion-section\": {\n display: \"list-item\",\n borderBottom: \"1px solid silver\",\n paddingLeft: \"0.5em\",\n opacity: 0.7\n }\n }\n },\n \"&light .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#17c\",\n color: \"white\",\n },\n \"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#777\",\n },\n \"&dark .cm-tooltip-autocomplete ul li[aria-selected]\": {\n background: \"#347\",\n color: \"white\",\n },\n \"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]\": {\n background: \"#444\",\n },\n \".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after\": {\n content: '\"···\"',\n opacity: 0.5,\n display: \"block\",\n textAlign: \"center\",\n cursor: \"pointer\",\n },\n \".cm-tooltip.cm-completionInfo\": {\n position: \"absolute\",\n padding: \"3px 9px\",\n width: \"max-content\",\n maxWidth: `${400 /* Info.Width */}px`,\n boxSizing: \"border-box\",\n whiteSpace: \"pre-line\"\n },\n \".cm-completionInfo.cm-completionInfo-left\": { right: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-right\": { left: \"100%\" },\n \".cm-completionInfo.cm-completionInfo-left-narrow\": { right: `${30 /* Info.Margin */}px` },\n \".cm-completionInfo.cm-completionInfo-right-narrow\": { left: `${30 /* Info.Margin */}px` },\n \"&light .cm-snippetField\": { backgroundColor: \"#00000022\" },\n \"&dark .cm-snippetField\": { backgroundColor: \"#ffffff22\" },\n \".cm-snippetFieldPosition\": {\n verticalAlign: \"text-top\",\n width: 0,\n height: \"1.15em\",\n display: \"inline-block\",\n margin: \"0 -0.7px -.7em\",\n borderLeft: \"1.4px dotted #888\"\n },\n \".cm-completionMatchedText\": {\n textDecoration: \"underline\"\n },\n \".cm-completionDetail\": {\n marginLeft: \"0.5em\",\n fontStyle: \"italic\"\n },\n \".cm-completionIcon\": {\n fontSize: \"90%\",\n width: \".8em\",\n display: \"inline-block\",\n textAlign: \"center\",\n paddingRight: \".6em\",\n opacity: \"0.6\",\n boxSizing: \"content-box\"\n },\n \".cm-completionIcon-function, .cm-completionIcon-method\": {\n \"&:after\": { content: \"'ƒ'\" }\n },\n \".cm-completionIcon-class\": {\n \"&:after\": { content: \"'○'\" }\n },\n \".cm-completionIcon-interface\": {\n \"&:after\": { content: \"'◌'\" }\n },\n \".cm-completionIcon-variable\": {\n \"&:after\": { content: \"'𝑥'\" }\n },\n \".cm-completionIcon-constant\": {\n \"&:after\": { content: \"'𝐶'\" }\n },\n \".cm-completionIcon-type\": {\n \"&:after\": { content: \"'𝑡'\" }\n },\n \".cm-completionIcon-enum\": {\n \"&:after\": { content: \"'∪'\" }\n },\n \".cm-completionIcon-property\": {\n \"&:after\": { content: \"'□'\" }\n },\n \".cm-completionIcon-keyword\": {\n \"&:after\": { content: \"'🔑\\uFE0E'\" } // Disable emoji rendering\n },\n \".cm-completionIcon-namespace\": {\n \"&:after\": { content: \"'▢'\" }\n },\n \".cm-completionIcon-text\": {\n \"&:after\": { content: \"'abc'\", fontSize: \"50%\", verticalAlign: \"middle\" }\n }\n});\n\nclass FieldPos {\n constructor(field, line, from, to) {\n this.field = field;\n this.line = line;\n this.from = from;\n this.to = to;\n }\n}\nclass FieldRange {\n constructor(field, from, to) {\n this.field = field;\n this.from = from;\n this.to = to;\n }\n map(changes) {\n let from = changes.mapPos(this.from, -1, MapMode.TrackDel);\n let to = changes.mapPos(this.to, 1, MapMode.TrackDel);\n return from == null || to == null ? null : new FieldRange(this.field, from, to);\n }\n}\nclass Snippet {\n constructor(lines, fieldPositions) {\n this.lines = lines;\n this.fieldPositions = fieldPositions;\n }\n instantiate(state, pos) {\n let text = [], lineStart = [pos];\n let lineObj = state.doc.lineAt(pos), baseIndent = /^\\s*/.exec(lineObj.text)[0];\n for (let line of this.lines) {\n if (text.length) {\n let indent = baseIndent, tabs = /^\\t*/.exec(line)[0].length;\n for (let i = 0; i < tabs; i++)\n indent += state.facet(indentUnit);\n lineStart.push(pos + indent.length - tabs);\n line = indent + line.slice(tabs);\n }\n text.push(line);\n pos += line.length + 1;\n }\n let ranges = this.fieldPositions.map(pos => new FieldRange(pos.field, lineStart[pos.line] + pos.from, lineStart[pos.line] + pos.to));\n return { text, ranges };\n }\n static parse(template) {\n let fields = [];\n let lines = [], positions = [], m;\n for (let line of template.split(/\\r\\n?|\\n/)) {\n while (m = /[#$]\\{(?:(\\d+)(?::([^{}]*))?|((?:\\\\[{}]|[^{}])*))\\}/.exec(line)) {\n let seq = m[1] ? +m[1] : null, rawName = m[2] || m[3] || \"\", found = -1;\n // `${0}` is the cursor's final position, after every other tab stop.\n if (seq === 0)\n seq = 1e9;\n let name = rawName.replace(/\\\\[{}]/g, m => m[1]);\n for (let i = 0; i < fields.length; i++) {\n if (seq != null ? fields[i].seq == seq : name ? fields[i].name == name : false)\n found = i;\n }\n if (found < 0) {\n let i = 0;\n while (i < fields.length && (seq == null || (fields[i].seq != null && fields[i].seq < seq)))\n i++;\n fields.splice(i, 0, { seq, name });\n found = i;\n for (let pos of positions)\n if (pos.field >= found)\n pos.field++;\n }\n for (let pos of positions)\n if (pos.line == lines.length && pos.from > m.index) {\n let snip = m[2] ? 3 + (m[1] || \"\").length : 2;\n pos.from -= snip;\n pos.to -= snip;\n }\n positions.push(new FieldPos(found, lines.length, m.index, m.index + name.length));\n line = line.slice(0, m.index) + rawName + line.slice(m.index + m[0].length);\n }\n line = line.replace(/\\\\([{}])/g, (_, brace, index) => {\n for (let pos of positions)\n if (pos.line == lines.length && pos.from > index) {\n pos.from--;\n pos.to--;\n }\n return brace;\n });\n lines.push(line);\n }\n return new Snippet(lines, positions);\n }\n}\nlet fieldMarker = /*@__PURE__*/Decoration.widget({ widget: /*@__PURE__*/new class extends WidgetType {\n toDOM() {\n let span = document.createElement(\"span\");\n span.className = \"cm-snippetFieldPosition\";\n return span;\n }\n ignoreEvent() { return false; }\n } });\nlet fieldRange = /*@__PURE__*/Decoration.mark({ class: \"cm-snippetField\" });\nclass ActiveSnippet {\n constructor(ranges, active) {\n this.ranges = ranges;\n this.active = active;\n this.deco = Decoration.set(ranges.map(r => (r.from == r.to ? fieldMarker : fieldRange).range(r.from, r.to)), true);\n }\n map(changes) {\n let ranges = [];\n for (let r of this.ranges) {\n let mapped = r.map(changes);\n if (!mapped)\n return null;\n ranges.push(mapped);\n }\n return new ActiveSnippet(ranges, this.active);\n }\n selectionInsideField(sel) {\n return sel.ranges.every(range => this.ranges.some(r => r.field == this.active && r.from <= range.from && r.to >= range.to));\n }\n}\nconst setActive = /*@__PURE__*/StateEffect.define({\n map(value, changes) { return value && value.map(changes); }\n});\nconst moveToField = /*@__PURE__*/StateEffect.define();\nconst snippetState = /*@__PURE__*/StateField.define({\n create() { return null; },\n update(value, tr) {\n for (let effect of tr.effects) {\n if (effect.is(setActive))\n return effect.value;\n if (effect.is(moveToField) && value)\n return new ActiveSnippet(value.ranges, effect.value);\n }\n if (value && tr.docChanged)\n value = value.map(tr.changes);\n if (value && tr.selection && !value.selectionInsideField(tr.selection))\n value = null;\n return value;\n },\n provide: f => EditorView.decorations.from(f, val => val ? val.deco : Decoration.none)\n});\nfunction fieldSelection(ranges, field) {\n return EditorSelection.create(ranges.filter(r => r.field == field).map(r => EditorSelection.range(r.from, r.to)));\n}\n/**\nConvert a snippet template to a function that can\n[apply](https://codemirror.net/6/docs/ref/#autocomplete.Completion.apply) it. Snippets are written\nusing syntax like this:\n\n \"for (let ${index} = 0; ${index} < ${end}; ${index}++) {\\n\\t${}\\n}\"\n\nEach `${}` placeholder (you may also use `#{}`) indicates a field\nthat the user can fill in. Its name, if any, will be the default\ncontent for the field.\n\nWhen the snippet is activated by calling the returned function,\nthe code is inserted at the given position. Newlines in the\ntemplate are indented by the indentation of the start line, plus\none [indent unit](https://codemirror.net/6/docs/ref/#language.indentUnit) per tab character after\nthe newline.\n\nOn activation, (all instances of) the first field are selected.\nThe user can move between fields with Tab and Shift-Tab as long as\nthe fields are active. Moving to the last field or moving the\ncursor out of the current field deactivates the fields.\n\nThe order of fields defaults to textual order, but you can add\nnumbers to placeholders (`${1}` or `${1:defaultText}`) to provide\na custom order. `${0}` is special—it is always the last stop, where\nthe cursor ends up after tabbing through the other fields.\n\nTo include a literal `{` or `}` in your template, put a backslash\nin front of it. This will be removed and the brace will not be\ninterpreted as indicating a placeholder.\n*/\nfunction snippet(template) {\n let snippet = Snippet.parse(template);\n return (editor, completion, from, to) => {\n let { text, ranges } = snippet.instantiate(editor.state, from);\n let { main } = editor.state.selection;\n let spec = {\n changes: { from, to: to == main.from ? main.to : to, insert: Text.of(text) },\n scrollIntoView: true,\n annotations: completion ? [pickedCompletion.of(completion), Transaction.userEvent.of(\"input.complete\")] : undefined\n };\n if (ranges.length)\n spec.selection = fieldSelection(ranges, 0);\n if (ranges.some(r => r.field > 0)) {\n let active = new ActiveSnippet(ranges, 0);\n let effects = spec.effects = [setActive.of(active)];\n if (editor.state.field(snippetState, false) === undefined)\n effects.push(StateEffect.appendConfig.of([snippetState, addSnippetKeymap, snippetPointerHandler, baseTheme]));\n }\n editor.dispatch(editor.state.update(spec));\n };\n}\nfunction moveField(dir) {\n return ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active || dir < 0 && active.active == 0)\n return false;\n let next = active.active + dir, last = dir > 0 && !active.ranges.some(r => r.field == next + dir);\n dispatch(state.update({\n selection: fieldSelection(active.ranges, next),\n effects: setActive.of(last ? null : new ActiveSnippet(active.ranges, next)),\n scrollIntoView: true\n }));\n return true;\n };\n}\n/**\nA command that clears the active snippet, if any.\n*/\nconst clearSnippet = ({ state, dispatch }) => {\n let active = state.field(snippetState, false);\n if (!active)\n return false;\n dispatch(state.update({ effects: setActive.of(null) }));\n return true;\n};\n/**\nMove to the next snippet field, if available.\n*/\nconst nextSnippetField = /*@__PURE__*/moveField(1);\n/**\nMove to the previous snippet field, if available.\n*/\nconst prevSnippetField = /*@__PURE__*/moveField(-1);\n/**\nCheck if there is an active snippet with a next field for\n`nextSnippetField` to move to.\n*/\nfunction hasNextSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.ranges.some(r => r.field == active.active + 1));\n}\n/**\nReturns true if there is an active snippet and a previous field\nfor `prevSnippetField` to move to.\n*/\nfunction hasPrevSnippetField(state) {\n let active = state.field(snippetState, false);\n return !!(active && active.active > 0);\n}\nconst defaultSnippetKeymap = [\n { key: \"Tab\", run: nextSnippetField, shift: prevSnippetField },\n { key: \"Escape\", run: clearSnippet }\n];\n/**\nA facet that can be used to configure the key bindings used by\nsnippets. The default binds Tab to\n[`nextSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.nextSnippetField), Shift-Tab to\n[`prevSnippetField`](https://codemirror.net/6/docs/ref/#autocomplete.prevSnippetField), and Escape\nto [`clearSnippet`](https://codemirror.net/6/docs/ref/#autocomplete.clearSnippet).\n*/\nconst snippetKeymap = /*@__PURE__*/Facet.define({\n combine(maps) { return maps.length ? maps[0] : defaultSnippetKeymap; }\n});\nconst addSnippetKeymap = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.compute([snippetKeymap], state => state.facet(snippetKeymap)));\n/**\nCreate a completion from a snippet. Returns an object with the\nproperties from `completion`, plus an `apply` function that\napplies the snippet.\n*/\nfunction snippetCompletion(template, completion) {\n return { ...completion, apply: snippet(template) };\n}\nconst snippetPointerHandler = /*@__PURE__*/EditorView.domEventHandlers({\n mousedown(event, view) {\n let active = view.state.field(snippetState, false), pos;\n if (!active || (pos = view.posAtCoords({ x: event.clientX, y: event.clientY })) == null)\n return false;\n let match = active.ranges.find(r => r.from <= pos && r.to >= pos);\n if (!match || match.field == active.active)\n return false;\n view.dispatch({\n selection: fieldSelection(active.ranges, match.field),\n effects: setActive.of(active.ranges.some(r => r.field > match.field)\n ? new ActiveSnippet(active.ranges, match.field) : null),\n scrollIntoView: true\n });\n return true;\n }\n});\n\nfunction wordRE(wordChars) {\n let escaped = wordChars.replace(/[\\]\\-\\\\]/g, \"\\\\$&\");\n try {\n return new RegExp(`[\\\\p{Alphabetic}\\\\p{Number}_${escaped}]+`, \"ug\");\n }\n catch (_a) {\n return new RegExp(`[\\w${escaped}]`, \"g\");\n }\n}\nfunction mapRE(re, f) {\n return new RegExp(f(re.source), re.unicode ? \"u\" : \"\");\n}\nconst wordCaches = /*@__PURE__*/Object.create(null);\nfunction wordCache(wordChars) {\n return wordCaches[wordChars] || (wordCaches[wordChars] = new WeakMap);\n}\nfunction storeWords(doc, wordRE, result, seen, ignoreAt) {\n for (let lines = doc.iterLines(), pos = 0; !lines.next().done;) {\n let { value } = lines, m;\n wordRE.lastIndex = 0;\n while (m = wordRE.exec(value)) {\n if (!seen[m[0]] && pos + m.index != ignoreAt) {\n result.push({ type: \"text\", label: m[0] });\n seen[m[0]] = true;\n if (result.length >= 2000 /* C.MaxList */)\n return;\n }\n }\n pos += value.length + 1;\n }\n}\nfunction collectWords(doc, cache, wordRE, to, ignoreAt) {\n let big = doc.length >= 1000 /* C.MinCacheLen */;\n let cached = big && cache.get(doc);\n if (cached)\n return cached;\n let result = [], seen = Object.create(null);\n if (doc.children) {\n let pos = 0;\n for (let ch of doc.children) {\n if (ch.length >= 1000 /* C.MinCacheLen */) {\n for (let c of collectWords(ch, cache, wordRE, to - pos, ignoreAt - pos)) {\n if (!seen[c.label]) {\n seen[c.label] = true;\n result.push(c);\n }\n }\n }\n else {\n storeWords(ch, wordRE, result, seen, ignoreAt - pos);\n }\n pos += ch.length + 1;\n }\n }\n else {\n storeWords(doc, wordRE, result, seen, ignoreAt);\n }\n if (big && result.length < 2000 /* C.MaxList */)\n cache.set(doc, result);\n return result;\n}\n/**\nA completion source that will scan the document for words (using a\n[character categorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer)), and\nreturn those as completions.\n*/\nconst completeAnyWord = context => {\n var _a;\n let wordChars = (_a = context.state.languageDataAt(\"wordChars\", context.pos)[0]) !== null && _a !== void 0 ? _a : \"\";\n let re = wordRE(wordChars);\n let token = context.matchBefore(mapRE(re, s => s + \"$\"));\n if (!token && !context.explicit)\n return null;\n let from = token ? token.from : context.pos;\n let options = collectWords(context.state.doc, wordCache(wordChars), re, 50000 /* C.Range */, from);\n return { from, options, validFor: mapRE(re, s => \"^\" + s) };\n};\n\nconst defaults = {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"'],\n before: \")]}:;>\",\n stringPrefixes: []\n};\nconst closeBracketEffect = /*@__PURE__*/StateEffect.define({\n map(value, mapping) {\n let mapped = mapping.mapPos(value, -1, MapMode.TrackAfter);\n return mapped == null ? undefined : mapped;\n }\n});\nconst closedBracket = /*@__PURE__*/new class extends RangeValue {\n};\nclosedBracket.startSide = 1;\nclosedBracket.endSide = -1;\nconst bracketState = /*@__PURE__*/StateField.define({\n create() { return RangeSet.empty; },\n update(value, tr) {\n value = value.map(tr.changes);\n if (tr.selection) {\n let line = tr.state.doc.lineAt(tr.selection.main.head);\n value = value.update({ filter: from => from >= line.from && from <= line.to });\n }\n for (let effect of tr.effects)\n if (effect.is(closeBracketEffect))\n value = value.update({ add: [closedBracket.range(effect.value, effect.value + 1)] });\n return value;\n }\n});\n/**\nExtension to enable bracket-closing behavior. When a closeable\nbracket is typed, its closing bracket is immediately inserted\nafter the cursor. When closing a bracket directly in front of a\nclosing bracket inserted by the extension, the cursor moves over\nthat bracket.\n*/\nfunction closeBrackets() {\n return [inputHandler, bracketState];\n}\nconst definedClosing = \"()[]{}<>«»»«[]{}\";\nfunction closing(ch) {\n for (let i = 0; i < definedClosing.length; i += 2)\n if (definedClosing.charCodeAt(i) == ch)\n return definedClosing.charAt(i + 1);\n return fromCodePoint(ch < 128 ? ch : ch + 1);\n}\nfunction config(state, pos) {\n return state.languageDataAt(\"closeBrackets\", pos)[0] || defaults;\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\nconst inputHandler = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, insert) => {\n if ((android ? view.composing : view.compositionStarted) || view.state.readOnly)\n return false;\n let sel = view.state.selection.main;\n if (insert.length > 2 || insert.length == 2 && codePointSize(codePointAt(insert, 0)) == 1 ||\n from != sel.from || to != sel.to)\n return false;\n let tr = insertBracket(view.state, insert);\n if (!tr)\n return false;\n view.dispatch(tr);\n return true;\n});\n/**\nCommand that implements deleting a pair of matching brackets when\nthe cursor is between them.\n*/\nconst deleteBracketPair = ({ state, dispatch }) => {\n if (state.readOnly)\n return false;\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty) {\n let before = prevChar(state.doc, range.head);\n for (let token of tokens) {\n if (token == before && nextChar(state.doc, range.head) == closing(codePointAt(token, 0)))\n return { changes: { from: range.head - token.length, to: range.head + token.length },\n range: EditorSelection.cursor(range.head - token.length) };\n }\n }\n return { range: dont = range };\n });\n if (!dont)\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete.backward\" }));\n return !dont;\n};\n/**\nClose-brackets related key bindings. Binds Backspace to\n[`deleteBracketPair`](https://codemirror.net/6/docs/ref/#autocomplete.deleteBracketPair).\n*/\nconst closeBracketsKeymap = [\n { key: \"Backspace\", run: deleteBracketPair }\n];\n/**\nImplements the extension's behavior on text insertion. If the\ngiven string counts as a bracket in the language around the\nselection, and replacing the selection with it requires custom\nbehavior (inserting a closing version or skipping past a\npreviously-closed bracket), this function returns a transaction\nrepresenting that custom behavior. (You only need this if you want\nto programmatically insert brackets—the\n[`closeBrackets`](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets) extension will\ntake care of running this for user input.)\n*/\nfunction insertBracket(state, bracket) {\n let conf = config(state, state.selection.main.head);\n let tokens = conf.brackets || defaults.brackets;\n for (let tok of tokens) {\n let closed = closing(codePointAt(tok, 0));\n if (bracket == tok)\n return closed == tok ? handleSame(state, tok, tokens.indexOf(tok + tok + tok) > -1, conf)\n : handleOpen(state, tok, closed, conf.before || defaults.before);\n if (bracket == closed && closedBracketAt(state, state.selection.main.from))\n return handleClose(state, tok, closed);\n }\n return null;\n}\nfunction closedBracketAt(state, pos) {\n let found = false;\n state.field(bracketState).between(0, state.doc.length, from => {\n if (from == pos)\n found = true;\n });\n return found;\n}\nfunction nextChar(doc, pos) {\n let next = doc.sliceString(pos, pos + 2);\n return next.slice(0, codePointSize(codePointAt(next, 0)));\n}\nfunction prevChar(doc, pos) {\n let prev = doc.sliceString(pos - 2, pos);\n return codePointSize(codePointAt(prev, 0)) == prev.length ? prev : prev.slice(1);\n}\nfunction handleOpen(state, open, close, closeBefore) {\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: open, from: range.from }, { insert: close, from: range.to }],\n effects: closeBracketEffect.of(range.to + open.length),\n range: EditorSelection.range(range.anchor + open.length, range.head + open.length) };\n let next = nextChar(state.doc, range.head);\n if (!next || /\\s/.test(next) || closeBefore.indexOf(next) > -1)\n return { changes: { insert: open + close, from: range.head },\n effects: closeBracketEffect.of(range.head + open.length),\n range: EditorSelection.cursor(range.head + open.length) };\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction handleClose(state, _open, close) {\n let dont = null, changes = state.changeByRange(range => {\n if (range.empty && nextChar(state.doc, range.head) == close)\n return { changes: { from: range.head, to: range.head + close.length, insert: close },\n range: EditorSelection.cursor(range.head + close.length) };\n return dont = { range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\n// Handles cases where the open and close token are the same, and\n// possibly triple quotes (as in `\"\"\"abc\"\"\"`-style quoting).\nfunction handleSame(state, token, allowTriple, config) {\n let stringPrefixes = config.stringPrefixes || defaults.stringPrefixes;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty)\n return { changes: [{ insert: token, from: range.from }, { insert: token, from: range.to }],\n effects: closeBracketEffect.of(range.to + token.length),\n range: EditorSelection.range(range.anchor + token.length, range.head + token.length) };\n let pos = range.head, next = nextChar(state.doc, pos), start;\n if (next == token) {\n if (nodeStart(state, pos)) {\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (closedBracketAt(state, pos)) {\n let isTriple = allowTriple && state.sliceDoc(pos, pos + token.length * 3) == token + token + token;\n let content = isTriple ? token + token + token : token;\n return { changes: { from: pos, to: pos + content.length, insert: content },\n range: EditorSelection.cursor(pos + content.length) };\n }\n }\n else if (allowTriple && state.sliceDoc(pos - 2 * token.length, pos) == token + token &&\n (start = canStartStringAt(state, pos - 2 * token.length, stringPrefixes)) > -1 &&\n nodeStart(state, start)) {\n return { changes: { insert: token + token + token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n else if (state.charCategorizer(pos)(next) != CharCategory.Word) {\n if (canStartStringAt(state, pos, stringPrefixes) > -1 && !probablyInString(state, pos, token, stringPrefixes))\n return { changes: { insert: token + token, from: pos },\n effects: closeBracketEffect.of(pos + token.length),\n range: EditorSelection.cursor(pos + token.length) };\n }\n return { range: dont = range };\n });\n return dont ? null : state.update(changes, {\n scrollIntoView: true,\n userEvent: \"input.type\"\n });\n}\nfunction nodeStart(state, pos) {\n let tree = syntaxTree(state).resolveInner(pos + 1);\n return tree.parent && tree.from == pos;\n}\nfunction probablyInString(state, pos, quoteToken, prefixes) {\n let node = syntaxTree(state).resolveInner(pos, -1);\n let maxPrefix = prefixes.reduce((m, p) => Math.max(m, p.length), 0);\n for (let i = 0; i < 5; i++) {\n let start = state.sliceDoc(node.from, Math.min(node.to, node.from + quoteToken.length + maxPrefix));\n let quotePos = start.indexOf(quoteToken);\n if (!quotePos || quotePos > -1 && prefixes.indexOf(start.slice(0, quotePos)) > -1) {\n let first = node.firstChild;\n while (first && first.from == node.from && first.to - first.from > quoteToken.length + quotePos) {\n if (state.sliceDoc(first.to - quoteToken.length, first.to) == quoteToken)\n return false;\n first = first.firstChild;\n }\n return true;\n }\n let parent = node.to == pos && node.parent;\n if (!parent)\n break;\n node = parent;\n }\n return false;\n}\nfunction canStartStringAt(state, pos, prefixes) {\n let charCat = state.charCategorizer(pos);\n if (charCat(state.sliceDoc(pos - 1, pos)) != CharCategory.Word)\n return pos;\n for (let prefix of prefixes) {\n let start = pos - prefix.length;\n if (state.sliceDoc(start, pos) == prefix && charCat(state.sliceDoc(start - 1, start)) != CharCategory.Word)\n return start;\n }\n return -1;\n}\n\n/**\nReturns an extension that enables autocompletion.\n*/\nfunction autocompletion(config = {}) {\n return [\n commitCharacters,\n completionState,\n completionConfig.of(config),\n completionPlugin,\n completionKeymapExt,\n baseTheme\n ];\n}\n/**\nBasic keybindings for autocompletion.\n\n - Ctrl-Space (and Alt-\\` or Alt-i on macOS): [`startCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.startCompletion)\n - Escape: [`closeCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.closeCompletion)\n - ArrowDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true)`\n - ArrowUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false)`\n - PageDown: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(true, \"page\")`\n - PageUp: [`moveCompletionSelection`](https://codemirror.net/6/docs/ref/#autocomplete.moveCompletionSelection)`(false, \"page\")`\n - Enter: [`acceptCompletion`](https://codemirror.net/6/docs/ref/#autocomplete.acceptCompletion)\n*/\nconst completionKeymap = [\n { key: \"Ctrl-Space\", run: startCompletion },\n { mac: \"Alt-`\", run: startCompletion },\n { mac: \"Alt-i\", run: startCompletion },\n { key: \"Escape\", run: closeCompletion },\n { key: \"ArrowDown\", run: /*@__PURE__*/moveCompletionSelection(true) },\n { key: \"ArrowUp\", run: /*@__PURE__*/moveCompletionSelection(false) },\n { key: \"PageDown\", run: /*@__PURE__*/moveCompletionSelection(true, \"page\") },\n { key: \"PageUp\", run: /*@__PURE__*/moveCompletionSelection(false, \"page\") },\n { key: \"Enter\", run: acceptCompletion }\n];\nconst completionKeymapExt = /*@__PURE__*/Prec.highest(/*@__PURE__*/keymap.computeN([completionConfig], state => state.facet(completionConfig).defaultKeymap ? [completionKeymap] : []));\n/**\nGet the current completion status. When completions are available,\nthis will return `\"active\"`. When completions are pending (in the\nprocess of being queried), this returns `\"pending\"`. Otherwise, it\nreturns `null`.\n*/\nfunction completionStatus(state) {\n let cState = state.field(completionState, false);\n return cState && cState.active.some(a => a.isPending) ? \"pending\"\n : cState && cState.active.some(a => a.state != 0 /* State.Inactive */) ? \"active\" : null;\n}\nconst completionArrayCache = /*@__PURE__*/new WeakMap;\n/**\nReturns the available completions as an array.\n*/\nfunction currentCompletions(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n if (!open || open.disabled)\n return [];\n let completions = completionArrayCache.get(open.options);\n if (!completions)\n completionArrayCache.set(open.options, completions = open.options.map(o => o.completion));\n return completions;\n}\n/**\nReturn the currently selected completion, if any.\n*/\nfunction selectedCompletion(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.options[open.selected].completion : null;\n}\n/**\nReturns the currently selected position in the active completion\nlist, or null if no completions are active.\n*/\nfunction selectedCompletionIndex(state) {\n var _a;\n let open = (_a = state.field(completionState, false)) === null || _a === void 0 ? void 0 : _a.open;\n return open && !open.disabled && open.selected >= 0 ? open.selected : null;\n}\n/**\nCreate an effect that can be attached to a transaction to change\nthe currently selected completion.\n*/\nfunction setSelectedCompletion(index) {\n return setSelectedEffect.of(index);\n}\n\nexport { CompletionContext, acceptCompletion, autocompletion, clearSnippet, closeBrackets, closeBracketsKeymap, closeCompletion, completeAnyWord, completeFromList, completionKeymap, completionStatus, currentCompletions, deleteBracketPair, hasNextSnippetField, hasPrevSnippetField, ifIn, ifNotIn, insertBracket, insertCompletionText, moveCompletionSelection, nextSnippetField, pickedCompletion, prevSnippetField, selectedCompletion, selectedCompletionIndex, setSelectedCompletion, snippet, snippetCompletion, snippetKeymap, startCompletion };\n","import { parser } from '@lezer/javascript';\nimport { syntaxTree, LRLanguage, indentNodeProp, continuedIndent, flatIndent, delimitedIndent, foldNodeProp, foldInside, defineLanguageFacet, sublanguageProp, LanguageSupport } from '@codemirror/language';\nimport { EditorSelection } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\n\n/**\nA collection of JavaScript-related\n[snippets](https://codemirror.net/6/docs/ref/#autocomplete.snippet).\n*/\nconst snippets = [\n /*@__PURE__*/snippetCompletion(\"function ${name}(${params}) {\\n\\t${}\\n}\", {\n label: \"function\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for (let ${index} = 0; ${index} < ${bound}; ${index}++) {\\n\\t${}\\n}\", {\n label: \"for\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for (let ${name} of ${collection}) {\\n\\t${}\\n}\", {\n label: \"for\",\n detail: \"of loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"do {\\n\\t${}\\n} while (${})\", {\n label: \"do\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"while (${}) {\\n\\t${}\\n}\", {\n label: \"while\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"try {\\n\\t${}\\n} catch (${error}) {\\n\\t${}\\n}\", {\n label: \"try\",\n detail: \"/ catch block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n}\", {\n label: \"if\",\n detail: \"block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if (${}) {\\n\\t${}\\n} else {\\n\\t${}\\n}\", {\n label: \"if\",\n detail: \"/ else block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"class ${name} {\\n\\tconstructor(${params}) {\\n\\t\\t${}\\n\\t}\\n}\", {\n label: \"class\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import {${names}} from \\\"${module}\\\"\\n${}\", {\n label: \"import\",\n detail: \"named\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import ${name} from \\\"${module}\\\"\\n${}\", {\n label: \"import\",\n detail: \"default\",\n type: \"keyword\"\n })\n];\n/**\nA collection of snippet completions for TypeScript. Includes the\nJavaScript [snippets](https://codemirror.net/6/docs/ref/#lang-javascript.snippets).\n*/\nconst typescriptSnippets = /*@__PURE__*/snippets.concat([\n /*@__PURE__*/snippetCompletion(\"interface ${name} {\\n\\t${}\\n}\", {\n label: \"interface\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"type ${name} = ${type}\", {\n label: \"type\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"enum ${name} {\\n\\t${}\\n}\", {\n label: \"enum\",\n detail: \"definition\",\n type: \"keyword\"\n })\n]);\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n \"Script\", \"Block\",\n \"FunctionExpression\", \"FunctionDeclaration\", \"ArrowFunction\", \"MethodDeclaration\",\n \"ForStatement\"\n]);\nfunction defID(type) {\n return (node, def) => {\n let id = node.node.getChild(\"VariableDefinition\");\n if (id)\n def(id, type);\n return true;\n };\n}\nconst functionContext = [\"FunctionDeclaration\"];\nconst gatherCompletions = {\n FunctionDeclaration: /*@__PURE__*/defID(\"function\"),\n ClassDeclaration: /*@__PURE__*/defID(\"class\"),\n ClassExpression: () => true,\n EnumDeclaration: /*@__PURE__*/defID(\"constant\"),\n TypeAliasDeclaration: /*@__PURE__*/defID(\"type\"),\n NamespaceDeclaration: /*@__PURE__*/defID(\"namespace\"),\n VariableDefinition(node, def) { if (!node.matchContext(functionContext))\n def(node, \"variable\"); },\n TypeDefinition(node, def) { def(node, \"type\"); },\n __proto__: null\n};\nfunction getScope(doc, node) {\n let cached = cache.get(node);\n if (cached)\n return cached;\n let completions = [], top = true;\n function def(node, type) {\n let name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (top) {\n top = false;\n }\n else if (node.name) {\n let gather = gatherCompletions[node.name];\n if (gather && gather(node, def) || ScopeNodes.has(node.name))\n return false;\n }\n else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (let c of getScope(doc, node.node))\n completions.push(c);\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\nconst Identifier = /^[\\w$\\xa1-\\uffff][\\w$\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\n \"TemplateString\", \"String\", \"RegExp\",\n \"LineComment\", \"BlockComment\",\n \"VariableDefinition\", \"TypeDefinition\", \"Label\",\n \"PropertyDefinition\", \"PropertyName\",\n \"PrivatePropertyDefinition\", \"PrivatePropertyName\",\n \"JSXText\", \"JSXAttributeValue\", \"JSXOpenTag\", \"JSXCloseTag\", \"JSXSelfClosingTag\",\n \".\", \"?.\"\n];\n/**\nCompletion source that looks up locally defined names in\nJavaScript code.\n*/\nfunction localCompletionSource(context) {\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1)\n return null;\n let isWord = inner.name == \"VariableName\" ||\n inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n if (!isWord && !context.explicit)\n return null;\n let options = [];\n for (let pos = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name))\n options = options.concat(getScope(context.state.doc, pos));\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier\n };\n}\nfunction pathFor(read, member, name) {\n var _a;\n let path = [];\n for (;;) {\n let obj = member.firstChild, prop;\n if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"VariableName\") {\n path.push(read(obj));\n return { path: path.reverse(), name };\n }\n else if ((obj === null || obj === void 0 ? void 0 : obj.name) == \"MemberExpression\" && ((_a = (prop = obj.lastChild)) === null || _a === void 0 ? void 0 : _a.name) == \"PropertyName\") {\n path.push(read(prop));\n member = obj;\n }\n else {\n return null;\n }\n }\n}\n/**\nHelper function for defining JavaScript completion sources. It\nreturns the completable name and object path for a completion\ncontext, or null if no name/property completion should happen at\nthat position. For example, when completing after `a.b.c` it will\nreturn `{path: [\"a\", \"b\"], name: \"c\"}`. When completing after `x`\nit will return `{path: [], name: \"x\"}`. When not in a property or\nname, it will return null if `context.explicit` is false, and\n`{path: [], name: \"\"}` otherwise.\n*/\nfunction completionPath(context) {\n let read = (node) => context.state.doc.sliceString(node.from, node.to);\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (inner.name == \"PropertyName\") {\n return pathFor(read, inner.parent, read(inner));\n }\n else if ((inner.name == \".\" || inner.name == \"?.\") && inner.parent.name == \"MemberExpression\") {\n return pathFor(read, inner.parent, \"\");\n }\n else if (dontComplete.indexOf(inner.name) > -1) {\n return null;\n }\n else if (inner.name == \"VariableName\" || inner.to - inner.from < 20 && Identifier.test(read(inner))) {\n return { path: [], name: read(inner) };\n }\n else if (inner.name == \"MemberExpression\") {\n return pathFor(read, inner, \"\");\n }\n else {\n return context.explicit ? { path: [], name: \"\" } : null;\n }\n}\nfunction enumeratePropertyCompletions(obj, top) {\n let originalObj = obj;\n let options = [], seen = new Set;\n for (let depth = 0;; depth++) {\n for (let name of (Object.getOwnPropertyNames || Object.keys)(obj)) {\n if (!/^[a-zA-Z_$\\xaa-\\uffdc][\\w$\\xaa-\\uffdc]*$/.test(name) || seen.has(name))\n continue;\n seen.add(name);\n let value;\n try {\n value = originalObj[name];\n }\n catch (_) {\n continue;\n }\n options.push({\n label: name,\n type: typeof value == \"function\" ? (/^[A-Z]/.test(name) ? \"class\" : top ? \"function\" : \"method\")\n : top ? \"variable\" : \"property\",\n boost: -depth\n });\n }\n let next = Object.getPrototypeOf(obj);\n if (!next)\n return options;\n obj = next;\n }\n}\n/**\nDefines a [completion source](https://codemirror.net/6/docs/ref/#autocomplete.CompletionSource) that\ncompletes from the given scope object (for example `globalThis`).\nWill enter properties of the object when completing properties on\na directly-named path.\n*/\nfunction scopeCompletionSource(scope) {\n let cache = new Map;\n return (context) => {\n let path = completionPath(context);\n if (!path)\n return null;\n let target = scope;\n for (let step of path.path) {\n target = target[step];\n if (!target)\n return null;\n }\n let options = cache.get(target);\n if (!options)\n cache.set(target, options = enumeratePropertyCompletions(target, !path.path.length));\n return {\n from: context.pos - path.name.length,\n options,\n validFor: Identifier\n };\n };\n}\n\n/**\nA language provider based on the [Lezer JavaScript\nparser](https://github.com/lezer-parser/javascript), extended with\nhighlighting and indentation information.\n*/\nconst javascriptLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"javascript\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n IfStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|else\\b)/ }),\n TryStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|catch\\b|finally\\b)/ }),\n LabeledStatement: flatIndent,\n SwitchBody: context => {\n let after = context.textAfter, closed = /^\\s*\\}/.test(after), isCase = /^\\s*(case|default)\\b/.test(after);\n return context.baseIndent + (closed ? 0 : isCase ? 1 : 2) * context.unit;\n },\n Block: /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n ArrowFunction: cx => cx.baseIndent + cx.unit,\n \"TemplateString BlockComment\": () => null,\n \"Statement Property\": /*@__PURE__*/continuedIndent({ except: /^\\s*{/ }),\n JSXElement(context) {\n let closed = /^\\s*<\\//.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n JSXEscape(context) {\n let closed = /\\s*\\}/.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n \"JSXOpenTag JSXSelfClosingTag\"(context) {\n return context.column(context.node.from) + context.unit;\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType\": foldInside,\n BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; },\n JSXElement(tree) {\n let open = tree.firstChild;\n if (!open || open.name == \"JSXSelfClosingTag\")\n return null;\n let close = tree.lastChild;\n return { from: open.to, to: close.type.isError ? tree.to : close.from };\n },\n \"JSXSelfClosingTag JSXOpenTag\"(tree) {\n var _a;\n let name = (_a = tree.firstChild) === null || _a === void 0 ? void 0 : _a.nextSibling, close = tree.lastChild;\n if (!name || name.type.isError)\n return null;\n return { from: name.to, to: close.type.isError ? tree.to : close.from };\n }\n })\n ]\n }),\n languageData: {\n closeBrackets: { brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"`\"] },\n commentTokens: { line: \"//\", block: { open: \"/*\", close: \"*/\" } },\n indentOnInput: /^\\s*(?:case |default:|\\{|\\}|<\\/)$/,\n wordChars: \"$\"\n }\n});\nconst jsxSublanguage = {\n test: node => /^JSX/.test(node.name),\n facet: /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"{/*\", close: \"*/}\" } } })\n};\n/**\nA language provider for TypeScript.\n*/\nconst typescriptLanguage = /*@__PURE__*/javascriptLanguage.configure({ dialect: \"ts\" }, \"typescript\");\n/**\nLanguage provider for JSX.\n*/\nconst jsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n dialect: \"jsx\",\n props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n});\n/**\nLanguage provider for JSX + TypeScript.\n*/\nconst tsxLanguage = /*@__PURE__*/javascriptLanguage.configure({\n dialect: \"jsx ts\",\n props: [/*@__PURE__*/sublanguageProp.add(n => n.isTop ? [jsxSublanguage] : undefined)]\n}, \"typescript\");\nlet kwCompletion = (name) => ({ label: name, type: \"keyword\" });\nconst keywords = /*@__PURE__*/\"break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield\".split(\" \").map(kwCompletion);\nconst typescriptKeywords = /*@__PURE__*/keywords.concat(/*@__PURE__*/[\"declare\", \"implements\", \"private\", \"protected\", \"public\"].map(kwCompletion));\n/**\nJavaScript support. Includes [snippet](https://codemirror.net/6/docs/ref/#lang-javascript.snippets)\nand local variable completion.\n*/\nfunction javascript(config = {}) {\n let lang = config.jsx ? (config.typescript ? tsxLanguage : jsxLanguage)\n : config.typescript ? typescriptLanguage : javascriptLanguage;\n let completions = config.typescript ? typescriptSnippets.concat(typescriptKeywords) : snippets.concat(keywords);\n return new LanguageSupport(lang, [\n javascriptLanguage.data.of({\n autocomplete: ifNotIn(dontComplete, completeFromList(completions))\n }),\n javascriptLanguage.data.of({\n autocomplete: localCompletionSource\n }),\n config.jsx ? autoCloseTags : [],\n ]);\n}\nfunction findOpenTag(node) {\n for (;;) {\n if (node.name == \"JSXOpenTag\" || node.name == \"JSXSelfClosingTag\" || node.name == \"JSXFragmentTag\")\n return node;\n if (node.name == \"JSXEscape\" || !node.parent)\n return null;\n node = node.parent;\n }\n}\nfunction elementName(doc, tree, max = doc.length) {\n for (let ch = tree === null || tree === void 0 ? void 0 : tree.firstChild; ch; ch = ch.nextSibling) {\n if (ch.name == \"JSXIdentifier\" || ch.name == \"JSXBuiltin\" || ch.name == \"JSXNamespacedName\" ||\n ch.name == \"JSXMemberExpression\")\n return doc.sliceString(ch.from, Math.min(ch.to, max));\n }\n return \"\";\n}\nconst android = typeof navigator == \"object\" && /*@__PURE__*//Android\\b/.test(navigator.userAgent);\n/**\nExtension that will automatically insert JSX close tags when a `>` or\n`/` is typed.\n*/\nconst autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text, defaultInsert) => {\n if ((android ? view.composing : view.compositionStarted) || view.state.readOnly ||\n from != to || (text != \">\" && text != \"/\") ||\n !javascriptLanguage.isActiveAt(view.state, from, -1))\n return false;\n let base = defaultInsert(), { state } = base;\n let closeTags = state.changeByRange(range => {\n var _a;\n let { head } = range, around = syntaxTree(state).resolveInner(head - 1, -1), name;\n if (around.name == \"JSXStartTag\")\n around = around.parent;\n if (state.doc.sliceString(head - 1, head) != text || around.name == \"JSXAttributeValue\" && around.to > head) ;\n else if (text == \">\" && around.name == \"JSXFragmentTag\") {\n return { range, changes: { from: head, insert: `</>` } };\n }\n else if (text == \"/\" && around.name == \"JSXStartCloseTag\") {\n let empty = around.parent, base = empty.parent;\n if (base && empty.from == head - 2 &&\n ((name = elementName(state.doc, base.firstChild, head)) || ((_a = base.firstChild) === null || _a === void 0 ? void 0 : _a.name) == \"JSXFragmentTag\")) {\n let insert = `${name}>`;\n return { range: EditorSelection.cursor(head + insert.length, -1), changes: { from: head, insert } };\n }\n }\n else if (text == \">\") {\n let openTag = findOpenTag(around);\n if (openTag && openTag.name == \"JSXOpenTag\" &&\n !/^\\/?>|^<\\//.test(state.doc.sliceString(head, head + 2)) &&\n (name = elementName(state.doc, openTag, head)))\n return { range, changes: { from: head, insert: `</${name}>` } };\n }\n return { range };\n });\n if (closeTags.changes.empty)\n return false;\n view.dispatch([\n base,\n state.update(closeTags, { userEvent: \"input.complete\", scrollIntoView: true })\n ]);\n return true;\n});\n\n/**\nConnects an [ESLint](https://eslint.org/) linter to CodeMirror's\n[lint](https://codemirror.net/6/docs/ref/#lint) integration. `eslint` should be an instance of the\n[`Linter`](https://eslint.org/docs/developer-guide/nodejs-api#linter)\nclass, and `config` an optional ESLint configuration. The return\nvalue of this function can be passed to [`linter`](https://codemirror.net/6/docs/ref/#lint.linter)\nto create a JavaScript linting extension.\n\nNote that ESLint targets node, and is tricky to run in the\nbrowser. The\n[eslint-linter-browserify](https://github.com/UziTech/eslint-linter-browserify)\npackage may help with that (see\n[example](https://github.com/UziTech/eslint-linter-browserify/blob/master/example/script.js)).\n*/\nfunction esLint(eslint, config) {\n if (!config) {\n config = {\n parserOptions: { ecmaVersion: 2019, sourceType: \"module\" },\n env: { browser: true, node: true, es6: true, es2015: true, es2017: true, es2020: true },\n rules: {}\n };\n eslint.getRules().forEach((desc, name) => {\n var _a;\n if ((_a = desc.meta.docs) === null || _a === void 0 ? void 0 : _a.recommended)\n config.rules[name] = 2;\n });\n }\n return (view) => {\n let { state } = view, found = [];\n for (let { from, to } of javascriptLanguage.findRegions(state)) {\n let fromLine = state.doc.lineAt(from), offset = { line: fromLine.number - 1, col: from - fromLine.from, pos: from };\n for (let d of eslint.verify(state.sliceDoc(from, to), config))\n found.push(translateDiagnostic(d, state.doc, offset));\n }\n return found;\n };\n}\nfunction mapPos(line, col, doc, offset) {\n return doc.line(line + offset.line).from + col + (line == 1 ? offset.col - 1 : -1);\n}\nfunction translateDiagnostic(input, doc, offset) {\n let start = mapPos(input.line, input.column, doc, offset);\n let result = {\n from: start,\n to: input.endLine != null && input.endColumn != 1 ? mapPos(input.endLine, input.endColumn, doc, offset) : start,\n message: input.message,\n source: input.ruleId ? \"eslint:\" + input.ruleId : \"eslint\",\n severity: input.severity == 1 ? \"warning\" : \"error\",\n };\n if (input.fix) {\n let { range, text } = input.fix, from = range[0] + offset.pos - start, to = range[1] + offset.pos - start;\n result.actions = [{\n name: \"fix\",\n apply(view, start) {\n view.dispatch({ changes: { from: start + from, to: start + to, insert: text }, scrollIntoView: true });\n }\n }];\n }\n return result;\n}\n\nexport { autoCloseTags, completionPath, esLint, javascript, javascriptLanguage, jsxLanguage, localCompletionSource, scopeCompletionSource, snippets, tsxLanguage, typescriptLanguage, typescriptSnippets };\n","import { ExternalTokenizer, LRParser, LocalTokenGroup } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst descendantOp = 122,\n Unit = 1,\n identifier = 123,\n callee = 124,\n VariableName = 2,\n queryIdentifier = 125,\n queryVariableName = 3,\n QueryCallee = 4;\n\n/* Hand-written tokenizers for CSS tokens that can't be\n expressed by Lezer's built-in tokenizer. */\n\nconst space = [9, 10, 11, 12, 13, 32, 133, 160, 5760, 8192, 8193, 8194, 8195, 8196, 8197,\n 8198, 8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287, 12288];\nconst colon = 58, parenL = 40, underscore = 95, bracketL = 91, dash = 45, period = 46,\n hash = 35, percent = 37, ampersand = 38, backslash = 92, newline = 10, asterisk = 42;\n\nfunction isAlpha(ch) { return ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 161 }\n\nfunction isDigit(ch) { return ch >= 48 && ch <= 57 }\n\nfunction isHex(ch) { return isDigit(ch) || ch >= 97 && ch <= 102 || ch >= 65 && ch <= 70 }\n\nconst identifierTokens = (id, varName, callee) => (input, stack) => {\n for (let inside = false, dashes = 0, i = 0;; i++) {\n let {next} = input;\n if (isAlpha(next) || next == dash || next == underscore || (inside && isDigit(next))) {\n if (!inside && (next != dash || i > 0)) inside = true;\n if (dashes === i && next == dash) dashes++;\n input.advance();\n } else if (next == backslash && input.peek(1) != newline) {\n input.advance();\n if (isHex(input.next)) {\n do { input.advance(); } while (isHex(input.next))\n if (input.next == 32) input.advance();\n } else if (input.next > -1) {\n input.advance();\n }\n inside = true;\n } else {\n if (inside) input.acceptToken(\n dashes == 2 && stack.canShift(VariableName) ? varName : next == parenL ? callee : id\n );\n break\n }\n }\n};\n\nconst identifiers = new ExternalTokenizer(\n identifierTokens(identifier, VariableName, callee)\n);\nconst queryIdentifiers = new ExternalTokenizer(\n identifierTokens(queryIdentifier, queryVariableName, QueryCallee)\n);\n\nconst descendant = new ExternalTokenizer(input => {\n if (space.includes(input.peek(-1))) {\n let {next} = input;\n if (isAlpha(next) || next == underscore || next == hash || next == period ||\n next == asterisk || next == bracketL || next == colon && isAlpha(input.peek(1)) ||\n next == dash || next == ampersand)\n input.acceptToken(descendantOp);\n }\n});\n\nconst unitToken = new ExternalTokenizer(input => {\n if (!space.includes(input.peek(-1))) {\n let {next} = input;\n if (next == percent) { input.advance(); input.acceptToken(Unit); }\n if (isAlpha(next)) {\n do { input.advance(); } while (isAlpha(input.next) || isDigit(input.next))\n input.acceptToken(Unit);\n }\n }\n});\n\nconst cssHighlighting = styleTags({\n \"AtKeyword import charset namespace keyframes media supports\": tags.definitionKeyword,\n \"from to selector\": tags.keyword,\n NamespaceName: tags.namespace,\n KeyframeName: tags.labelName,\n KeyframeRangeName: tags.operatorKeyword,\n TagName: tags.tagName,\n ClassName: tags.className,\n PseudoClassName: tags.constant(tags.className),\n IdName: tags.labelName,\n \"FeatureName PropertyName\": tags.propertyName,\n AttributeName: tags.attributeName,\n NumberLiteral: tags.number,\n KeywordQuery: tags.keyword,\n UnaryQueryOp: tags.operatorKeyword,\n \"CallTag ValueName\": tags.atom,\n VariableName: tags.variableName,\n Callee: tags.operatorKeyword,\n Unit: tags.unit,\n \"UniversalSelector NestingSelector\": tags.definitionOperator,\n \"MatchOp CompareOp\": tags.compareOperator,\n \"ChildOp SiblingOp, LogicOp\": tags.logicOperator,\n BinOp: tags.arithmeticOperator,\n Important: tags.modifier,\n Comment: tags.blockComment,\n ColorLiteral: tags.color,\n \"ParenthesizedContent StringLiteral\": tags.string,\n \":\": tags.punctuation,\n \"PseudoOp #\": tags.derefOperator,\n \"; ,\": tags.separator,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_callee = {__proto__:null,lang:38, \"nth-child\":38, \"nth-last-child\":38, \"nth-of-type\":38, \"nth-last-of-type\":38, dir:38, \"host-context\":38, if:84, url:124, \"url-prefix\":124, domain:124, regexp:124};\nconst spec_queryIdentifier = {__proto__:null,or:98, and:98, not:106, only:106, layer:170};\nconst spec_QueryCallee = {__proto__:null,selector:112, layer:166};\nconst spec_AtKeyword = {__proto__:null,\"@import\":162, \"@media\":174, \"@charset\":178, \"@namespace\":182, \"@keyframes\":188, \"@supports\":200, \"@scope\":204};\nconst spec_identifier = {__proto__:null,to:207};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"EbQYQdOOO#qQdOOP#xO`OOOOQP'#Cf'#CfOOQP'#Ce'#CeO#}QdO'#ChO$nQaO'#CcO$xQdO'#CkO%TQdO'#DpO%YQdO'#DrO%_QdO'#DuO%_QdO'#DxOOQP'#FV'#FVO&eQhO'#EhOOQS'#FU'#FUOOQS'#Ek'#EkQYQdOOO&lQdO'#EOO&PQhO'#EUO&lQdO'#EWO'aQdO'#EYO'lQdO'#E]O'tQhO'#EcO(VQdO'#EeO(bQaO'#CfO)VQ`O'#D{O)[Q`O'#F`O)gQdO'#F`QOQ`OOP)qO&jO'#CaPOOO)C@t)C@tOOQP'#Cj'#CjOOQP,59S,59SO#}QdO,59SO)|QdO,59VO%TQdO,5:[O%YQdO,5:^O%_QdO,5:aO%_QdO,5:cO%_QdO,5:dO%_QdO'#ErO*XQ`O,58}O*aQdO'#DzOOQS,58},58}OOQP'#Cn'#CnOOQO'#Dn'#DnOOQP,59V,59VO*hQ`O,59VO*mQ`O,59VOOQP'#Dq'#DqOOQP,5:[,5:[OOQO'#Ds'#DsO*rQpO,5:^O+]QaO,5:aO+sQaO,5:dOOQW'#DZ'#DZO,ZQhO'#DdO,xQhO'#FaO'tQhO'#DbO-WQ`O'#DhOOQW'#F['#F[O-]Q`O,5;SO-eQ`O'#DeOOQS-E8i-E8iOOQ['#Cs'#CsO-jQdO'#CtO.QQdO'#CzO.hQdO'#C}O/OQ!pO'#DPO1RQ!jO,5:jOOQO'#DU'#DUO*mQ`O'#DTO1cQ!nO'#FXO3`Q`O'#DVO3eQ`O'#DkOOQ['#FX'#FXO-`Q`O,5:pO3jQ!bO,5:rOOQS'#E['#E[O3rQ`O,5:tO3wQdO,5:tOOQO'#E_'#E_O4PQ`O,5:wO4UQhO,5:}O%_QdO'#DgOOQS,5;P,5;PO-eQ`O,5;PO4^QdO,5;PO4fQdO,5:gO4vQdO'#EtO5TQ`O,5;zO5TQ`O,5;zPOOO'#Ej'#EjP5`O&jO,58{POOO,58{,58{OOQP1G.n1G.nOOQP1G.q1G.qO*hQ`O1G.qO*mQ`O1G.qOOQP1G/v1G/vO5kQpO1G/xO5sQaO1G/{O6ZQaO1G/}O6qQaO1G0OO7XQaO,5;^OOQO-E8p-E8pOOQS1G.i1G.iO7cQ`O,5:fO7hQdO'#DoO7oQdO'#CrOOQP1G/x1G/xO&lQdO1G/xO7vQ!jO'#DZO8UQ!bO,59vO8^QhO,5:OOOQO'#F]'#F]O8XQ!bO,59zO'tQhO,59xO8fQhO'#EvO8sQ`O,5;{O9OQhO,59|O9uQhO'#DiOOQW,5:S,5:SOOQS1G0n1G0nOOQW,5:P,5:PO9|Q!fO'#FYOOQS'#FY'#FYOOQS'#Em'#EmO;^QdO,59`OOQ[,59`,59`O;tQdO,59fOOQ[,59f,59fO<[QdO,59iOOQ[,59i,59iOOQ[,59k,59kO&lQdO,59mO<rQhO'#EQOOQW'#EQ'#EQO=WQ`O1G0UO1[QhO1G0UOOQ[,59o,59oO'tQhO'#DXOOQ[,59q,59qO=]Q#tO,5:VOOQS1G0[1G0[OOQS1G0^1G0^OOQS1G0`1G0`O=hQ`O1G0`O=mQdO'#E`OOQS1G0c1G0cOOQS1G0i1G0iO=xQaO,5:RO-`Q`O1G0kOOQS1G0k1G0kO-eQ`O1G0kO>PQ!fO1G0ROOQO1G0R1G0ROOQO,5;`,5;`O>gQdO,5;`OOQO-E8r-E8rO>tQ`O1G1fPOOO-E8h-E8hPOOO1G.g1G.gOOQP7+$]7+$]OOQP7+%d7+%dO&lQdO7+%dOOQS1G0Q1G0QO?PQaO'#F_O?ZQ`O,5:ZO?`Q!fO'#ElO@^QdO'#FWO@hQ`O,59^O@mQ!bO7+%dO&lQdO1G/bO@uQhO1G/fOOQW1G/j1G/jOOQW1G/d1G/dOAWQhO,5;bOOQO-E8t-E8tOAfQhO'#DZOAtQhO'#F^OBPQ`O'#F^OBUQ`O,5:TOOQS-E8k-E8kOOQ[1G.z1G.zOOQ[1G/Q1G/QOOQ[1G/T1G/TOOQ[1G/X1G/XOBZQdO,5:lOOQS7+%p7+%pOB`Q`O7+%pOBeQhO'#DYOBmQ`O,59sO'tQhO,59sOOQ[1G/q1G/qOBuQ`O1G/qOOQS7+%z7+%zOBzQbO'#DPOOQO'#Eb'#EbOCYQ`O'#EaOOQO'#Ea'#EaOCeQ`O'#EwOCmQdO,5:zOOQS,5:z,5:zOOQ[1G/m1G/mOOQS7+&V7+&VO-`Q`O7+&VOCxQ!fO'#EsO&lQdO'#EsOEPQdO7+%mOOQO7+%m7+%mOOQO1G0z1G0zOEdQ!bO<<IOOElQdO'#EqOEvQ`O,5;yOOQP1G/u1G/uOOQS-E8j-E8jOFOQdO'#EpOFYQ`O,5;rOOQ]1G.x1G.xOOQP<<IO<<IOOFbQdO7+$|OOQO'#D]'#D]OFiQ!bO7+%QOFqQhO'#EoOF{Q`O,5;xO&lQdO,5;xOOQW1G/o1G/oOOQO'#ES'#ESOGTQ`O1G0WOOQS<<I[<<I[O&lQdO,59tOGnQhO1G/_OOQ[1G/_1G/_OGuQ`O1G/_OOQW-E8l-E8lOOQ[7+%]7+%]OOQO,5:{,5:{O=pQdO'#ExOCeQ`O,5;cOOQS,5;c,5;cOOQS-E8u-E8uOOQS1G0f1G0fOOQS<<Iq<<IqOG}Q!fO,5;_OOQS-E8q-E8qOOQO<<IX<<IXOOQPAN>jAN>jOIUQaO,5;]OOQO-E8o-E8oOI`QdO,5;[OOQO-E8n-E8nOOQW<<Hh<<HhOOQW<<Hl<<HlOIjQhO<<HlOI{QhO,5;ZOJWQ`O,5;ZOOQO-E8m-E8mOJ]QdO1G1dOBZQdO'#EuOJgQ`O7+%rOOQW7+%r7+%rOJoQ!bO1G/`OOQ[7+$y7+$yOJzQhO7+$yPKRQ`O'#EnOOQO,5;d,5;dOOQO-E8v-E8vOOQS1G0}1G0}OKWQ`OAN>WO&lQdO1G0uOK]Q`O7+'OOOQO,5;a,5;aOOQO-E8s-E8sOOQW<<I^<<I^OOQ[<<He<<HePOQW,5;Y,5;YOOQWG23rG23rOKeQdO7+&a\",\n stateData: \"Kx~O#sOS#tQQ~OW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#oRO~OQiOW[OZ[O]TO`VOaVOi]OjWOmXO!jYO!mZO!saO!ybO!{cO!}dO#QeO#WfO#YgO#ohO~O#m$SP~P!dO#tmO~O#ooO~O]qO`rOarOjsOmtO!juO!mwO#nvO~OpzO!^xO~P$SOc!QO#o|O#p}O~O#o!RO~O#o!TO~OW[OZ[O]TO`VOaVOjWOmXO!jYO!mZO#oRO~OS!]Oe!YO!V![O!Y!`O#q!XOp$TP~Ok$TP~P&POQ!jOe!cOm!dOp!eOr!mOt!mOz!kO!`!lO#o!bO#p!hO#}!fO~Ot!qO!`!lO#o!pO~Ot!sO#o!sO~OS!]Oe!YO!V![O!Y!`O#q!XO~Oe!vOpzO#Z!xO~O]YX`YX`!pXaYXjYXmYXpYX!^YX!jYX!mYX#nYX~O`!zO~Ok!{O#m$SXo$SX~O#m$SXo$SX~P!dO#u#OO#v#OO#w#QO~Oc#UO#o|O#p}O~OpzO!^xO~Oo$SP~P!dOe#`O~Oe#aO~Ol#bO!h#cO~O]qO`rOarOjsOmtO~Op!ia!^!ia!j!ia!m!ia#n!iad!ia~P*zOp!la!^!la!j!la!m!la#n!lad!la~P*zOR#gOS!]Oe!YOr#gOt#gO!V![O!Y!`O#q#dO#}!fO~O!R#iO!^#jOk$TXp$TX~Oe#mO~Ok#oOpzO~Oe!vO~O]#rO`#rOd#uOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl#wO~P&lO]#rO`#rOi#rOj#rOk#rOo#yO~P&lOP#zOSsXesXksXvsX!VsX!YsX!usX!wsX#qsX!TsXQsX]sX`sXdsXisXjsXmsXpsXrsXtsXzsX!`sX#osX#psX#}sXlsXosX!^sX!qsX#msX~Ov#{O!u#|O!w#}Ok$TP~P'tOe#aOS#{Xk#{Xv#{X!V#{X!Y#{X!u#{X!w#{X#q#{XQ#{X]#{X`#{Xd#{Xi#{Xj#{Xm#{Xp#{Xr#{Xt#{Xz#{X!`#{X#o#{X#p#{X#}#{Xl#{Xo#{X!^#{X!q#{X#m#{X~Oe$RO~Oe$TO~Ok$VOv#{O~Ok$WO~Ot$XO!`!lO~Op$YO~OpzO!R#iO~OpzO#Z$`O~O!q$bOk!oa#m!oao!oa~P&lOk#hX#m#hXo#hX~P!dOk!{O#m$Sao$Sa~O#u#OO#v#OO#w$hO~Ol$jO!h$kO~Op!ii!^!ii!j!ii!m!ii#n!iid!ii~P*zOp!ki!^!ki!j!ki!m!ki#n!kid!ki~P*zOp!li!^!li!j!li!m!li#n!lid!li~P*zOp#fa!^#fa~P$SOo$lO~Od$RP~P%_Od#zP~P&lO`!PXd}X!R}X!T!PX~O`$sO!T$tO~Od$uO!R#iO~Ok#jXp#jX!^#jX~P'tO!^#jOk$Tap$Ta~O!R#iOk!Uap!Ua!^!Uad!Ua`!Ua~OS!]Oe!YO!V![O!Y!`O#q$yO~Od$QP~P9dOv#{OQ#|X]#|X`#|Xd#|Xe#|Xi#|Xj#|Xk#|Xm#|Xp#|Xr#|Xt#|Xz#|X!`#|X#o#|X#p#|X#}#|Xl#|Xo#|X~O]#rO`#rOd%OOi#rOj#rOk#rO~P&lO]#rO`#rOi#rOj#rOk#rOl%PO~P&lO]#rO`#rOi#rOj#rOk#rOo%QO~P&lOe%SOS!tXk!tX!V!tX!Y!tX#q!tX~Ok%TO~Od%YOt%ZO!a%ZO~Ok%[O~Oo%cO#o%^O#}%]O~Od%dO~P$SOv#{O!^%hO!q%jOk!oi#m!oio!oi~P&lOk#ha#m#hao#ha~P!dOk!{O#m$Sio$Si~O!^%mOd$RX~P$SOd%oO~Ov#{OQ#`Xd#`Xe#`Xm#`Xp#`Xr#`Xt#`Xz#`X!^#`X!`#`X#o#`X#p#`X#}#`X~O!^%qOd#zX~P&lOd%sO~Ol%tOv#{O~OR#gOr#gOt#gO#q%vO#}!fO~O!R#iOk#jap#ja!^#ja~O`!PXd}X!R}X!^}X~O!R#iO!^%xOd$QX~O`%zO~Od%{O~O#o%|O~Ok&OO~O`&PO!R#iO~Od&ROk&QO~Od&UO~OP#zOpsX!^sXdsX~O#}%]Op#TX!^#TX~OpzO!^&WO~Oo&[O#o%^O#}%]O~Ov#{OQ#gXe#gXk#gXm#gXp#gXr#gXt#gXz#gX!^#gX!`#gX!q#gX#m#gX#o#gX#p#gX#}#gXo#gX~O!^%hO!q&`Ok!oq#m!oqo!oq~P&lOl&aOv#{O~Od#eX!^#eX~P%_O!^%mOd$Ra~Od#dX!^#dX~P&lO!^%qOd#za~Od&fO~P&lOd&gO!T&hO~Od#cX!^#cX~P9dO!^%xOd$Qa~O]&mOd&oO~OS#bae#ba!V#ba!Y#ba#q#ba~Od&qO~PG]Od&qOk&rO~Ov#{OQ#gae#gak#gam#gap#gar#gat#gaz#ga!^#ga!`#ga!q#ga#m#ga#o#ga#p#ga#}#gao#ga~Od#ea!^#ea~P$SOd#da!^#da~P&lOR#gOr#gOt#gO#q%vO#}%]O~O!R#iOd#ca!^#ca~O`&xO~O!^%xOd$Qi~P&lO]&mOd&|O~Ov#{Od|ik|i~Od&}O~PG]Ok'OO~Od'PO~O!^%xOd$Qq~Od#cq!^#cq~P&lO#s!a#t#}]#}v!m~\",\n goto: \"2h$UPPPPP$VP$YP$c$uP$cP%X$cPP%_PPP%e%o%oPPPPP%oPP%oP&]P%oP%o'W%oP't'w'}'}(^'}P'}P'}P'}'}P(m'}(yP(|PP)p)v$c)|$c*SP$cP$c$cP*Y*{+YP$YP+aP+dP$YP$YP$YP+j$YP+m+p+s+z$YP$YPP$YP,P,V,f,|-[-b-l-r-x.O.U.`.f.l.rPPPPPPPPPPP.x/R/w/z0|P1U1u2O2R2U2[RnQ_^OP`kz!{$dq[OPYZ`kuvwxz!v!{#`$d%mqSOPYZ`kuvwxz!v!{#`$d%mQpTR#RqQ!OVR#SrQ#S!QS$Q!i!jR$i#U!V!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'Q!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QU#g!Y$t&hU%`$Y%b&WR&V%_!V!iac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QR$S!kQ%W$RR&S%Xk!^]bf!Y![!g#i#j#m$P$R%X%xQ#e!YQ${#mQ%w$tQ&j%xR&w&hQ!ygQ#p!`Q$^!xR%f$`R#n!]!U!mac!c!d!e!z#a#c#t#v#x#{$a$k$p$s%h%i%q%u%z&P&d&l&x'QQ!qdR$X!rQ!PVR#TrQ#S!PR$i#TQ!SWR#VsQ!UXR#WtQ{UQ!wgQ#^yQ#o!_Q$U!nQ$[!uQ$_!yQ%e$^Q&Y%aQ&]%fR&v&XSjPzQ!}kQ$c!{R%k$dZiPkz!{$dR$P!gQ%}%SR&z&mR!rdR!teR$Z!tS%a$Y%bR&t&WV%_$Y%b&WQ#PmR$g#PQ`OSkPzU!a`k$dR$d!{Q$p#aY%p$p%u&d&l'QQ%u$sQ&d%qQ&l%zR'Q&xQ#t!cQ#v!dQ#x!eV$}#t#v#xQ%X$RR&T%XQ%y$zS&k%y&yR&y&lQ%r$pR&e%rQ%n$mR&c%nQyUR#]yQ%i$aR&_%iQ!|jS$e!|$fR$f!}Q&n%}R&{&nQ#k!ZR$x#kQ%b$YR&Z%bQ&X%aR&u&X__OP`kz!{$d^UOP`kz!{$dQ!VYQ!WZQ#XuQ#YvQ#ZwQ#[xQ$]!vQ$m#`R&b%mR$q#aQ!gaQ!oc[#q!c!d!e#t#v#xQ$a!zd$o#a$p$s%q%u%z&d&l&x'QQ$r#cQ%R#{S%g$a%iQ%l$kQ&^%hR&p&P]#s!c!d!e#t#v#xW!Z]b!g$PQ!ufQ#f!YQ#l![Q$v#iQ$w#jQ$z#mS%V$R%XR&i%xQ#h!YQ%w$tR&w&hR$|#mR$n#`QlPR#_zQ!_]Q!nbQ$O!gR%U$P\",\n nodeNames: \"⚠ Unit VariableName VariableName QueryCallee Comment StyleSheet RuleSet UniversalSelector TagSelector TagName NestingSelector ClassSelector . ClassName PseudoClassSelector : :: PseudoClassName PseudoClassName ) ( ArgList ValueName ParenthesizedValue AtKeyword # ; ] [ BracketedValue } { BracedValue ColorLiteral NumberLiteral StringLiteral BinaryExpression BinOp CallExpression Callee IfExpression if ArgList IfBranch KeywordQuery FeatureQuery FeatureName BinaryQuery LogicOp ComparisonQuery CompareOp UnaryQuery UnaryQueryOp ParenthesizedQuery SelectorQuery selector ParenthesizedSelector CallQuery ArgList , CallLiteral CallTag ParenthesizedContent PseudoClassName ArgList IdSelector IdName AttributeSelector AttributeName MatchOp ChildSelector ChildOp DescendantSelector SiblingSelector SiblingOp Block Declaration PropertyName Important ImportStatement import Layer layer LayerName layer MediaStatement media CharsetStatement charset NamespaceStatement namespace NamespaceName KeyframesStatement keyframes KeyframeName KeyframeList KeyframeSelector KeyframeRangeName SupportsStatement supports ScopeStatement scope to AtRule Styles\",\n maxTerm: 143,\n nodeProps: [\n [\"isolate\", -2,5,36,\"\"],\n [\"openedBy\", 20,\"(\",28,\"[\",31,\"{\"],\n [\"closedBy\", 21,\")\",29,\"]\",32,\"}\"]\n ],\n propSources: [cssHighlighting],\n skippedNodes: [0,5,106],\n repeatNodeCount: 15,\n tokenData: \"JQ~R!YOX$qX^%i^p$qpq%iqr({rs-ust/itu6Wuv$qvw7Qwx7cxy9Qyz9cz{9h{|:R|}>t}!O?V!O!P?t!P!Q@]!Q![AU![!]BP!]!^B{!^!_C^!_!`DY!`!aDm!a!b$q!b!cEn!c!}$q!}#OG{#O#P$q#P#QH^#Q#R6W#R#o$q#o#pHo#p#q6W#q#rIQ#r#sIc#s#y$q#y#z%i#z$f$q$f$g%i$g#BY$q#BY#BZ%i#BZ$IS$q$IS$I_%i$I_$I|$q$I|$JO%i$JO$JT$q$JT$JU%i$JU$KV$q$KV$KW%i$KW&FU$q&FU&FV%i&FV;'S$q;'S;=`Iz<%lO$q`$tSOy%Qz;'S%Q;'S;=`%c<%lO%Q`%VS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q`%fP;=`<%l%Q~%nh#s~OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Q~'ah#s~!a`OX%QX^'Y^p%Qpq'Yqy%Qz#y%Q#y#z'Y#z$f%Q$f$g'Y$g#BY%Q#BY#BZ'Y#BZ$IS%Q$IS$I_'Y$I_$I|%Q$I|$JO'Y$JO$JT%Q$JT$JU'Y$JU$KV%Q$KV$KW'Y$KW&FU%Q&FU&FV'Y&FV;'S%Q;'S;=`%c<%lO%Qj)OUOy%Qz#]%Q#]#^)b#^;'S%Q;'S;=`%c<%lO%Qj)gU!a`Oy%Qz#a%Q#a#b)y#b;'S%Q;'S;=`%c<%lO%Qj*OU!a`Oy%Qz#d%Q#d#e*b#e;'S%Q;'S;=`%c<%lO%Qj*gU!a`Oy%Qz#c%Q#c#d*y#d;'S%Q;'S;=`%c<%lO%Qj+OU!a`Oy%Qz#f%Q#f#g+b#g;'S%Q;'S;=`%c<%lO%Qj+gU!a`Oy%Qz#h%Q#h#i+y#i;'S%Q;'S;=`%c<%lO%Qj,OU!a`Oy%Qz#T%Q#T#U,b#U;'S%Q;'S;=`%c<%lO%Qj,gU!a`Oy%Qz#b%Q#b#c,y#c;'S%Q;'S;=`%c<%lO%Qj-OU!a`Oy%Qz#h%Q#h#i-b#i;'S%Q;'S;=`%c<%lO%Qj-iS!qY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Q~-xWOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c<%lO-u~.gOt~~.jRO;'S-u;'S;=`.s;=`O-u~.vXOY-uZr-urs.bs#O-u#O#P.g#P;'S-u;'S;=`/c;=`<%l-u<%lO-u~/fP;=`<%l-uj/nYjYOy%Qz!Q%Q!Q![0^![!c%Q!c!i0^!i#T%Q#T#Z0^#Z;'S%Q;'S;=`%c<%lO%Qj0cY!a`Oy%Qz!Q%Q!Q![1R![!c%Q!c!i1R!i#T%Q#T#Z1R#Z;'S%Q;'S;=`%c<%lO%Qj1WY!a`Oy%Qz!Q%Q!Q![1v![!c%Q!c!i1v!i#T%Q#T#Z1v#Z;'S%Q;'S;=`%c<%lO%Qj1}YrY!a`Oy%Qz!Q%Q!Q![2m![!c%Q!c!i2m!i#T%Q#T#Z2m#Z;'S%Q;'S;=`%c<%lO%Qj2tYrY!a`Oy%Qz!Q%Q!Q![3d![!c%Q!c!i3d!i#T%Q#T#Z3d#Z;'S%Q;'S;=`%c<%lO%Qj3iY!a`Oy%Qz!Q%Q!Q![4X![!c%Q!c!i4X!i#T%Q#T#Z4X#Z;'S%Q;'S;=`%c<%lO%Qj4`YrY!a`Oy%Qz!Q%Q!Q![5O![!c%Q!c!i5O!i#T%Q#T#Z5O#Z;'S%Q;'S;=`%c<%lO%Qj5TY!a`Oy%Qz!Q%Q!Q![5s![!c%Q!c!i5s!i#T%Q#T#Z5s#Z;'S%Q;'S;=`%c<%lO%Qj5zSrY!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qd6ZUOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qd6tS!hS!a`Oy%Qz;'S%Q;'S;=`%c<%lO%Qb7VSZQOy%Qz;'S%Q;'S;=`%c<%lO%Q~7fWOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z<%lO7c~8RRO;'S7c;'S;=`8[;=`O7c~8_XOY7cZw7cwx.bx#O7c#O#P8O#P;'S7c;'S;=`8z;=`<%l7c<%lO7c~8}P;=`<%l7cj9VSeYOy%Qz;'S%Q;'S;=`%c<%lO%Q~9hOd~n9oUWQvWOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Qj:YWvW!mQOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj:wU!a`Oy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Qj;bY!a`#}YOy%Qz!Q%Q!Q![;Z![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj<VY!a`Oy%Qz{%Q{|<u|}%Q}!O<u!O!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj<zU!a`Oy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj=eU!a`#}YOy%Qz!Q%Q!Q![=^![;'S%Q;'S;=`%c<%lO%Qj>O[!a`#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%Qj>yS!^YOy%Qz;'S%Q;'S;=`%c<%lO%Qj?[WvWOy%Qz!O%Q!O!P:r!P!Q%Q!Q![=w![;'S%Q;'S;=`%c<%lO%Qj?yU]YOy%Qz!Q%Q!Q![;Z![;'S%Q;'S;=`%c<%lO%Q~@bTvWOy%Qz{@q{;'S%Q;'S;=`%c<%lO%Q~@xS!a`#t~Oy%Qz;'S%Q;'S;=`%c<%lO%QjAZ[#}YOy%Qz!O%Q!O!P;Z!P!Q%Q!Q![=w![!g%Q!g!h<Q!h#X%Q#X#Y<Q#Y;'S%Q;'S;=`%c<%lO%QjBUU`YOy%Qz![%Q![!]Bh!];'S%Q;'S;=`%c<%lO%QbBoSaQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjCQSkYOy%Qz;'S%Q;'S;=`%c<%lO%QhCcU!TWOy%Qz!_%Q!_!`Cu!`;'S%Q;'S;=`%c<%lO%QhC|S!TW!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QlDaS!TW!hSOy%Qz;'S%Q;'S;=`%c<%lO%QjDtV!jQ!TWOy%Qz!_%Q!_!`Cu!`!aEZ!a;'S%Q;'S;=`%c<%lO%QbEbS!jQ!a`Oy%Qz;'S%Q;'S;=`%c<%lO%QjEqYOy%Qz}%Q}!OFa!O!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjFfW!a`Oy%Qz!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjGV[iY!a`Oy%Qz}%Q}!OGO!O!Q%Q!Q![GO![!c%Q!c!}GO!}#T%Q#T#oGO#o;'S%Q;'S;=`%c<%lO%QjHQSmYOy%Qz;'S%Q;'S;=`%c<%lO%QnHcSl^Oy%Qz;'S%Q;'S;=`%c<%lO%QjHtSpYOy%Qz;'S%Q;'S;=`%c<%lO%QjIVSoYOy%Qz;'S%Q;'S;=`%c<%lO%QfIhU!mQOy%Qz!_%Q!_!`6m!`;'S%Q;'S;=`%c<%lO%Q`I}P;=`<%l$q\",\n tokenizers: [descendant, unitToken, identifiers, queryIdentifiers, 1, 2, 3, 4, new LocalTokenGroup(\"m~RRYZ[z{a~~g~aO#v~~dP!P!Qg~lO#w~~\", 28, 129)],\n topRules: {\"StyleSheet\":[0,6],\"Styles\":[1,105]},\n dynamicPrecedences: {\"76\":1},\n specialized: [{term: 124, get: (value) => spec_callee[value] || -1},{term: 125, get: (value) => spec_queryIdentifier[value] || -1},{term: 4, get: (value) => spec_QueryCallee[value] || -1},{term: 25, get: (value) => spec_AtKeyword[value] || -1},{term: 123, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 1963\n});\n\nexport { parser };\n","import { parser } from '@lezer/css';\nimport { syntaxTree, LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\n\nlet _properties = null;\nfunction properties() {\n if (!_properties && typeof document == \"object\" && document.body) {\n let { style } = document.body, names = [], seen = new Set;\n for (let prop in style)\n if (prop != \"cssText\" && prop != \"cssFloat\") {\n if (typeof style[prop] == \"string\") {\n if (/[A-Z]/.test(prop))\n prop = prop.replace(/[A-Z]/g, ch => \"-\" + ch.toLowerCase());\n if (!seen.has(prop)) {\n names.push(prop);\n seen.add(prop);\n }\n }\n }\n _properties = names.sort().map(name => ({ type: \"property\", label: name, apply: name + \": \" }));\n }\n return _properties || [];\n}\nconst pseudoClasses = /*@__PURE__*/[\n \"active\", \"after\", \"any-link\", \"autofill\", \"backdrop\", \"before\",\n \"checked\", \"cue\", \"default\", \"defined\", \"disabled\", \"empty\",\n \"enabled\", \"file-selector-button\", \"first\", \"first-child\",\n \"first-letter\", \"first-line\", \"first-of-type\", \"focus\",\n \"focus-visible\", \"focus-within\", \"fullscreen\", \"has\", \"host\",\n \"host-context\", \"hover\", \"in-range\", \"indeterminate\", \"invalid\",\n \"is\", \"lang\", \"last-child\", \"last-of-type\", \"left\", \"link\", \"marker\",\n \"modal\", \"not\", \"nth-child\", \"nth-last-child\", \"nth-last-of-type\",\n \"nth-of-type\", \"only-child\", \"only-of-type\", \"optional\", \"out-of-range\",\n \"part\", \"placeholder\", \"placeholder-shown\", \"read-only\", \"read-write\",\n \"required\", \"right\", \"root\", \"scope\", \"selection\", \"slotted\", \"target\",\n \"target-text\", \"valid\", \"visited\", \"where\"\n].map(name => ({ type: \"class\", label: name }));\nconst values = /*@__PURE__*/[\n \"above\", \"absolute\", \"activeborder\", \"additive\", \"activecaption\", \"after-white-space\",\n \"ahead\", \"alias\", \"all\", \"all-scroll\", \"alphabetic\", \"alternate\", \"always\",\n \"antialiased\", \"appworkspace\", \"asterisks\", \"attr\", \"auto\", \"auto-flow\", \"avoid\", \"avoid-column\",\n \"avoid-page\", \"avoid-region\", \"axis-pan\", \"background\", \"backwards\", \"baseline\", \"below\",\n \"bidi-override\", \"blink\", \"block\", \"block-axis\", \"bold\", \"bolder\", \"border\", \"border-box\",\n \"both\", \"bottom\", \"break\", \"break-all\", \"break-word\", \"bullets\", \"button\", \"button-bevel\",\n \"buttonface\", \"buttonhighlight\", \"buttonshadow\", \"buttontext\", \"calc\", \"capitalize\",\n \"caps-lock-indicator\", \"caption\", \"captiontext\", \"caret\", \"cell\", \"center\", \"checkbox\", \"circle\",\n \"cjk-decimal\", \"clear\", \"clip\", \"close-quote\", \"col-resize\", \"collapse\", \"color\", \"color-burn\",\n \"color-dodge\", \"column\", \"column-reverse\", \"compact\", \"condensed\", \"contain\", \"content\",\n \"contents\", \"content-box\", \"context-menu\", \"continuous\", \"copy\", \"counter\", \"counters\", \"cover\",\n \"crop\", \"cross\", \"crosshair\", \"currentcolor\", \"cursive\", \"cyclic\", \"darken\", \"dashed\", \"decimal\",\n \"decimal-leading-zero\", \"default\", \"default-button\", \"dense\", \"destination-atop\", \"destination-in\",\n \"destination-out\", \"destination-over\", \"difference\", \"disc\", \"discard\", \"disclosure-closed\",\n \"disclosure-open\", \"document\", \"dot-dash\", \"dot-dot-dash\", \"dotted\", \"double\", \"down\", \"e-resize\",\n \"ease\", \"ease-in\", \"ease-in-out\", \"ease-out\", \"element\", \"ellipse\", \"ellipsis\", \"embed\", \"end\",\n \"ethiopic-abegede-gez\", \"ethiopic-halehame-aa-er\", \"ethiopic-halehame-gez\", \"ew-resize\", \"exclusion\",\n \"expanded\", \"extends\", \"extra-condensed\", \"extra-expanded\", \"fantasy\", \"fast\", \"fill\", \"fill-box\",\n \"fixed\", \"flat\", \"flex\", \"flex-end\", \"flex-start\", \"footnotes\", \"forwards\", \"from\",\n \"geometricPrecision\", \"graytext\", \"grid\", \"groove\", \"hand\", \"hard-light\", \"help\", \"hidden\", \"hide\",\n \"higher\", \"highlight\", \"highlighttext\", \"horizontal\", \"hsl\", \"hsla\", \"hue\", \"icon\", \"ignore\",\n \"inactiveborder\", \"inactivecaption\", \"inactivecaptiontext\", \"infinite\", \"infobackground\", \"infotext\",\n \"inherit\", \"initial\", \"inline\", \"inline-axis\", \"inline-block\", \"inline-flex\", \"inline-grid\",\n \"inline-table\", \"inset\", \"inside\", \"intrinsic\", \"invert\", \"italic\", \"justify\", \"keep-all\",\n \"landscape\", \"large\", \"larger\", \"left\", \"level\", \"lighter\", \"lighten\", \"line-through\", \"linear\",\n \"linear-gradient\", \"lines\", \"list-item\", \"listbox\", \"listitem\", \"local\", \"logical\", \"loud\", \"lower\",\n \"lower-hexadecimal\", \"lower-latin\", \"lower-norwegian\", \"lowercase\", \"ltr\", \"luminosity\", \"manipulation\",\n \"match\", \"matrix\", \"matrix3d\", \"medium\", \"menu\", \"menutext\", \"message-box\", \"middle\", \"min-intrinsic\",\n \"mix\", \"monospace\", \"move\", \"multiple\", \"multiple_mask_images\", \"multiply\", \"n-resize\", \"narrower\",\n \"ne-resize\", \"nesw-resize\", \"no-close-quote\", \"no-drop\", \"no-open-quote\", \"no-repeat\", \"none\",\n \"normal\", \"not-allowed\", \"nowrap\", \"ns-resize\", \"numbers\", \"numeric\", \"nw-resize\", \"nwse-resize\",\n \"oblique\", \"opacity\", \"open-quote\", \"optimizeLegibility\", \"optimizeSpeed\", \"outset\", \"outside\",\n \"outside-shape\", \"overlay\", \"overline\", \"padding\", \"padding-box\", \"painted\", \"page\", \"paused\",\n \"perspective\", \"pinch-zoom\", \"plus-darker\", \"plus-lighter\", \"pointer\", \"polygon\", \"portrait\",\n \"pre\", \"pre-line\", \"pre-wrap\", \"preserve-3d\", \"progress\", \"push-button\", \"radial-gradient\", \"radio\",\n \"read-only\", \"read-write\", \"read-write-plaintext-only\", \"rectangle\", \"region\", \"relative\", \"repeat\",\n \"repeating-linear-gradient\", \"repeating-radial-gradient\", \"repeat-x\", \"repeat-y\", \"reset\", \"reverse\",\n \"rgb\", \"rgba\", \"ridge\", \"right\", \"rotate\", \"rotate3d\", \"rotateX\", \"rotateY\", \"rotateZ\", \"round\",\n \"row\", \"row-resize\", \"row-reverse\", \"rtl\", \"run-in\", \"running\", \"s-resize\", \"sans-serif\", \"saturation\",\n \"scale\", \"scale3d\", \"scaleX\", \"scaleY\", \"scaleZ\", \"screen\", \"scroll\", \"scrollbar\", \"scroll-position\",\n \"se-resize\", \"self-start\", \"self-end\", \"semi-condensed\", \"semi-expanded\", \"separate\", \"serif\", \"show\",\n \"single\", \"skew\", \"skewX\", \"skewY\", \"skip-white-space\", \"slide\", \"slider-horizontal\",\n \"slider-vertical\", \"sliderthumb-horizontal\", \"sliderthumb-vertical\", \"slow\", \"small\", \"small-caps\",\n \"small-caption\", \"smaller\", \"soft-light\", \"solid\", \"source-atop\", \"source-in\", \"source-out\",\n \"source-over\", \"space\", \"space-around\", \"space-between\", \"space-evenly\", \"spell-out\", \"square\", \"start\",\n \"static\", \"status-bar\", \"stretch\", \"stroke\", \"stroke-box\", \"sub\", \"subpixel-antialiased\", \"svg_masks\",\n \"super\", \"sw-resize\", \"symbolic\", \"symbols\", \"system-ui\", \"table\", \"table-caption\", \"table-cell\",\n \"table-column\", \"table-column-group\", \"table-footer-group\", \"table-header-group\", \"table-row\",\n \"table-row-group\", \"text\", \"text-bottom\", \"text-top\", \"textarea\", \"textfield\", \"thick\", \"thin\",\n \"threeddarkshadow\", \"threedface\", \"threedhighlight\", \"threedlightshadow\", \"threedshadow\", \"to\", \"top\",\n \"transform\", \"translate\", \"translate3d\", \"translateX\", \"translateY\", \"translateZ\", \"transparent\",\n \"ultra-condensed\", \"ultra-expanded\", \"underline\", \"unidirectional-pan\", \"unset\", \"up\", \"upper-latin\",\n \"uppercase\", \"url\", \"var\", \"vertical\", \"vertical-text\", \"view-box\", \"visible\", \"visibleFill\",\n \"visiblePainted\", \"visibleStroke\", \"visual\", \"w-resize\", \"wait\", \"wave\", \"wider\", \"window\", \"windowframe\",\n \"windowtext\", \"words\", \"wrap\", \"wrap-reverse\", \"x-large\", \"x-small\", \"xor\", \"xx-large\", \"xx-small\"\n].map(name => ({ type: \"keyword\", label: name })).concat(/*@__PURE__*/[\n \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\",\n \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\",\n \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\",\n \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\",\n \"darkgray\", \"darkgreen\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\",\n \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\",\n \"darkslateblue\", \"darkslategray\", \"darkturquoise\", \"darkviolet\",\n \"deeppink\", \"deepskyblue\", \"dimgray\", \"dodgerblue\", \"firebrick\",\n \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\",\n \"gold\", \"goldenrod\", \"gray\", \"grey\", \"green\", \"greenyellow\", \"honeydew\",\n \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\",\n \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\",\n \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightpink\",\n \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\",\n \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\",\n \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\",\n \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\",\n \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\",\n \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\",\n \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\",\n \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\",\n \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\",\n \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\",\n \"slateblue\", \"slategray\", \"snow\", \"springgreen\", \"steelblue\", \"tan\",\n \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\",\n \"whitesmoke\", \"yellow\", \"yellowgreen\"\n].map(name => ({ type: \"constant\", label: name })));\nconst tags = /*@__PURE__*/[\n \"a\", \"abbr\", \"address\", \"article\", \"aside\", \"b\", \"bdi\", \"bdo\", \"blockquote\", \"body\",\n \"br\", \"button\", \"canvas\", \"caption\", \"cite\", \"code\", \"col\", \"colgroup\", \"dd\", \"del\",\n \"details\", \"dfn\", \"dialog\", \"div\", \"dl\", \"dt\", \"em\", \"figcaption\", \"figure\", \"footer\",\n \"form\", \"header\", \"hgroup\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"hr\", \"html\", \"i\", \"iframe\",\n \"img\", \"input\", \"ins\", \"kbd\", \"label\", \"legend\", \"li\", \"main\", \"meter\", \"nav\", \"ol\", \"output\",\n \"p\", \"pre\", \"ruby\", \"section\", \"select\", \"small\", \"source\", \"span\", \"strong\", \"sub\", \"summary\",\n \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"tr\", \"u\", \"ul\"\n].map(name => ({ type: \"type\", label: name }));\nconst atRules = /*@__PURE__*/[\n \"@charset\", \"@color-profile\", \"@container\", \"@counter-style\", \"@font-face\", \"@font-feature-values\",\n \"@font-palette-values\", \"@import\", \"@keyframes\", \"@layer\", \"@media\", \"@namespace\", \"@page\",\n \"@position-try\", \"@property\", \"@scope\", \"@starting-style\", \"@supports\", \"@view-transition\"\n].map(label => ({ type: \"keyword\", label }));\nconst identifier = /^(\\w[\\w-]*|-\\w[\\w-]*|)$/, variable = /^-(-[\\w-]*)?$/;\nfunction isVarArg(node, doc) {\n var _a;\n if (node.name == \"(\" || node.type.isError)\n node = node.parent || node;\n if (node.name != \"ArgList\")\n return false;\n let callee = (_a = node.parent) === null || _a === void 0 ? void 0 : _a.firstChild;\n if ((callee === null || callee === void 0 ? void 0 : callee.name) != \"Callee\")\n return false;\n return doc.sliceString(callee.from, callee.to) == \"var\";\n}\nconst VariablesByNode = /*@__PURE__*/new NodeWeakMap();\nconst declSelector = [\"Declaration\"];\nfunction astTop(node) {\n for (let cur = node;;) {\n if (cur.type.isTop)\n return cur;\n if (!(cur = cur.parent))\n return node;\n }\n}\nfunction variableNames(doc, node, isVariable) {\n if (node.to - node.from > 4096) {\n let known = VariablesByNode.get(node);\n if (known)\n return known;\n let result = [], seen = new Set, cursor = node.cursor(IterMode.IncludeAnonymous);\n if (cursor.firstChild())\n do {\n for (let option of variableNames(doc, cursor.node, isVariable))\n if (!seen.has(option.label)) {\n seen.add(option.label);\n result.push(option);\n }\n } while (cursor.nextSibling());\n VariablesByNode.set(node, result);\n return result;\n }\n else {\n let result = [], seen = new Set;\n node.cursor().iterate(node => {\n var _a;\n if (isVariable(node) && node.matchContext(declSelector) && ((_a = node.node.nextSibling) === null || _a === void 0 ? void 0 : _a.name) == \":\") {\n let name = doc.sliceString(node.from, node.to);\n if (!seen.has(name)) {\n seen.add(name);\n result.push({ label: name, type: \"variable\" });\n }\n }\n });\n return result;\n }\n}\n/**\nCreate a completion source for a CSS dialect, providing a\npredicate for determining what kind of syntax node can act as a\ncompletable variable. This is used by language modes like Sass and\nLess to reuse this package's completion logic.\n*/\nconst defineCSSCompletionSource = (isVariable) => context => {\n let { state, pos } = context, node = syntaxTree(state).resolveInner(pos, -1);\n let isDash = node.type.isError && node.from == node.to - 1 && state.doc.sliceString(node.from, node.to) == \"-\";\n if (node.name == \"PropertyName\" ||\n (isDash || node.name == \"TagName\") && /^(Block|Styles)$/.test(node.resolve(node.to).name))\n return { from: node.from, options: properties(), validFor: identifier };\n if (node.name == \"ValueName\")\n return { from: node.from, options: values, validFor: identifier };\n if (node.name == \"PseudoClassName\")\n return { from: node.from, options: pseudoClasses, validFor: identifier };\n if (isVariable(node) || (context.explicit || isDash) && isVarArg(node, state.doc))\n return { from: isVariable(node) || isDash ? node.from : pos,\n options: variableNames(state.doc, astTop(node), isVariable),\n validFor: variable };\n if (node.name == \"TagName\") {\n for (let { parent } = node; parent; parent = parent.parent)\n if (parent.name == \"Block\")\n return { from: node.from, options: properties(), validFor: identifier };\n return { from: node.from, options: tags, validFor: identifier };\n }\n if (node.name == \"AtKeyword\")\n return { from: node.from, options: atRules, validFor: identifier };\n if (!context.explicit)\n return null;\n let above = node.resolve(pos), before = above.childBefore(pos);\n if (before && before.name == \":\" && above.name == \"PseudoClassSelector\")\n return { from: pos, options: pseudoClasses, validFor: identifier };\n if (before && before.name == \":\" && above.name == \"Declaration\" || above.name == \"ArgList\")\n return { from: pos, options: values, validFor: identifier };\n if (above.name == \"Block\" || above.name == \"Styles\")\n return { from: pos, options: properties(), validFor: identifier };\n return null;\n};\n/**\nCSS property, variable, and value keyword completion source.\n*/\nconst cssCompletionSource = /*@__PURE__*/defineCSSCompletionSource(n => n.name == \"VariableName\");\n\n/**\nA language provider based on the [Lezer CSS\nparser](https://github.com/lezer-parser/css), extended with\nhighlighting and indentation information.\n*/\nconst cssLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"css\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Declaration: /*@__PURE__*/continuedIndent()\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Block KeyframeList\": foldInside\n })\n ]\n }),\n languageData: {\n commentTokens: { block: { open: \"/*\", close: \"*/\" } },\n indentOnInput: /^\\s*\\}$/,\n wordChars: \"-\"\n }\n});\n/**\nLanguage support for CSS.\n*/\nfunction css() {\n return new LanguageSupport(cssLanguage, cssLanguage.data.of({ autocomplete: cssCompletionSource }));\n}\n\nexport { css, cssCompletionSource, cssLanguage, defineCSSCompletionSource };\n","import { ContextTracker, ExternalTokenizer, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\nimport { parseMixed } from '@lezer/common';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst scriptText = 55,\n StartCloseScriptTag = 1,\n styleText = 56,\n StartCloseStyleTag = 2,\n textareaText = 57,\n StartCloseTextareaTag = 3,\n EndTag = 4,\n SelfClosingEndTag = 5,\n StartTag = 6,\n StartScriptTag = 7,\n StartStyleTag = 8,\n StartTextareaTag = 9,\n StartSelfClosingTag = 10,\n StartCloseTag = 11,\n NoMatchStartCloseTag = 12,\n MismatchedStartCloseTag = 13,\n missingCloseTag = 58,\n IncompleteTag = 14,\n IncompleteCloseTag = 15,\n commentContent$1 = 59,\n Element = 21,\n TagName = 23,\n Attribute = 24,\n AttributeName = 25,\n AttributeValue = 27,\n UnquotedAttributeValue = 28,\n ScriptText = 29,\n StyleText = 32,\n TextareaText = 35,\n OpenTag = 37,\n CloseTag = 38,\n Dialect_noMatch = 0,\n Dialect_selfClosing = 1;\n\n/* Hand-written tokenizers for HTML. */\n\nconst selfClosers = {\n area: true, base: true, br: true, col: true, command: true,\n embed: true, frame: true, hr: true, img: true, input: true,\n keygen: true, link: true, meta: true, param: true, source: true,\n track: true, wbr: true, menuitem: true\n};\n\nconst implicitlyClosed = {\n dd: true, li: true, optgroup: true, option: true, p: true,\n rp: true, rt: true, tbody: true, td: true, tfoot: true,\n th: true, tr: true\n};\n\nconst closeOnOpen = {\n dd: {dd: true, dt: true},\n dt: {dd: true, dt: true},\n li: {li: true},\n option: {option: true, optgroup: true},\n optgroup: {optgroup: true},\n p: {\n address: true, article: true, aside: true, blockquote: true, dir: true,\n div: true, dl: true, fieldset: true, footer: true, form: true,\n h1: true, h2: true, h3: true, h4: true, h5: true, h6: true,\n header: true, hgroup: true, hr: true, menu: true, nav: true, ol: true,\n p: true, pre: true, section: true, table: true, ul: true\n },\n rp: {rp: true, rt: true},\n rt: {rp: true, rt: true},\n tbody: {tbody: true, tfoot: true},\n td: {td: true, th: true},\n tfoot: {tbody: true},\n th: {td: true, th: true},\n thead: {tbody: true, tfoot: true},\n tr: {tr: true}\n};\n\nfunction nameChar(ch) {\n return ch == 45 || ch == 46 || ch == 58 || ch >= 65 && ch <= 90 || ch == 95 || ch >= 97 && ch <= 122 || ch >= 161\n}\n\nlet cachedName = null, cachedInput = null, cachedPos = 0;\nfunction tagNameAfter(input, offset) {\n let pos = input.pos + offset;\n if (cachedPos == pos && cachedInput == input) return cachedName\n let next = input.peek(offset), name = \"\";\n for (;;) {\n if (!nameChar(next)) break\n name += String.fromCharCode(next);\n next = input.peek(++offset);\n }\n // Undefined to signal there's a <? or <!, null for just missing\n cachedInput = input; cachedPos = pos;\n return cachedName = name ? name.toLowerCase() : next == question || next == bang ? undefined : null\n}\n\nconst lessThan = 60, greaterThan = 62, slash = 47, question = 63, bang = 33, dash = 45;\n\nfunction ElementContext(name, parent) {\n this.name = name;\n this.parent = parent;\n}\n\nconst startTagTerms = [StartTag, StartSelfClosingTag, StartScriptTag, StartStyleTag, StartTextareaTag];\n\nconst elementContext = new ContextTracker({\n start: null,\n shift(context, term, stack, input) {\n return startTagTerms.indexOf(term) > -1 ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n reduce(context, term) {\n return term == Element && context ? context.parent : context\n },\n reuse(context, node, stack, input) {\n let type = node.type.id;\n return type == StartTag || type == OpenTag\n ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n strict: false\n});\n\nconst tagStart = new ExternalTokenizer((input, stack) => {\n if (input.next != lessThan) {\n // End of file, close any open tags\n if (input.next < 0 && stack.context) input.acceptToken(missingCloseTag);\n return\n }\n input.advance();\n let close = input.next == slash;\n if (close) input.advance();\n let name = tagNameAfter(input, 0);\n if (name === undefined) return\n if (!name) return input.acceptToken(close ? IncompleteCloseTag : IncompleteTag)\n\n let parent = stack.context ? stack.context.name : null;\n if (close) {\n if (name == parent) return input.acceptToken(StartCloseTag)\n if (parent && implicitlyClosed[parent]) return input.acceptToken(missingCloseTag, -2)\n if (stack.dialectEnabled(Dialect_noMatch)) return input.acceptToken(NoMatchStartCloseTag)\n for (let cx = stack.context; cx; cx = cx.parent) if (cx.name == name) return\n input.acceptToken(MismatchedStartCloseTag);\n } else {\n if (name == \"script\") return input.acceptToken(StartScriptTag)\n if (name == \"style\") return input.acceptToken(StartStyleTag)\n if (name == \"textarea\") return input.acceptToken(StartTextareaTag)\n if (selfClosers.hasOwnProperty(name)) return input.acceptToken(StartSelfClosingTag)\n if (parent && closeOnOpen[parent] && closeOnOpen[parent][name]) input.acceptToken(missingCloseTag, -1);\n else input.acceptToken(StartTag);\n }\n}, {contextual: true});\n\nconst commentContent = new ExternalTokenizer(input => {\n for (let dashes = 0, i = 0;; i++) {\n if (input.next < 0) {\n if (i) input.acceptToken(commentContent$1);\n break\n }\n if (input.next == dash) {\n dashes++;\n } else if (input.next == greaterThan && dashes >= 2) {\n if (i >= 3) input.acceptToken(commentContent$1, -2);\n break\n } else {\n dashes = 0;\n }\n input.advance();\n }\n});\n\nfunction inForeignElement(context) {\n for (; context; context = context.parent)\n if (context.name == \"svg\" || context.name == \"math\") return true\n return false\n}\n\nconst endTag = new ExternalTokenizer((input, stack) => {\n if (input.next == slash && input.peek(1) == greaterThan) {\n let selfClosing = stack.dialectEnabled(Dialect_selfClosing) || inForeignElement(stack.context);\n input.acceptToken(selfClosing ? SelfClosingEndTag : EndTag, 2);\n } else if (input.next == greaterThan) {\n input.acceptToken(EndTag, 1);\n }\n});\n\nfunction contentTokenizer(tag, textToken, endToken) {\n let lastState = 2 + tag.length;\n return new ExternalTokenizer(input => {\n // state means:\n // - 0 nothing matched\n // - 1 '<' matched\n // - 2 '</'\n // - 3-(1+tag.length) part of the tag matched\n // - lastState whole tag + possibly whitespace matched\n for (let state = 0, matchedLen = 0, i = 0;; i++) {\n if (input.next < 0) {\n if (i) input.acceptToken(textToken);\n break\n }\n if (state == 0 && input.next == lessThan ||\n state == 1 && input.next == slash ||\n state >= 2 && state < lastState && input.next == tag.charCodeAt(state - 2)) {\n state++;\n matchedLen++;\n } else if (state == lastState && input.next == greaterThan) {\n if (i > matchedLen)\n input.acceptToken(textToken, -matchedLen);\n else\n input.acceptToken(endToken, -(matchedLen - 2));\n break\n } else if ((input.next == 10 /* '\\n' */ || input.next == 13 /* '\\r' */) && i) {\n input.acceptToken(textToken, 1);\n break\n } else {\n state = matchedLen = 0;\n }\n input.advance();\n }\n })\n}\n\nconst scriptTokens = contentTokenizer(\"script\", scriptText, StartCloseScriptTag);\n\nconst styleTokens = contentTokenizer(\"style\", styleText, StartCloseStyleTag);\n\nconst textareaTokens = contentTokenizer(\"textarea\", textareaText, StartCloseTextareaTag);\n\nconst htmlHighlighting = styleTags({\n \"Text RawText IncompleteTag IncompleteCloseTag\": tags.content,\n \"StartTag StartCloseTag SelfClosingEndTag EndTag\": tags.angleBracket,\n TagName: tags.tagName,\n \"MismatchedCloseTag/TagName\": [tags.tagName, tags.invalid],\n AttributeName: tags.attributeName,\n \"AttributeValue UnquotedAttributeValue\": tags.attributeValue,\n Is: tags.definitionOperator,\n \"EntityReference CharacterReference\": tags.character,\n Comment: tags.blockComment,\n ProcessingInst: tags.processingInstruction,\n DoctypeDecl: tags.documentMeta\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \",xOVO!rOOO!ZQ#tO'#CrO!`Q#tO'#C{O!eQ#tO'#DOO!jQ#tO'#DRO!oQ#tO'#DTO!tOaO'#CqO#PObO'#CqO#[OdO'#CqO$kO!rO'#CqOOO`'#Cq'#CqO$rO$fO'#DUO$zQ#tO'#DWO%PQ#tO'#DXOOO`'#Dl'#DlOOO`'#DZ'#DZQVO!rOOO%UQ&rO,59^O%aQ&rO,59gO%lQ&rO,59jO%wQ&rO,59mO&SQ&rO,59oOOOa'#D_'#D_O&_OaO'#CyO&jOaO,59]OOOb'#D`'#D`O&rObO'#C|O&}ObO,59]OOOd'#Da'#DaO'VOdO'#DPO'bOdO,59]OOO`'#Db'#DbO'jO!rO,59]O'qQ#tO'#DSOOO`,59],59]OOOp'#Dc'#DcO'vO$fO,59pOOO`,59p,59pO(OQ#|O,59rO(TQ#|O,59sOOO`-E7X-E7XO(YQ&rO'#CtOOQW'#D['#D[O(hQ&rO1G.xOOOa1G.x1G.xOOO`1G/Z1G/ZO(sQ&rO1G/ROOOb1G/R1G/RO)OQ&rO1G/UOOOd1G/U1G/UO)ZQ&rO1G/XOOO`1G/X1G/XO)fQ&rO1G/ZOOOa-E7]-E7]O)qQ#tO'#CzOOO`1G.w1G.wOOOb-E7^-E7^O)vQ#tO'#C}OOOd-E7_-E7_O){Q#tO'#DQOOO`-E7`-E7`O*QQ#|O,59nOOOp-E7a-E7aOOO`1G/[1G/[OOO`1G/^1G/^OOO`1G/_1G/_O*VQ,UO,59`OOQW-E7Y-E7YOOOa7+$d7+$dOOO`7+$u7+$uOOOb7+$m7+$mOOOd7+$p7+$pOOO`7+$s7+$sO*bQ#|O,59fO*gQ#|O,59iO*lQ#|O,59lOOO`1G/Y1G/YO*qO7[O'#CwO+SOMhO'#CwOOQW1G.z1G.zOOO`1G/Q1G/QOOO`1G/T1G/TOOO`1G/W1G/WOOOO'#D]'#D]O+eO7[O,59cOOQW,59c,59cOOOO'#D^'#D^O+vOMhO,59cOOOO-E7Z-E7ZOOQW1G.}1G.}OOOO-E7[-E7[\",\n stateData: \",c~O!_OS~OUSOVPOWQOXROYTO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O|_O!eZO~OgaO~OgbO~OgcO~OgdO~OgeO~O!XfOPmP![mP~O!YiOQpP![pP~O!ZlORsP![sP~OUSOVPOWQOXROYTOZqO[]O][O^^O_^Oa^Ob^Oc^Od^Oy^O!eZO~O![rO~P#gO!]sO!fuO~OgvO~OgwO~OS|OT}OiyO~OS!POT}OiyO~OS!ROT}OiyO~OS!TOT}OiyO~OS}OT}OiyO~O!XfOPmX![mX~OP!WO![!XO~O!YiOQpX![pX~OQ!ZO![!XO~O!ZlORsX![sX~OR!]O![!XO~O![!XO~P#gOg!_O~O!]sO!f!aO~OS!bO~OS!cO~Oj!dOShXThXihX~OS!fOT!gOiyO~OS!hOT!gOiyO~OS!iOT!gOiyO~OS!jOT!gOiyO~OS!gOT!gOiyO~Og!kO~Og!lO~Og!mO~OS!nO~Ol!qO!a!oO!c!pO~OS!rO~OS!sO~OS!tO~Ob!uOc!uOd!uO!a!wO!b!uO~Ob!xOc!xOd!xO!c!wO!d!xO~Ob!uOc!uOd!uO!a!{O!b!uO~Ob!xOc!xOd!xO!c!{O!d!xO~OT~cbd!ey|!e~\",\n goto: \"%q!aPPPPPPPPPPPPPPPPPPPPP!b!hP!nPP!zP!}#Q#T#Z#^#a#g#j#m#s#y!bP!b!bP$P$V$m$s$y%P%V%]%cPPPPPPPP%iX^OX`pXUOX`pezabcde{!O!Q!S!UR!q!dRhUR!XhXVOX`pRkVR!XkXWOX`pRnWR!XnXXOX`pQrXR!XpXYOX`pQ`ORx`Q{aQ!ObQ!QcQ!SdQ!UeZ!e{!O!Q!S!UQ!v!oR!z!vQ!y!pR!|!yQgUR!VgQjVR!YjQmWR![mQpXR!^pQtZR!`tS_O`ToXp\",\n nodeNames: \"⚠ StartCloseTag StartCloseTag StartCloseTag EndTag SelfClosingEndTag StartTag StartTag StartTag StartTag StartTag StartCloseTag StartCloseTag StartCloseTag IncompleteTag IncompleteCloseTag Document Text EntityReference CharacterReference InvalidEntity Element OpenTag TagName Attribute AttributeName Is AttributeValue UnquotedAttributeValue ScriptText CloseTag OpenTag StyleText CloseTag OpenTag TextareaText CloseTag OpenTag CloseTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag CloseTag DoctypeDecl\",\n maxTerm: 68,\n context: elementContext,\n nodeProps: [\n [\"closedBy\", -10,1,2,3,7,8,9,10,11,12,13,\"EndTag\",6,\"EndTag SelfClosingEndTag\",-4,22,31,34,37,\"CloseTag\"],\n [\"openedBy\", 4,\"StartTag StartCloseTag\",5,\"StartTag\",-4,30,33,36,38,\"OpenTag\"],\n [\"group\", -10,14,15,18,19,20,21,40,41,42,43,\"Entity\",17,\"Entity TextContent\",-3,29,32,35,\"TextContent Entity\"],\n [\"isolate\", -11,22,30,31,33,34,36,37,38,39,42,43,\"ltr\",-3,27,28,40,\"\"]\n ],\n propSources: [htmlHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 9,\n tokenData: \"!<p!aR!YOX$qXY,QYZ,QZ[$q[]&X]^,Q^p$qpq,Qqr-_rs3_sv-_vw3}wxHYx}-_}!OH{!O!P-_!P!Q$q!Q![-_![!]Mz!]!^-_!^!_!$S!_!`!;x!`!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4U-_4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!Z$|caPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr$qrs&}sv$qvw+Pwx(tx!^$q!^!_*V!_!a&X!a#S$q#S#T&X#T;'S$q;'S;=`+z<%lO$q!R&bXaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&Xq'UVaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}P'pTaPOv'kw!^'k!_;'S'k;'S;=`(P<%lO'kP(SP;=`<%l'kp([S!dpOv(Vx;'S(V;'S;=`(h<%lO(Vp(kP;=`<%l(Vq(qP;=`<%l&}a({WaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t`)jT!b`Or)esv)ew;'S)e;'S;=`)y<%lO)e`)|P;=`<%l)ea*SP;=`<%l(t!Q*^V!b`!dpOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!Q*vP;=`<%l*V!R*|P;=`<%l&XW+UYlWOX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+PW+wP;=`<%l+P!Z+}P;=`<%l$q!a,]`aP!b`!dp!_^OX&XXY,QYZ,QZ]&X]^,Q^p&Xpq,Qqr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!_-ljiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q[/ebiSlWOX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+PS0rXiSqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0mS1bP;=`<%l0m[1hP;=`<%l/^!V1vciSaP!b`!dpOq&Xqr1krs&}sv1kvw0mwx(tx!P1k!P!Q&X!Q!^1k!^!_*V!_!a&X!a#s1k#s$f&X$f;'S1k;'S;=`3R<%l?Ah1k?Ah?BY&X?BY?Mn1k?MnO&X!V3UP;=`<%l1k!_3[P;=`<%l-_!Z3hV!ahaP!dpOv&}wx'kx!^&}!^!_(V!_;'S&};'S;=`(n<%lO&}!_4WiiSlWd!ROX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst>]tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^/^!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!Z5zblWOX5uXZ7SZ[5u[^7S^p5uqr5urs7Sst+Ptw5uwx7Sx!]5u!]!^7w!^!a7S!a#S5u#S#T7S#T;'S5u;'S;=`8n<%lO5u!R7VVOp7Sqs7St!]7S!]!^7l!^;'S7S;'S;=`7q<%lO7S!R7qOb!R!R7tP;=`<%l7S!Z8OYlWb!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!Z8qP;=`<%l5u!_8{iiSlWOX5uXZ7SZ[5u[^7S^p5uqr8trs7Sst/^tw8twx7Sx!P8t!P!Q5u!Q!]8t!]!^:j!^!a7S!a#S8t#S#T;{#T#s8t#s$f5u$f;'S8t;'S;=`>V<%l?Ah8t?Ah?BY5u?BY?Mn8t?MnO5u!_:sbiSlWb!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!V<QciSOp7Sqr;{rs7Sst0mtw;{wx7Sx!P;{!P!Q7S!Q!];{!]!^=]!^!a7S!a#s;{#s$f7S$f;'S;{;'S;=`>P<%l?Ah;{?Ah?BY7S?BY?Mn;{?MnO7S!V=dXiSb!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!V>SP;=`<%l;{!_>YP;=`<%l8t!_>dhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^/^!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!Z@TalWOX@OXZAYZ[@O[^AY^p@Oqr@OrsAYsw@OwxAYx!]@O!]!^Az!^!aAY!a#S@O#S#TAY#T;'S@O;'S;=`Bq<%lO@O!RA]UOpAYq!]AY!]!^Ao!^;'SAY;'S;=`At<%lOAY!RAtOc!R!RAwP;=`<%lAY!ZBRYlWc!ROX+PZ[+P^p+Pqr+Psw+Px!^+P!a#S+P#T;'S+P;'S;=`+t<%lO+P!ZBtP;=`<%l@O!_COhiSlWOX@OXZAYZ[@O[^AY^p@OqrBwrsAYswBwwxAYx!PBw!P!Q@O!Q!]Bw!]!^Dj!^!aAY!a#SBw#S#TE{#T#sBw#s$f@O$f;'SBw;'S;=`HS<%l?AhBw?Ah?BY@O?BY?MnBw?MnO@O!_DsbiSlWc!ROX+PZ[+P^p+Pqr/^sw/^x!P/^!P!Q+P!Q!^/^!a#S/^#S#T0m#T#s/^#s$f+P$f;'S/^;'S;=`1e<%l?Ah/^?Ah?BY+P?BY?Mn/^?MnO+P!VFQbiSOpAYqrE{rsAYswE{wxAYx!PE{!P!QAY!Q!]E{!]!^GY!^!aAY!a#sE{#s$fAY$f;'SE{;'S;=`G|<%l?AhE{?Ah?BYAY?BY?MnE{?MnOAY!VGaXiSc!Rqr0msw0mx!P0m!Q!^0m!a#s0m$f;'S0m;'S;=`1_<%l?Ah0m?BY?Mn0m!VHPP;=`<%lE{!_HVP;=`<%lBw!ZHcW!cxaP!b`Or(trs'ksv(tw!^(t!^!_)e!_;'S(t;'S;=`*P<%lO(t!aIYliSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OKQ!O!P-_!P!Q$q!Q!^-_!^!_*V!_!a&X!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!aK_kiSaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx!P-_!P!Q$q!Q!^-_!^!_*V!_!`&X!`!aMS!a#S-_#S#T1k#T#s-_#s$f$q$f;'S-_;'S;=`3X<%l?Ah-_?Ah?BY$q?BY?Mn-_?MnO$q!TM_XaP!b`!dp!fQOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X!aNZ!ZiSgQaPlW!b`!dpOX$qXZ&XZ[$q[^&X^p$qpq&Xqr-_rs&}sv-_vw/^wx(tx}-_}!OMz!O!PMz!P!Q$q!Q![Mz![!]Mz!]!^-_!^!_*V!_!a&X!a!c-_!c!}Mz!}#R-_#R#SMz#S#T1k#T#oMz#o#s-_#s$f$q$f$}-_$}%OMz%O%W-_%W%oMz%o%p-_%p&aMz&a&b-_&b1pMz1p4UMz4U4dMz4d4e-_4e$ISMz$IS$I`-_$I`$IbMz$Ib$Je-_$Je$JgMz$Jg$Kh-_$Kh%#tMz%#t&/x-_&/x&EtMz&Et&FV-_&FV;'SMz;'S;:j!#|;:j;=`3X<%l?&r-_?&r?AhMz?Ah?BY$q?BY?MnMz?MnO$q!a!$PP;=`<%lMz!R!$ZY!b`!dpOq*Vqr!$yrs(Vsv*Vwx)ex!a*V!a!b!4t!b;'S*V;'S;=`*s<%lO*V!R!%Q]!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!%y!O!f*V!f!g!']!g#W*V#W#X!0`#X;'S*V;'S;=`*s<%lO*V!R!&QX!b`!dpOr*Vrs(Vsv*Vwx)ex}*V}!O!&m!O;'S*V;'S;=`*s<%lO*V!R!&vV!b`!dp!ePOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!'dX!b`!dpOr*Vrs(Vsv*Vwx)ex!q*V!q!r!(P!r;'S*V;'S;=`*s<%lO*V!R!(WX!b`!dpOr*Vrs(Vsv*Vwx)ex!e*V!e!f!(s!f;'S*V;'S;=`*s<%lO*V!R!(zX!b`!dpOr*Vrs(Vsv*Vwx)ex!v*V!v!w!)g!w;'S*V;'S;=`*s<%lO*V!R!)nX!b`!dpOr*Vrs(Vsv*Vwx)ex!{*V!{!|!*Z!|;'S*V;'S;=`*s<%lO*V!R!*bX!b`!dpOr*Vrs(Vsv*Vwx)ex!r*V!r!s!*}!s;'S*V;'S;=`*s<%lO*V!R!+UX!b`!dpOr*Vrs(Vsv*Vwx)ex!g*V!g!h!+q!h;'S*V;'S;=`*s<%lO*V!R!+xY!b`!dpOr!+qrs!,hsv!+qvw!-Swx!.[x!`!+q!`!a!/j!a;'S!+q;'S;=`!0Y<%lO!+qq!,mV!dpOv!,hvx!-Sx!`!,h!`!a!-q!a;'S!,h;'S;=`!.U<%lO!,hP!-VTO!`!-S!`!a!-f!a;'S!-S;'S;=`!-k<%lO!-SP!-kO|PP!-nP;=`<%l!-Sq!-xS!dp|POv(Vx;'S(V;'S;=`(h<%lO(Vq!.XP;=`<%l!,ha!.aX!b`Or!.[rs!-Ssv!.[vw!-Sw!`!.[!`!a!.|!a;'S!.[;'S;=`!/d<%lO!.[a!/TT!b`|POr)esv)ew;'S)e;'S;=`)y<%lO)ea!/gP;=`<%l!.[!R!/sV!b`!dp|POr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!0]P;=`<%l!+q!R!0gX!b`!dpOr*Vrs(Vsv*Vwx)ex#c*V#c#d!1S#d;'S*V;'S;=`*s<%lO*V!R!1ZX!b`!dpOr*Vrs(Vsv*Vwx)ex#V*V#V#W!1v#W;'S*V;'S;=`*s<%lO*V!R!1}X!b`!dpOr*Vrs(Vsv*Vwx)ex#h*V#h#i!2j#i;'S*V;'S;=`*s<%lO*V!R!2qX!b`!dpOr*Vrs(Vsv*Vwx)ex#m*V#m#n!3^#n;'S*V;'S;=`*s<%lO*V!R!3eX!b`!dpOr*Vrs(Vsv*Vwx)ex#d*V#d#e!4Q#e;'S*V;'S;=`*s<%lO*V!R!4XX!b`!dpOr*Vrs(Vsv*Vwx)ex#X*V#X#Y!+q#Y;'S*V;'S;=`*s<%lO*V!R!4{Y!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!a!4t!a!b!:]!b;'S!4t;'S;=`!;r<%lO!4tq!5pV!dpOv!5kvx!6Vx!a!5k!a!b!7W!b;'S!5k;'S;=`!8V<%lO!5kP!6YTO!a!6V!a!b!6i!b;'S!6V;'S;=`!7Q<%lO!6VP!6lTO!`!6V!`!a!6{!a;'S!6V;'S;=`!7Q<%lO!6VP!7QOyPP!7TP;=`<%l!6Vq!7]V!dpOv!5kvx!6Vx!`!5k!`!a!7r!a;'S!5k;'S;=`!8V<%lO!5kq!7yS!dpyPOv(Vx;'S(V;'S;=`(h<%lO(Vq!8YP;=`<%l!5ka!8bX!b`Or!8]rs!6Vsv!8]vw!6Vw!a!8]!a!b!8}!b;'S!8];'S;=`!:V<%lO!8]a!9SX!b`Or!8]rs!6Vsv!8]vw!6Vw!`!8]!`!a!9o!a;'S!8];'S;=`!:V<%lO!8]a!9vT!b`yPOr)esv)ew;'S)e;'S;=`)y<%lO)ea!:YP;=`<%l!8]!R!:dY!b`!dpOr!4trs!5ksv!4tvw!6Vwx!8]x!`!4t!`!a!;S!a;'S!4t;'S;=`!;r<%lO!4t!R!;]V!b`!dpyPOr*Vrs(Vsv*Vwx)ex;'S*V;'S;=`*s<%lO*V!R!;uP;=`<%l!4t!V!<TXjSaP!b`!dpOr&Xrs&}sv&Xwx(tx!^&X!^!_*V!_;'S&X;'S;=`*y<%lO&X\",\n tokenizers: [scriptTokens, styleTokens, textareaTokens, endTag, tagStart, commentContent, 0, 1, 2, 3, 4, 5],\n topRules: {\"Document\":[0,16]},\n dialects: {noMatch: 0, selfClosing: 515},\n tokenPrec: 517\n});\n\nfunction getAttrs(openTag, input) {\n let attrs = Object.create(null);\n for (let att of openTag.getChildren(Attribute)) {\n let name = att.getChild(AttributeName), value = att.getChild(AttributeValue) || att.getChild(UnquotedAttributeValue);\n if (name) attrs[input.read(name.from, name.to)] =\n !value ? \"\" : value.type.id == AttributeValue ? input.read(value.from + 1, value.to - 1) : input.read(value.from, value.to);\n }\n return attrs\n}\n\nfunction findTagName(openTag, input) {\n let tagNameNode = openTag.getChild(TagName);\n return tagNameNode ? input.read(tagNameNode.from, tagNameNode.to) : \" \"\n}\n\nfunction maybeNest(node, input, tags) {\n let attrs;\n for (let tag of tags) {\n if (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(node.node.parent.firstChild, input))))\n return {parser: tag.parser, bracketed: true}\n }\n return null\n}\n\n// tags?: {\n// tag: string,\n// attrs?: ({[attr: string]: string}) => boolean,\n// parser: Parser\n// }[]\n// attributes?: {\n// name: string,\n// tagName?: string,\n// parser: Parser\n// }[]\n \nfunction configureNesting(tags = [], attributes = []) {\n let script = [], style = [], textarea = [], other = [];\n for (let tag of tags) {\n let array = tag.tag == \"script\" ? script : tag.tag == \"style\" ? style : tag.tag == \"textarea\" ? textarea : other;\n array.push(tag);\n }\n let attrs = attributes.length ? Object.create(null) : null;\n for (let attr of attributes) (attrs[attr.name] || (attrs[attr.name] = [])).push(attr);\n\n return parseMixed((node, input) => {\n let id = node.type.id;\n if (id == ScriptText) return maybeNest(node, input, script)\n if (id == StyleText) return maybeNest(node, input, style)\n if (id == TextareaText) return maybeNest(node, input, textarea)\n\n if (id == Element && other.length) {\n let n = node.node, open = n.firstChild, tagName = open && findTagName(open, input), attrs;\n if (tagName) for (let tag of other) {\n if (tag.tag == tagName && (!tag.attrs || tag.attrs(attrs || (attrs = getAttrs(open, input))))) {\n let close = n.lastChild;\n let to = close.type.id == CloseTag ? close.from : n.to;\n if (to > open.to)\n return {parser: tag.parser, overlay: [{from: open.to, to}]}\n }\n }\n }\n\n if (attrs && id == Attribute) {\n let n = node.node, nameNode;\n if (nameNode = n.firstChild) {\n let matches = attrs[input.read(nameNode.from, nameNode.to)];\n if (matches) for (let attr of matches) {\n if (attr.tagName && attr.tagName != findTagName(n.parent, input)) continue\n let value = n.lastChild;\n if (value.type.id == AttributeValue) {\n let from = value.from + 1;\n let last = value.lastChild, to = value.to - (last && last.isError ? 0 : 1);\n if (to > from) return {parser: attr.parser, overlay: [{from, to}], bracketed: true}\n } else if (value.type.id == UnquotedAttributeValue) {\n return {parser: attr.parser, overlay: [{from: value.from, to: value.to}]}\n }\n }\n }\n }\n return null\n })\n}\n\nexport { configureNesting, parser };\n","import { parser, configureNesting } from '@lezer/html';\nimport { cssLanguage, css } from '@codemirror/lang-css';\nimport { javascriptLanguage, typescriptLanguage, jsxLanguage, tsxLanguage, javascript } from '@codemirror/lang-javascript';\nimport { EditorView } from '@codemirror/view';\nimport { EditorSelection } from '@codemirror/state';\nimport { syntaxTree, LRLanguage, indentNodeProp, foldNodeProp, bracketMatchingHandle, LanguageSupport } from '@codemirror/language';\n\nconst Targets = [\"_blank\", \"_self\", \"_top\", \"_parent\"];\nconst Charsets = [\"ascii\", \"utf-8\", \"utf-16\", \"latin1\", \"latin1\"];\nconst Methods = [\"get\", \"post\", \"put\", \"delete\"];\nconst Encs = [\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"];\nconst Bool = [\"true\", \"false\"];\nconst S = {}; // Empty tag spec\nconst Tags = {\n a: {\n attrs: {\n href: null, ping: null, type: null,\n media: null,\n target: Targets,\n hreflang: null\n }\n },\n abbr: S,\n address: S,\n area: {\n attrs: {\n alt: null, coords: null, href: null, target: null, ping: null,\n media: null, hreflang: null, type: null,\n shape: [\"default\", \"rect\", \"circle\", \"poly\"]\n }\n },\n article: S,\n aside: S,\n audio: {\n attrs: {\n src: null, mediagroup: null,\n crossorigin: [\"anonymous\", \"use-credentials\"],\n preload: [\"none\", \"metadata\", \"auto\"],\n autoplay: [\"autoplay\"],\n loop: [\"loop\"],\n controls: [\"controls\"]\n }\n },\n b: S,\n base: { attrs: { href: null, target: Targets } },\n bdi: S,\n bdo: S,\n blockquote: { attrs: { cite: null } },\n body: S,\n br: S,\n button: {\n attrs: {\n form: null, formaction: null, name: null, value: null,\n autofocus: [\"autofocus\"],\n disabled: [\"autofocus\"],\n formenctype: Encs,\n formmethod: Methods,\n formnovalidate: [\"novalidate\"],\n formtarget: Targets,\n type: [\"submit\", \"reset\", \"button\"]\n }\n },\n canvas: { attrs: { width: null, height: null } },\n caption: S,\n center: S,\n cite: S,\n code: S,\n col: { attrs: { span: null } },\n colgroup: { attrs: { span: null } },\n command: {\n attrs: {\n type: [\"command\", \"checkbox\", \"radio\"],\n label: null, icon: null, radiogroup: null, command: null, title: null,\n disabled: [\"disabled\"],\n checked: [\"checked\"]\n }\n },\n data: { attrs: { value: null } },\n datagrid: { attrs: { disabled: [\"disabled\"], multiple: [\"multiple\"] } },\n datalist: { attrs: { data: null } },\n dd: S,\n del: { attrs: { cite: null, datetime: null } },\n details: { attrs: { open: [\"open\"] } },\n dfn: S,\n div: S,\n dl: S,\n dt: S,\n em: S,\n embed: { attrs: { src: null, type: null, width: null, height: null } },\n eventsource: { attrs: { src: null } },\n fieldset: { attrs: { disabled: [\"disabled\"], form: null, name: null } },\n figcaption: S,\n figure: S,\n footer: S,\n form: {\n attrs: {\n action: null, name: null,\n \"accept-charset\": Charsets,\n autocomplete: [\"on\", \"off\"],\n enctype: Encs,\n method: Methods,\n novalidate: [\"novalidate\"],\n target: Targets\n }\n },\n h1: S, h2: S, h3: S, h4: S, h5: S, h6: S,\n head: {\n children: [\"title\", \"base\", \"link\", \"style\", \"meta\", \"script\", \"noscript\", \"command\"]\n },\n header: S,\n hgroup: S,\n hr: S,\n html: {\n attrs: { manifest: null }\n },\n i: S,\n iframe: {\n attrs: {\n src: null, srcdoc: null, name: null, width: null, height: null,\n sandbox: [\"allow-top-navigation\", \"allow-same-origin\", \"allow-forms\", \"allow-scripts\"],\n seamless: [\"seamless\"]\n }\n },\n img: {\n attrs: {\n alt: null, src: null, ismap: null, usemap: null, width: null, height: null,\n crossorigin: [\"anonymous\", \"use-credentials\"]\n }\n },\n input: {\n attrs: {\n alt: null, dirname: null, form: null, formaction: null,\n height: null, list: null, max: null, maxlength: null, min: null,\n name: null, pattern: null, placeholder: null, size: null, src: null,\n step: null, value: null, width: null,\n accept: [\"audio/*\", \"video/*\", \"image/*\"],\n autocomplete: [\"on\", \"off\"],\n autofocus: [\"autofocus\"],\n checked: [\"checked\"],\n disabled: [\"disabled\"],\n formenctype: Encs,\n formmethod: Methods,\n formnovalidate: [\"novalidate\"],\n formtarget: Targets,\n multiple: [\"multiple\"],\n readonly: [\"readonly\"],\n required: [\"required\"],\n type: [\"hidden\", \"text\", \"search\", \"tel\", \"url\", \"email\", \"password\", \"datetime\", \"date\", \"month\",\n \"week\", \"time\", \"datetime-local\", \"number\", \"range\", \"color\", \"checkbox\", \"radio\",\n \"file\", \"submit\", \"image\", \"reset\", \"button\"]\n }\n },\n ins: { attrs: { cite: null, datetime: null } },\n kbd: S,\n keygen: {\n attrs: {\n challenge: null, form: null, name: null,\n autofocus: [\"autofocus\"],\n disabled: [\"disabled\"],\n keytype: [\"RSA\"]\n }\n },\n label: { attrs: { for: null, form: null } },\n legend: S,\n li: { attrs: { value: null } },\n link: {\n attrs: {\n href: null, type: null,\n hreflang: null,\n media: null,\n sizes: [\"all\", \"16x16\", \"16x16 32x32\", \"16x16 32x32 64x64\"]\n }\n },\n map: { attrs: { name: null } },\n mark: S,\n menu: { attrs: { label: null, type: [\"list\", \"context\", \"toolbar\"] } },\n meta: {\n attrs: {\n content: null,\n charset: Charsets,\n name: [\"viewport\", \"application-name\", \"author\", \"description\", \"generator\", \"keywords\"],\n \"http-equiv\": [\"content-language\", \"content-type\", \"default-style\", \"refresh\"]\n }\n },\n meter: { attrs: { value: null, min: null, low: null, high: null, max: null, optimum: null } },\n nav: S,\n noscript: S,\n object: {\n attrs: {\n data: null, type: null, name: null, usemap: null, form: null, width: null, height: null,\n typemustmatch: [\"typemustmatch\"]\n }\n },\n ol: { attrs: { reversed: [\"reversed\"], start: null, type: [\"1\", \"a\", \"A\", \"i\", \"I\"] },\n children: [\"li\", \"script\", \"template\", \"ul\", \"ol\"] },\n optgroup: { attrs: { disabled: [\"disabled\"], label: null } },\n option: { attrs: { disabled: [\"disabled\"], label: null, selected: [\"selected\"], value: null } },\n output: { attrs: { for: null, form: null, name: null } },\n p: S,\n param: { attrs: { name: null, value: null } },\n pre: S,\n progress: { attrs: { value: null, max: null } },\n q: { attrs: { cite: null } },\n rp: S,\n rt: S,\n ruby: S,\n samp: S,\n script: {\n attrs: {\n type: [\"text/javascript\"],\n src: null,\n async: [\"async\"],\n defer: [\"defer\"],\n charset: Charsets\n }\n },\n section: S,\n select: {\n attrs: {\n form: null, name: null, size: null,\n autofocus: [\"autofocus\"],\n disabled: [\"disabled\"],\n multiple: [\"multiple\"]\n }\n },\n slot: { attrs: { name: null } },\n small: S,\n source: { attrs: { src: null, type: null, media: null } },\n span: S,\n strong: S,\n style: {\n attrs: {\n type: [\"text/css\"],\n media: null,\n scoped: null\n }\n },\n sub: S,\n summary: S,\n sup: S,\n table: S,\n tbody: S,\n td: { attrs: { colspan: null, rowspan: null, headers: null } },\n template: S,\n textarea: {\n attrs: {\n dirname: null, form: null, maxlength: null, name: null, placeholder: null,\n rows: null, cols: null,\n autofocus: [\"autofocus\"],\n disabled: [\"disabled\"],\n readonly: [\"readonly\"],\n required: [\"required\"],\n wrap: [\"soft\", \"hard\"]\n }\n },\n tfoot: S,\n th: { attrs: { colspan: null, rowspan: null, headers: null, scope: [\"row\", \"col\", \"rowgroup\", \"colgroup\"] } },\n thead: S,\n time: { attrs: { datetime: null } },\n title: S,\n tr: S,\n track: {\n attrs: {\n src: null, label: null, default: null,\n kind: [\"subtitles\", \"captions\", \"descriptions\", \"chapters\", \"metadata\"],\n srclang: null\n }\n },\n ul: { children: [\"li\", \"script\", \"template\", \"ul\", \"ol\"] },\n var: S,\n video: {\n attrs: {\n src: null, poster: null, width: null, height: null,\n crossorigin: [\"anonymous\", \"use-credentials\"],\n preload: [\"auto\", \"metadata\", \"none\"],\n autoplay: [\"autoplay\"],\n mediagroup: [\"movie\"],\n muted: [\"muted\"],\n controls: [\"controls\"]\n }\n },\n wbr: S\n};\nconst GlobalAttrs = {\n accesskey: null,\n class: null,\n contenteditable: Bool,\n contextmenu: null,\n dir: [\"ltr\", \"rtl\", \"auto\"],\n draggable: [\"true\", \"false\", \"auto\"],\n dropzone: [\"copy\", \"move\", \"link\", \"string:\", \"file:\"],\n hidden: [\"hidden\"],\n id: null,\n inert: [\"inert\"],\n itemid: null,\n itemprop: null,\n itemref: null,\n itemscope: [\"itemscope\"],\n itemtype: null,\n lang: [\"ar\", \"bn\", \"de\", \"en-GB\", \"en-US\", \"es\", \"fr\", \"hi\", \"id\", \"ja\", \"pa\", \"pt\", \"ru\", \"tr\", \"zh\"],\n spellcheck: Bool,\n autocorrect: Bool,\n autocapitalize: Bool,\n style: null,\n tabindex: null,\n title: null,\n translate: [\"yes\", \"no\"],\n rel: [\"stylesheet\", \"alternate\", \"author\", \"bookmark\", \"help\", \"license\", \"next\", \"nofollow\", \"noreferrer\", \"prefetch\", \"prev\", \"search\", \"tag\"],\n role: /*@__PURE__*/\"alert application article banner button cell checkbox complementary contentinfo dialog document feed figure form grid gridcell heading img list listbox listitem main navigation region row rowgroup search switch tab table tabpanel textbox timer\".split(\" \"),\n \"aria-activedescendant\": null,\n \"aria-atomic\": Bool,\n \"aria-autocomplete\": [\"inline\", \"list\", \"both\", \"none\"],\n \"aria-busy\": Bool,\n \"aria-checked\": [\"true\", \"false\", \"mixed\", \"undefined\"],\n \"aria-controls\": null,\n \"aria-describedby\": null,\n \"aria-disabled\": Bool,\n \"aria-dropeffect\": null,\n \"aria-expanded\": [\"true\", \"false\", \"undefined\"],\n \"aria-flowto\": null,\n \"aria-grabbed\": [\"true\", \"false\", \"undefined\"],\n \"aria-haspopup\": Bool,\n \"aria-hidden\": Bool,\n \"aria-invalid\": [\"true\", \"false\", \"grammar\", \"spelling\"],\n \"aria-label\": null,\n \"aria-labelledby\": null,\n \"aria-level\": null,\n \"aria-live\": [\"off\", \"polite\", \"assertive\"],\n \"aria-multiline\": Bool,\n \"aria-multiselectable\": Bool,\n \"aria-owns\": null,\n \"aria-posinset\": null,\n \"aria-pressed\": [\"true\", \"false\", \"mixed\", \"undefined\"],\n \"aria-readonly\": Bool,\n \"aria-relevant\": null,\n \"aria-required\": Bool,\n \"aria-selected\": [\"true\", \"false\", \"undefined\"],\n \"aria-setsize\": null,\n \"aria-sort\": [\"ascending\", \"descending\", \"none\", \"other\"],\n \"aria-valuemax\": null,\n \"aria-valuemin\": null,\n \"aria-valuenow\": null,\n \"aria-valuetext\": null\n};\nconst eventAttributes = /*@__PURE__*/(\"beforeunload copy cut dragstart dragover dragleave dragenter dragend \" +\n \"drag paste focus blur change click load mousedown mouseenter mouseleave \" +\n \"mouseup keydown keyup resize scroll unload\").split(\" \").map(n => \"on\" + n);\nfor (let a of eventAttributes)\n GlobalAttrs[a] = null;\nclass Schema {\n constructor(extraTags, extraAttrs) {\n this.tags = { ...Tags, ...extraTags };\n this.globalAttrs = { ...GlobalAttrs, ...extraAttrs };\n this.allTags = Object.keys(this.tags);\n this.globalAttrNames = Object.keys(this.globalAttrs);\n }\n}\nSchema.default = /*@__PURE__*/new Schema;\nfunction elementName(doc, tree, max = doc.length) {\n if (!tree)\n return \"\";\n let tag = tree.firstChild;\n let name = tag && tag.getChild(\"TagName\");\n return name ? doc.sliceString(name.from, Math.min(name.to, max)) : \"\";\n}\nfunction findParentElement(tree, skip = false) {\n for (; tree; tree = tree.parent)\n if (tree.name == \"Element\") {\n if (skip)\n skip = false;\n else\n return tree;\n }\n return null;\n}\nfunction allowedChildren(doc, tree, schema) {\n let parentInfo = schema.tags[elementName(doc, findParentElement(tree))];\n return (parentInfo === null || parentInfo === void 0 ? void 0 : parentInfo.children) || schema.allTags;\n}\nfunction openTags(doc, tree) {\n let open = [];\n for (let parent = findParentElement(tree); parent && !parent.type.isTop; parent = findParentElement(parent.parent)) {\n let tagName = elementName(doc, parent);\n if (tagName && parent.lastChild.name == \"CloseTag\")\n break;\n if (tagName && open.indexOf(tagName) < 0 && (tree.name == \"EndTag\" || tree.from >= parent.firstChild.to))\n open.push(tagName);\n }\n return open;\n}\nconst identifier = /^[:\\-\\.\\w\\u00b7-\\uffff]*$/;\nfunction completeTag(state, schema, tree, from, to) {\n let end = /\\s*>/.test(state.sliceDoc(to, to + 5)) ? \"\" : \">\";\n let parent = findParentElement(tree, tree.name == \"StartTag\" || tree.name == \"TagName\");\n return { from, to,\n options: allowedChildren(state.doc, parent, schema).map(tagName => ({ label: tagName, type: \"type\" })).concat(openTags(state.doc, tree).map((tag, i) => ({ label: \"/\" + tag, apply: \"/\" + tag + end,\n type: \"type\", boost: 99 - i }))),\n validFor: /^\\/?[:\\-\\.\\w\\u00b7-\\uffff]*$/ };\n}\nfunction completeCloseTag(state, tree, from, to) {\n let end = /\\s*>/.test(state.sliceDoc(to, to + 5)) ? \"\" : \">\";\n return { from, to,\n options: openTags(state.doc, tree).map((tag, i) => ({ label: tag, apply: tag + end, type: \"type\", boost: 99 - i })),\n validFor: identifier };\n}\nfunction completeStartTag(state, schema, tree, pos) {\n let options = [], level = 0;\n for (let tagName of allowedChildren(state.doc, tree, schema))\n options.push({ label: \"<\" + tagName, type: \"type\" });\n for (let open of openTags(state.doc, tree))\n options.push({ label: \"</\" + open + \">\", type: \"type\", boost: 99 - level++ });\n return { from: pos, to: pos, options, validFor: /^<\\/?[:\\-\\.\\w\\u00b7-\\uffff]*$/ };\n}\nfunction completeAttrName(state, schema, tree, from, to) {\n let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;\n let localAttrs = info && info.attrs ? Object.keys(info.attrs) : [];\n let names = info && info.globalAttrs === false ? localAttrs\n : localAttrs.length ? localAttrs.concat(schema.globalAttrNames) : schema.globalAttrNames;\n return { from, to,\n options: names.map(attrName => ({ label: attrName, type: \"property\" })),\n validFor: identifier };\n}\nfunction completeAttrValue(state, schema, tree, from, to) {\n var _a;\n let nameNode = (_a = tree.parent) === null || _a === void 0 ? void 0 : _a.getChild(\"AttributeName\");\n let options = [], token = undefined;\n if (nameNode) {\n let attrName = state.sliceDoc(nameNode.from, nameNode.to);\n let attrs = schema.globalAttrs[attrName];\n if (!attrs) {\n let elt = findParentElement(tree), info = elt ? schema.tags[elementName(state.doc, elt)] : null;\n attrs = (info === null || info === void 0 ? void 0 : info.attrs) && info.attrs[attrName];\n }\n if (attrs) {\n let base = state.sliceDoc(from, to).toLowerCase(), quoteStart = '\"', quoteEnd = '\"';\n if (/^['\"]/.test(base)) {\n token = base[0] == '\"' ? /^[^\"]*$/ : /^[^']*$/;\n quoteStart = \"\";\n quoteEnd = state.sliceDoc(to, to + 1) == base[0] ? \"\" : base[0];\n base = base.slice(1);\n from++;\n }\n else {\n token = /^[^\\s<>='\"]*$/;\n }\n for (let value of attrs)\n options.push({ label: value, apply: quoteStart + value + quoteEnd, type: \"constant\" });\n }\n }\n return { from, to, options, validFor: token };\n}\nfunction htmlCompletionFor(schema, context) {\n let { state, pos } = context, tree = syntaxTree(state).resolveInner(pos, -1), around = tree.resolve(pos);\n for (let scan = pos, before; around == tree && (before = tree.childBefore(scan));) {\n let last = before.lastChild;\n if (!last || !last.type.isError || last.from < last.to)\n break;\n around = tree = before;\n scan = last.from;\n }\n if (tree.name == \"TagName\") {\n return tree.parent && /CloseTag$/.test(tree.parent.name) ? completeCloseTag(state, tree, tree.from, pos)\n : completeTag(state, schema, tree, tree.from, pos);\n }\n else if (tree.name == \"StartTag\" || tree.name == \"IncompleteTag\") {\n return completeTag(state, schema, tree, pos, pos);\n }\n else if (tree.name == \"StartCloseTag\" || tree.name == \"IncompleteCloseTag\") {\n return completeCloseTag(state, tree, pos, pos);\n }\n else if (tree.name == \"OpenTag\" || tree.name == \"SelfClosingTag\" || tree.name == \"AttributeName\") {\n return completeAttrName(state, schema, tree, tree.name == \"AttributeName\" ? tree.from : pos, pos);\n }\n else if (tree.name == \"Is\" || tree.name == \"AttributeValue\" || tree.name == \"UnquotedAttributeValue\") {\n return completeAttrValue(state, schema, tree, tree.name == \"Is\" ? pos : tree.from, pos);\n }\n else if (context.explicit && (around.name == \"Element\" || around.name == \"Text\" || around.name == \"Document\")) {\n return completeStartTag(state, schema, tree, pos);\n }\n else {\n return null;\n }\n}\n/**\nHTML tag completion. Opens and closes tags and attributes in a\ncontext-aware way.\n*/\nfunction htmlCompletionSource(context) {\n return htmlCompletionFor(Schema.default, context);\n}\n/**\nCreate a completion source for HTML extended with additional tags\nor attributes.\n*/\nfunction htmlCompletionSourceWith(config) {\n let { extraTags, extraGlobalAttributes: extraAttrs } = config;\n let schema = extraAttrs || extraTags ? new Schema(extraTags, extraAttrs) : Schema.default;\n return (context) => htmlCompletionFor(schema, context);\n}\n\nconst jsonParser = /*@__PURE__*/javascriptLanguage.parser.configure({ top: \"SingleExpression\" });\nconst defaultNesting = [\n { tag: \"script\",\n attrs: attrs => attrs.type == \"text/typescript\" || attrs.lang == \"ts\",\n parser: typescriptLanguage.parser },\n { tag: \"script\",\n attrs: attrs => attrs.type == \"text/babel\" || attrs.type == \"text/jsx\",\n parser: jsxLanguage.parser },\n { tag: \"script\",\n attrs: attrs => attrs.type == \"text/typescript-jsx\",\n parser: tsxLanguage.parser },\n { tag: \"script\",\n attrs(attrs) {\n return /^(importmap|speculationrules|application\\/(.+\\+)?json)$/i.test(attrs.type);\n },\n parser: jsonParser },\n { tag: \"script\",\n attrs(attrs) {\n return !attrs.type || /^(?:text|application)\\/(?:x-)?(?:java|ecma)script$|^module$|^$/i.test(attrs.type);\n },\n parser: javascriptLanguage.parser },\n { tag: \"style\",\n attrs(attrs) {\n return (!attrs.lang || attrs.lang == \"css\") && (!attrs.type || /^(text\\/)?(x-)?(stylesheet|css)$/i.test(attrs.type));\n },\n parser: cssLanguage.parser }\n];\nconst defaultAttrs = /*@__PURE__*/[\n { name: \"style\",\n parser: /*@__PURE__*/cssLanguage.parser.configure({ top: \"Styles\" }) }\n].concat(/*@__PURE__*/eventAttributes.map(name => ({ name, parser: javascriptLanguage.parser })));\nconst htmlPlain = /*@__PURE__*/LRLanguage.define({\n name: \"html\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Element(context) {\n let after = /^(\\s*)(<\\/)?/.exec(context.textAfter);\n if (context.node.to <= context.pos + after[0].length)\n return context.continue();\n return context.lineIndent(context.node.from) + (after[2] ? 0 : context.unit);\n },\n \"OpenTag CloseTag SelfClosingTag\"(context) {\n return context.column(context.node.from) + context.unit;\n },\n Document(context) {\n if (context.pos + /\\s*/.exec(context.textAfter)[0].length < context.node.to)\n return context.continue();\n let endElt = null, close;\n for (let cur = context.node;;) {\n let last = cur.lastChild;\n if (!last || last.name != \"Element\" || last.to != cur.to)\n break;\n endElt = cur = last;\n }\n if (endElt && !((close = endElt.lastChild) && (close.name == \"CloseTag\" || close.name == \"SelfClosingTag\")))\n return context.lineIndent(endElt.from) + context.unit;\n return null;\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n Element(node) {\n let first = node.firstChild, last = node.lastChild;\n if (!first || first.name != \"OpenTag\")\n return null;\n return { from: first.to, to: last.name == \"CloseTag\" ? last.from : node.to };\n }\n }),\n /*@__PURE__*/bracketMatchingHandle.add({\n \"OpenTag CloseTag\": node => node.getChild(\"TagName\")\n })\n ]\n }),\n languageData: {\n commentTokens: { block: { open: \"<!--\", close: \"-->\" } },\n indentOnInput: /^\\s*<\\/\\w+\\W$/,\n wordChars: \"-_\"\n }\n});\n/**\nA language provider based on the [Lezer HTML\nparser](https://github.com/lezer-parser/html), extended with the\nJavaScript and CSS parsers to parse the content of `<script>` and\n`<style>` tags.\n*/\nconst htmlLanguage = /*@__PURE__*/htmlPlain.configure({\n wrap: /*@__PURE__*/configureNesting(defaultNesting, defaultAttrs)\n});\n/**\nLanguage support for HTML, including\n[`htmlCompletion`](https://codemirror.net/6/docs/ref/#lang-html.htmlCompletion) and JavaScript and\nCSS support extensions.\n*/\nfunction html(config = {}) {\n let dialect = \"\", wrap;\n if (config.matchClosingTags === false)\n dialect = \"noMatch\";\n if (config.selfClosingTags === true)\n dialect = (dialect ? dialect + \" \" : \"\") + \"selfClosing\";\n if (config.nestedLanguages && config.nestedLanguages.length ||\n config.nestedAttributes && config.nestedAttributes.length)\n wrap = configureNesting((config.nestedLanguages || []).concat(defaultNesting), (config.nestedAttributes || []).concat(defaultAttrs));\n let lang = wrap ? htmlPlain.configure({ wrap, dialect }) : dialect ? htmlLanguage.configure({ dialect }) : htmlLanguage;\n return new LanguageSupport(lang, [\n htmlLanguage.data.of({ autocomplete: htmlCompletionSourceWith(config) }),\n config.autoCloseTags !== false ? autoCloseTags : [],\n javascript().support,\n css().support\n ]);\n}\nconst selfClosers = /*@__PURE__*/new Set(/*@__PURE__*/\"area base br col command embed frame hr img input keygen link meta param source track wbr menuitem\".split(\" \"));\n/**\nExtension that will automatically insert close tags when a `>` or\n`/` is typed.\n*/\nconst autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text, insertTransaction) => {\n if (view.composing || view.state.readOnly || from != to || (text != \">\" && text != \"/\") ||\n !htmlLanguage.isActiveAt(view.state, from, -1))\n return false;\n let base = insertTransaction(), { state } = base;\n let closeTags = state.changeByRange(range => {\n var _a, _b, _c;\n let didType = state.doc.sliceString(range.from - 1, range.to) == text;\n let { head } = range, after = syntaxTree(state).resolveInner(head, -1), name;\n if (didType && text == \">\" && after.name == \"EndTag\") {\n let tag = after.parent;\n if (((_b = (_a = tag.parent) === null || _a === void 0 ? void 0 : _a.lastChild) === null || _b === void 0 ? void 0 : _b.name) != \"CloseTag\" &&\n (name = elementName(state.doc, tag.parent, head)) &&\n !selfClosers.has(name)) {\n let to = head + (state.doc.sliceString(head, head + 1) === \">\" ? 1 : 0);\n let insert = `</${name}>`;\n return { range, changes: { from: head, to, insert } };\n }\n }\n else if (didType && text == \"/\" && after.name == \"IncompleteCloseTag\") {\n let tag = after.parent;\n if (after.from == head - 2 && ((_c = tag.lastChild) === null || _c === void 0 ? void 0 : _c.name) != \"CloseTag\" &&\n (name = elementName(state.doc, tag, head)) && !selfClosers.has(name)) {\n let to = head + (state.doc.sliceString(head, head + 1) === \">\" ? 1 : 0);\n let insert = `${name}>`;\n return {\n range: EditorSelection.cursor(head + insert.length, -1),\n changes: { from: head, to, insert }\n };\n }\n }\n return { range };\n });\n if (closeTags.changes.empty)\n return false;\n view.dispatch([\n base,\n state.update(closeTags, {\n userEvent: \"input.complete\",\n scrollIntoView: true\n })\n ]);\n return true;\n});\n\nexport { autoCloseTags, html, htmlCompletionSource, htmlCompletionSourceWith, htmlLanguage };\n","import { LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\nconst jsonHighlighting = styleTags({\n String: tags.string,\n Number: tags.number,\n \"True False\": tags.bool,\n PropertyName: tags.propertyName,\n Null: tags.null,\n \", :\": tags.separator,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l\",\n stateData: \"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O\",\n goto: \"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R\",\n nodeNames: \"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array\",\n maxTerm: 25,\n nodeProps: [\n [\"isolate\", -2,6,11,\"\"],\n [\"openedBy\", 7,\"{\",14,\"[\"],\n [\"closedBy\", 8,\"}\",15,\"]\"]\n ],\n propSources: [jsonHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 2,\n tokenData: \"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~\",\n tokenizers: [0],\n topRules: {\"JsonText\":[0,1]},\n tokenPrec: 0\n});\n\nexport { parser };\n","import { parser } from '@lezer/json';\nimport { LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nCalls\n[`JSON.parse`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)\non the document and, if that throws an error, reports it as a\nsingle diagnostic.\n*/\nconst jsonParseLinter = () => (view) => {\n try {\n JSON.parse(view.state.doc.toString());\n }\n catch (e) {\n if (!(e instanceof SyntaxError))\n throw e;\n const pos = getErrorPosition(e, view.state.doc);\n return [{\n from: pos,\n message: e.message,\n severity: 'error',\n to: pos\n }];\n }\n return [];\n};\nfunction getErrorPosition(error, doc) {\n let m;\n if (m = error.message.match(/at position (\\d+)/))\n return Math.min(+m[1], doc.length);\n if (m = error.message.match(/at line (\\d+) column (\\d+)/))\n return Math.min(doc.line(+m[1]).from + (+m[2]) - 1, doc.length);\n return 0;\n}\n\n/**\nA language provider that provides JSON parsing.\n*/\nconst jsonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"json\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Object: /*@__PURE__*/continuedIndent({ except: /^\\s*\\}/ }),\n Array: /*@__PURE__*/continuedIndent({ except: /^\\s*\\]/ })\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Object Array\": foldInside\n })\n ]\n }),\n languageData: {\n closeBrackets: { brackets: [\"[\", \"{\", '\"'] },\n indentOnInput: /^\\s*[\\}\\]]$/\n }\n});\n/**\nJSON language support.\n*/\nfunction json() {\n return new LanguageSupport(jsonLanguage);\n}\n\nexport { json, jsonLanguage, jsonParseLinter };\n","import { NodeType, NodeProp, NodeSet, Tree, Parser, parseMixed } from '@lezer/common';\nimport { styleTags, tags, Tag } from '@lezer/highlight';\n\nclass CompositeBlock {\n static create(type, value, from, parentHash, end) {\n let hash = (parentHash + (parentHash << 8) + type + (value << 4)) | 0;\n return new CompositeBlock(type, value, from, hash, end, [], []);\n }\n constructor(type, \n // Used for indentation in list items, markup character in lists\n value, from, hash, end, children, positions) {\n this.type = type;\n this.value = value;\n this.from = from;\n this.hash = hash;\n this.end = end;\n this.children = children;\n this.positions = positions;\n this.hashProp = [[NodeProp.contextHash, hash]];\n }\n addChild(child, pos) {\n if (child.prop(NodeProp.contextHash) != this.hash)\n child = new Tree(child.type, child.children, child.positions, child.length, this.hashProp);\n this.children.push(child);\n this.positions.push(pos);\n }\n toTree(nodeSet, end = this.end) {\n let last = this.children.length - 1;\n if (last >= 0)\n end = Math.max(end, this.positions[last] + this.children[last].length + this.from);\n return new Tree(nodeSet.types[this.type], this.children, this.positions, end - this.from).balance({\n makeTree: (children, positions, length) => new Tree(NodeType.none, children, positions, length, this.hashProp)\n });\n }\n}\nvar Type;\n(function (Type) {\n Type[Type[\"Document\"] = 1] = \"Document\";\n Type[Type[\"CodeBlock\"] = 2] = \"CodeBlock\";\n Type[Type[\"FencedCode\"] = 3] = \"FencedCode\";\n Type[Type[\"Blockquote\"] = 4] = \"Blockquote\";\n Type[Type[\"HorizontalRule\"] = 5] = \"HorizontalRule\";\n Type[Type[\"BulletList\"] = 6] = \"BulletList\";\n Type[Type[\"OrderedList\"] = 7] = \"OrderedList\";\n Type[Type[\"ListItem\"] = 8] = \"ListItem\";\n Type[Type[\"ATXHeading1\"] = 9] = \"ATXHeading1\";\n Type[Type[\"ATXHeading2\"] = 10] = \"ATXHeading2\";\n Type[Type[\"ATXHeading3\"] = 11] = \"ATXHeading3\";\n Type[Type[\"ATXHeading4\"] = 12] = \"ATXHeading4\";\n Type[Type[\"ATXHeading5\"] = 13] = \"ATXHeading5\";\n Type[Type[\"ATXHeading6\"] = 14] = \"ATXHeading6\";\n Type[Type[\"SetextHeading1\"] = 15] = \"SetextHeading1\";\n Type[Type[\"SetextHeading2\"] = 16] = \"SetextHeading2\";\n Type[Type[\"HTMLBlock\"] = 17] = \"HTMLBlock\";\n Type[Type[\"LinkReference\"] = 18] = \"LinkReference\";\n Type[Type[\"Paragraph\"] = 19] = \"Paragraph\";\n Type[Type[\"CommentBlock\"] = 20] = \"CommentBlock\";\n Type[Type[\"ProcessingInstructionBlock\"] = 21] = \"ProcessingInstructionBlock\";\n // Inline\n Type[Type[\"Escape\"] = 22] = \"Escape\";\n Type[Type[\"Entity\"] = 23] = \"Entity\";\n Type[Type[\"HardBreak\"] = 24] = \"HardBreak\";\n Type[Type[\"Emphasis\"] = 25] = \"Emphasis\";\n Type[Type[\"StrongEmphasis\"] = 26] = \"StrongEmphasis\";\n Type[Type[\"Link\"] = 27] = \"Link\";\n Type[Type[\"Image\"] = 28] = \"Image\";\n Type[Type[\"InlineCode\"] = 29] = \"InlineCode\";\n Type[Type[\"HTMLTag\"] = 30] = \"HTMLTag\";\n Type[Type[\"Comment\"] = 31] = \"Comment\";\n Type[Type[\"ProcessingInstruction\"] = 32] = \"ProcessingInstruction\";\n Type[Type[\"Autolink\"] = 33] = \"Autolink\";\n // Smaller tokens\n Type[Type[\"HeaderMark\"] = 34] = \"HeaderMark\";\n Type[Type[\"QuoteMark\"] = 35] = \"QuoteMark\";\n Type[Type[\"ListMark\"] = 36] = \"ListMark\";\n Type[Type[\"LinkMark\"] = 37] = \"LinkMark\";\n Type[Type[\"EmphasisMark\"] = 38] = \"EmphasisMark\";\n Type[Type[\"CodeMark\"] = 39] = \"CodeMark\";\n Type[Type[\"CodeText\"] = 40] = \"CodeText\";\n Type[Type[\"CodeInfo\"] = 41] = \"CodeInfo\";\n Type[Type[\"LinkTitle\"] = 42] = \"LinkTitle\";\n Type[Type[\"LinkLabel\"] = 43] = \"LinkLabel\";\n Type[Type[\"URL\"] = 44] = \"URL\";\n})(Type || (Type = {}));\n/**\nData structure used to accumulate a block's content during [leaf\nblock parsing](#BlockParser.leaf).\n*/\nclass LeafBlock {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the block.\n */\n start, \n /**\n The block's text content.\n */\n content) {\n this.start = start;\n this.content = content;\n /**\n @internal\n */\n this.marks = [];\n /**\n The block parsers active for this block.\n */\n this.parsers = [];\n }\n}\n/**\nData structure used during block-level per-line parsing.\n*/\nclass Line {\n constructor() {\n /**\n The line's full text.\n */\n this.text = \"\";\n /**\n The base indent provided by the composite contexts (that have\n been handled so far).\n */\n this.baseIndent = 0;\n /**\n The string position corresponding to the base indent.\n */\n this.basePos = 0;\n /**\n The number of contexts handled @internal\n */\n this.depth = 0;\n /**\n Any markers (i.e. block quote markers) parsed for the contexts. @internal\n */\n this.markers = [];\n /**\n The position of the next non-whitespace character beyond any\n list, blockquote, or other composite block markers.\n */\n this.pos = 0;\n /**\n The column of the next non-whitespace character.\n */\n this.indent = 0;\n /**\n The character code of the character after `pos`.\n */\n this.next = -1;\n }\n /**\n @internal\n */\n forward() {\n if (this.basePos > this.pos)\n this.forwardInner();\n }\n /**\n @internal\n */\n forwardInner() {\n let newPos = this.skipSpace(this.basePos);\n this.indent = this.countIndent(newPos, this.pos, this.indent);\n this.pos = newPos;\n this.next = newPos == this.text.length ? -1 : this.text.charCodeAt(newPos);\n }\n /**\n Skip whitespace after the given position, return the position of\n the next non-space character or the end of the line if there's\n only space after `from`.\n */\n skipSpace(from) { return skipSpace(this.text, from); }\n /**\n @internal\n */\n reset(text) {\n this.text = text;\n this.baseIndent = this.basePos = this.pos = this.indent = 0;\n this.forwardInner();\n this.depth = 1;\n while (this.markers.length)\n this.markers.pop();\n }\n /**\n Move the line's base position forward to the given position.\n This should only be called by composite [block\n parsers](#BlockParser.parse) or [markup skipping\n functions](#NodeSpec.composite).\n */\n moveBase(to) {\n this.basePos = to;\n this.baseIndent = this.countIndent(to, this.pos, this.indent);\n }\n /**\n Move the line's base position forward to the given _column_.\n */\n moveBaseColumn(indent) {\n this.baseIndent = indent;\n this.basePos = this.findColumn(indent);\n }\n /**\n Store a composite-block-level marker. Should be called from\n [markup skipping functions](#NodeSpec.composite) when they\n consume any non-whitespace characters.\n */\n addMarker(elt) {\n this.markers.push(elt);\n }\n /**\n Find the column position at `to`, optionally starting at a given\n position and column.\n */\n countIndent(to, from = 0, indent = 0) {\n for (let i = from; i < to; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return indent;\n }\n /**\n Find the position corresponding to the given column.\n */\n findColumn(goal) {\n let i = 0;\n for (let indent = 0; i < this.text.length && indent < goal; i++)\n indent += this.text.charCodeAt(i) == 9 ? 4 - indent % 4 : 1;\n return i;\n }\n /**\n @internal\n */\n scrub() {\n if (!this.baseIndent)\n return this.text;\n let result = \"\";\n for (let i = 0; i < this.basePos; i++)\n result += \" \";\n return result + this.text.slice(this.basePos);\n }\n}\nfunction skipForList(bl, cx, line) {\n if (line.pos == line.text.length ||\n (bl != cx.block && line.indent >= cx.stack[line.depth + 1].value + line.baseIndent))\n return true;\n if (line.indent >= line.baseIndent + 4)\n return false;\n let size = (bl.type == Type.OrderedList ? isOrderedList : isBulletList)(line, cx, false);\n return size > 0 &&\n (bl.type != Type.BulletList || isHorizontalRule(line, cx, false) < 0) &&\n line.text.charCodeAt(line.pos + size - 1) == bl.value;\n}\nconst DefaultSkipMarkup = {\n [Type.Blockquote](bl, cx, line) {\n if (line.next != 62 /* '>' */)\n return false;\n line.markers.push(elt(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1));\n line.moveBase(line.pos + (space(line.text.charCodeAt(line.pos + 1)) ? 2 : 1));\n bl.end = cx.lineStart + line.text.length;\n return true;\n },\n [Type.ListItem](bl, _cx, line) {\n if (line.indent < line.baseIndent + bl.value && line.next > -1)\n return false;\n line.moveBaseColumn(line.baseIndent + bl.value);\n return true;\n },\n [Type.OrderedList]: skipForList,\n [Type.BulletList]: skipForList,\n [Type.Document]() { return true; }\n};\nfunction space(ch) { return ch == 32 || ch == 9 || ch == 10 || ch == 13; }\nfunction skipSpace(line, i = 0) {\n while (i < line.length && space(line.charCodeAt(i)))\n i++;\n return i;\n}\nfunction skipSpaceBack(line, i, to) {\n while (i > to && space(line.charCodeAt(i - 1)))\n i--;\n return i;\n}\nfunction isFencedCode(line) {\n if (line.next != 96 && line.next != 126 /* '`~' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n if (pos < line.pos + 3)\n return -1;\n if (line.next == 96)\n for (let i = pos; i < line.text.length; i++)\n if (line.text.charCodeAt(i) == 96)\n return -1;\n return pos;\n}\nfunction isBlockquote(line) {\n return line.next != 62 /* '>' */ ? -1 : line.text.charCodeAt(line.pos + 1) == 32 ? 2 : 1;\n}\nfunction isHorizontalRule(line, cx, breaking) {\n if (line.next != 42 && line.next != 45 && line.next != 95 /* '_-*' */)\n return -1;\n let count = 1;\n for (let pos = line.pos + 1; pos < line.text.length; pos++) {\n let ch = line.text.charCodeAt(pos);\n if (ch == line.next)\n count++;\n else if (!space(ch))\n return -1;\n }\n // Setext headers take precedence\n if (breaking && line.next == 45 && isSetextUnderline(line) > -1 && line.depth == cx.stack.length &&\n cx.parser.leafBlockParsers.indexOf(DefaultLeafBlocks.SetextHeading) > -1)\n return -1;\n return count < 3 ? -1 : 1;\n}\nfunction inList(cx, type) {\n for (let i = cx.stack.length - 1; i >= 0; i--)\n if (cx.stack[i].type == type)\n return true;\n return false;\n}\nfunction isBulletList(line, cx, breaking) {\n return (line.next == 45 || line.next == 43 || line.next == 42 /* '-+*' */) &&\n (line.pos == line.text.length - 1 || space(line.text.charCodeAt(line.pos + 1))) &&\n (!breaking || inList(cx, Type.BulletList) || line.skipSpace(line.pos + 2) < line.text.length) ? 1 : -1;\n}\nfunction isOrderedList(line, cx, breaking) {\n let pos = line.pos, next = line.next;\n for (;;) {\n if (next >= 48 && next <= 57 /* '0-9' */)\n pos++;\n else\n break;\n if (pos == line.text.length)\n return -1;\n next = line.text.charCodeAt(pos);\n }\n if (pos == line.pos || pos > line.pos + 9 ||\n (next != 46 && next != 41 /* '.)' */) ||\n (pos < line.text.length - 1 && !space(line.text.charCodeAt(pos + 1))) ||\n breaking && !inList(cx, Type.OrderedList) &&\n (line.skipSpace(pos + 1) == line.text.length || pos > line.pos + 1 || line.next != 49 /* '1' */))\n return -1;\n return pos + 1 - line.pos;\n}\nfunction isAtxHeading(line) {\n if (line.next != 35 /* '#' */)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == 35)\n pos++;\n if (pos < line.text.length && line.text.charCodeAt(pos) != 32)\n return -1;\n let size = pos - line.pos;\n return size > 6 ? -1 : size;\n}\nfunction isSetextUnderline(line) {\n if (line.next != 45 && line.next != 61 /* '-=' */ || line.indent >= line.baseIndent + 4)\n return -1;\n let pos = line.pos + 1;\n while (pos < line.text.length && line.text.charCodeAt(pos) == line.next)\n pos++;\n let end = pos;\n while (pos < line.text.length && space(line.text.charCodeAt(pos)))\n pos++;\n return pos == line.text.length ? end : -1;\n}\nconst EmptyLine = /^[ \\t]*$/, CommentEnd = /-->/, ProcessingEnd = /\\?>/;\nconst HTMLBlockStyle = [\n [/^<(?:script|pre|style)(?:\\s|>|$)/i, /<\\/(?:script|pre|style)>/i],\n [/^\\s*<!--/, CommentEnd],\n [/^\\s*<\\?/, ProcessingEnd],\n [/^\\s*<![A-Z]/, />/],\n [/^\\s*<!\\[CDATA\\[/, /\\]\\]>/],\n [/^\\s*<\\/?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|\\/?>|$)/i, EmptyLine],\n [/^\\s*(?:<\\/[a-z][\\w-]*\\s*>|<[a-z][\\w-]*(\\s+[a-z:_][\\w-.]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*>)\\s*$/i, EmptyLine]\n];\nfunction isHTMLBlock(line, _cx, breaking) {\n if (line.next != 60 /* '<' */)\n return -1;\n let rest = line.text.slice(line.pos);\n for (let i = 0, e = HTMLBlockStyle.length - (breaking ? 1 : 0); i < e; i++)\n if (HTMLBlockStyle[i][0].test(rest))\n return i;\n return -1;\n}\nfunction getListIndent(line, pos) {\n let indentAfter = line.countIndent(pos, line.pos, line.indent);\n let indented = line.countIndent(line.skipSpace(pos), pos, indentAfter);\n return indented >= indentAfter + 5 ? indentAfter + 1 : indented;\n}\nfunction addCodeText(marks, from, to) {\n let last = marks.length - 1;\n if (last >= 0 && marks[last].to == from && marks[last].type == Type.CodeText)\n marks[last].to = to;\n else\n marks.push(elt(Type.CodeText, from, to));\n}\n// Rules for parsing blocks. A return value of false means the rule\n// doesn't apply here, true means it does. When true is returned and\n// `p.line` has been updated, the rule is assumed to have consumed a\n// leaf block. Otherwise, it is assumed to have opened a context.\nconst DefaultBlockParsers = {\n LinkReference: undefined,\n IndentedCode(cx, line) {\n let base = line.baseIndent + 4;\n if (line.indent < base)\n return false;\n let start = line.findColumn(base);\n let from = cx.lineStart + start, to = cx.lineStart + line.text.length;\n let marks = [], pendingMarks = [];\n addCodeText(marks, from, to);\n while (cx.nextLine() && line.depth >= cx.stack.length) {\n if (line.pos == line.text.length) { // Empty\n addCodeText(pendingMarks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n pendingMarks.push(m);\n }\n else if (line.indent < base) {\n break;\n }\n else {\n if (pendingMarks.length) {\n for (let m of pendingMarks) {\n if (m.type == Type.CodeText)\n addCodeText(marks, m.from, m.to);\n else\n marks.push(m);\n }\n pendingMarks = [];\n }\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n for (let m of line.markers)\n marks.push(m);\n to = cx.lineStart + line.text.length;\n let codeStart = cx.lineStart + line.findColumn(line.baseIndent + 4);\n if (codeStart < to)\n addCodeText(marks, codeStart, to);\n }\n }\n if (pendingMarks.length) {\n pendingMarks = pendingMarks.filter(m => m.type != Type.CodeText);\n if (pendingMarks.length)\n line.markers = pendingMarks.concat(line.markers);\n }\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(Type.CodeBlock, to - from), from);\n return true;\n },\n FencedCode(cx, line) {\n let fenceEnd = isFencedCode(line);\n if (fenceEnd < 0)\n return false;\n let from = cx.lineStart + line.pos, ch = line.next, len = fenceEnd - line.pos;\n let infoFrom = line.skipSpace(fenceEnd), infoTo = skipSpaceBack(line.text, line.text.length, infoFrom);\n let marks = [elt(Type.CodeMark, from, from + len)];\n if (infoFrom < infoTo)\n marks.push(elt(Type.CodeInfo, cx.lineStart + infoFrom, cx.lineStart + infoTo));\n for (let first = true, empty = true, hasLine = false; cx.nextLine() && line.depth >= cx.stack.length; first = false) {\n let i = line.pos;\n if (line.indent - line.baseIndent < 4)\n while (i < line.text.length && line.text.charCodeAt(i) == ch)\n i++;\n if (i - line.pos >= len && line.skipSpace(i) == line.text.length) {\n for (let m of line.markers)\n marks.push(m);\n if (empty && hasLine)\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n marks.push(elt(Type.CodeMark, cx.lineStart + line.pos, cx.lineStart + i));\n cx.nextLine();\n break;\n }\n else {\n hasLine = true;\n if (!first) {\n addCodeText(marks, cx.lineStart - 1, cx.lineStart);\n empty = false;\n }\n for (let m of line.markers)\n marks.push(m);\n let textStart = cx.lineStart + line.basePos, textEnd = cx.lineStart + line.text.length;\n if (textStart < textEnd) {\n addCodeText(marks, textStart, textEnd);\n empty = false;\n }\n }\n }\n cx.addNode(cx.buffer.writeElements(marks, -from)\n .finish(Type.FencedCode, cx.prevLineEnd() - from), from);\n return true;\n },\n Blockquote(cx, line) {\n let size = isBlockquote(line);\n if (size < 0)\n return false;\n cx.startContext(Type.Blockquote, line.pos);\n cx.addNode(Type.QuoteMark, cx.lineStart + line.pos, cx.lineStart + line.pos + 1);\n line.moveBase(line.pos + size);\n return null;\n },\n HorizontalRule(cx, line) {\n if (isHorizontalRule(line, cx, false) < 0)\n return false;\n let from = cx.lineStart + line.pos;\n cx.nextLine();\n cx.addNode(Type.HorizontalRule, from);\n return true;\n },\n BulletList(cx, line) {\n let size = isBulletList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.BulletList)\n cx.startContext(Type.BulletList, line.basePos, line.next);\n let newBase = getListIndent(line, line.pos + 1);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n OrderedList(cx, line) {\n let size = isOrderedList(line, cx, false);\n if (size < 0)\n return false;\n if (cx.block.type != Type.OrderedList)\n cx.startContext(Type.OrderedList, line.basePos, line.text.charCodeAt(line.pos + size - 1));\n let newBase = getListIndent(line, line.pos + size);\n cx.startContext(Type.ListItem, line.basePos, newBase - line.baseIndent);\n cx.addNode(Type.ListMark, cx.lineStart + line.pos, cx.lineStart + line.pos + size);\n line.moveBaseColumn(newBase);\n return null;\n },\n ATXHeading(cx, line) {\n let size = isAtxHeading(line);\n if (size < 0)\n return false;\n let off = line.pos, from = cx.lineStart + off;\n let endOfSpace = skipSpaceBack(line.text, line.text.length, off), after = endOfSpace;\n while (after > off && line.text.charCodeAt(after - 1) == line.next)\n after--;\n if (after == endOfSpace || after == off || !space(line.text.charCodeAt(after - 1)))\n after = line.text.length;\n let buf = cx.buffer\n .write(Type.HeaderMark, 0, size)\n .writeElements(cx.parser.parseInline(line.text.slice(off + size + 1, after), from + size + 1), -from);\n if (after < line.text.length)\n buf.write(Type.HeaderMark, after - off, endOfSpace - off);\n let node = buf.finish(Type.ATXHeading1 - 1 + size, line.text.length - off);\n cx.nextLine();\n cx.addNode(node, from);\n return true;\n },\n HTMLBlock(cx, line) {\n let type = isHTMLBlock(line, cx, false);\n if (type < 0)\n return false;\n let from = cx.lineStart + line.pos, end = HTMLBlockStyle[type][1];\n let marks = [], trailing = end != EmptyLine;\n while (!end.test(line.text) && cx.nextLine()) {\n if (line.depth < cx.stack.length) {\n trailing = false;\n break;\n }\n for (let m of line.markers)\n marks.push(m);\n }\n if (trailing)\n cx.nextLine();\n let nodeType = end == CommentEnd ? Type.CommentBlock : end == ProcessingEnd ? Type.ProcessingInstructionBlock : Type.HTMLBlock;\n let to = cx.prevLineEnd();\n cx.addNode(cx.buffer.writeElements(marks, -from).finish(nodeType, to - from), from);\n return true;\n },\n SetextHeading: undefined // Specifies relative precedence for block-continue function\n};\n// This implements a state machine that incrementally parses link references. At each\n// next line, it looks ahead to see if the line continues the reference or not. If it\n// doesn't and a valid link is available ending before that line, it finishes that.\n// Similarly, on `finish` (when the leaf is terminated by external circumstances), it\n// creates a link reference if there's a valid reference up to the current point.\nclass LinkReferenceParser {\n constructor(leaf) {\n this.stage = 0 /* RefStage.Start */;\n this.elts = [];\n this.pos = 0;\n this.start = leaf.start;\n this.advance(leaf.content);\n }\n nextLine(cx, line, leaf) {\n if (this.stage == -1 /* RefStage.Failed */)\n return false;\n let content = leaf.content + \"\\n\" + line.scrub();\n let finish = this.advance(content);\n if (finish > -1 && finish < content.length)\n return this.complete(cx, leaf, finish);\n return false;\n }\n finish(cx, leaf) {\n if ((this.stage == 2 /* RefStage.Link */ || this.stage == 3 /* RefStage.Title */) && skipSpace(leaf.content, this.pos) == leaf.content.length)\n return this.complete(cx, leaf, leaf.content.length);\n return false;\n }\n complete(cx, leaf, len) {\n cx.addLeafElement(leaf, elt(Type.LinkReference, this.start, this.start + len, this.elts));\n return true;\n }\n nextStage(elt) {\n if (elt) {\n this.pos = elt.to - this.start;\n this.elts.push(elt);\n this.stage++;\n return true;\n }\n if (elt === false)\n this.stage = -1 /* RefStage.Failed */;\n return false;\n }\n advance(content) {\n for (;;) {\n if (this.stage == -1 /* RefStage.Failed */) {\n return -1;\n }\n else if (this.stage == 0 /* RefStage.Start */) {\n if (!this.nextStage(parseLinkLabel(content, this.pos, this.start, true)))\n return -1;\n if (content.charCodeAt(this.pos) != 58 /* ':' */)\n return this.stage = -1 /* RefStage.Failed */;\n this.elts.push(elt(Type.LinkMark, this.pos + this.start, this.pos + this.start + 1));\n this.pos++;\n }\n else if (this.stage == 1 /* RefStage.Label */) {\n if (!this.nextStage(parseURL(content, skipSpace(content, this.pos), this.start)))\n return -1;\n }\n else if (this.stage == 2 /* RefStage.Link */) {\n let skip = skipSpace(content, this.pos), end = 0;\n if (skip > this.pos) {\n let title = parseLinkTitle(content, skip, this.start);\n if (title) {\n let titleEnd = lineEnd(content, title.to - this.start);\n if (titleEnd > 0) {\n this.nextStage(title);\n end = titleEnd;\n }\n }\n }\n if (!end)\n end = lineEnd(content, this.pos);\n return end > 0 && end < content.length ? end : -1;\n }\n else { // RefStage.Title\n return lineEnd(content, this.pos);\n }\n }\n }\n}\nfunction lineEnd(text, pos) {\n for (; pos < text.length; pos++) {\n let next = text.charCodeAt(pos);\n if (next == 10)\n break;\n if (!space(next))\n return -1;\n }\n return pos;\n}\nclass SetextHeadingParser {\n nextLine(cx, line, leaf) {\n let underline = line.depth < cx.stack.length ? -1 : isSetextUnderline(line);\n let next = line.next;\n if (underline < 0)\n return false;\n let underlineMark = elt(Type.HeaderMark, cx.lineStart + line.pos, cx.lineStart + underline);\n cx.nextLine();\n cx.addLeafElement(leaf, elt(next == 61 ? Type.SetextHeading1 : Type.SetextHeading2, leaf.start, cx.prevLineEnd(), [\n ...cx.parser.parseInline(leaf.content, leaf.start),\n underlineMark\n ]));\n return true;\n }\n finish() {\n return false;\n }\n}\nconst DefaultLeafBlocks = {\n LinkReference(_, leaf) { return leaf.content.charCodeAt(0) == 91 /* '[' */ ? new LinkReferenceParser(leaf) : null; },\n SetextHeading() { return new SetextHeadingParser; }\n};\nconst DefaultEndLeaf = [\n (_, line) => isAtxHeading(line) >= 0,\n (_, line) => isFencedCode(line) >= 0,\n (_, line) => isBlockquote(line) >= 0,\n (p, line) => isBulletList(line, p, true) >= 0,\n (p, line) => isOrderedList(line, p, true) >= 0,\n (p, line) => isHorizontalRule(line, p, true) >= 0,\n (p, line) => isHTMLBlock(line, p, true) >= 0\n];\nconst scanLineResult = { text: \"\", end: 0 };\n/**\nBlock-level parsing functions get access to this context object.\n*/\nclass BlockContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser configuration used.\n */\n parser, \n /**\n @internal\n */\n input, fragments, \n /**\n @internal\n */\n ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.line = new Line();\n this.atEnd = false;\n /**\n For reused nodes on gaps, we can't directly put the original\n node into the tree, since that may be bigger than its parent.\n When this happens, we create a dummy tree that is replaced by\n the proper node in `injectGaps` @internal\n */\n this.reusePlaceholders = new Map;\n this.stoppedAt = null;\n /**\n The range index that absoluteLineStart points into @internal\n */\n this.rangeI = 0;\n this.to = ranges[ranges.length - 1].to;\n this.lineStart = this.absoluteLineStart = this.absoluteLineEnd = ranges[0].from;\n this.block = CompositeBlock.create(Type.Document, 0, this.lineStart, 0, 0);\n this.stack = [this.block];\n this.fragments = fragments.length ? new FragmentCursor(fragments, input) : null;\n this.readLine();\n }\n get parsedPos() {\n return this.absoluteLineStart;\n }\n advance() {\n if (this.stoppedAt != null && this.absoluteLineStart > this.stoppedAt)\n return this.finish();\n let { line } = this;\n for (;;) {\n for (let markI = 0;;) {\n let next = line.depth < this.stack.length ? this.stack[this.stack.length - 1] : null;\n while (markI < line.markers.length && (!next || line.markers[markI].from < next.end)) {\n let mark = line.markers[markI++];\n this.addNode(mark.type, mark.from, mark.to);\n }\n if (!next)\n break;\n this.finishContext();\n }\n if (line.pos < line.text.length)\n break;\n // Empty line\n if (!this.nextLine())\n return this.finish();\n }\n if (this.fragments && this.reuseFragment(line.basePos))\n return null;\n start: for (;;) {\n for (let type of this.parser.blockParsers)\n if (type) {\n let result = type(this, line);\n if (result != false) {\n if (result == true)\n return null;\n line.forward();\n continue start;\n }\n }\n break;\n }\n let leaf = new LeafBlock(this.lineStart + line.pos, line.text.slice(line.pos));\n for (let parse of this.parser.leafBlockParsers)\n if (parse) {\n let parser = parse(this, leaf);\n if (parser)\n leaf.parsers.push(parser);\n }\n lines: while (this.nextLine()) {\n if (line.pos == line.text.length)\n break;\n if (line.indent < line.baseIndent + 4) {\n for (let stop of this.parser.endLeafBlock)\n if (stop(this, line, leaf))\n break lines;\n }\n for (let parser of leaf.parsers)\n if (parser.nextLine(this, line, leaf))\n return null;\n leaf.content += \"\\n\" + line.scrub();\n for (let m of line.markers)\n leaf.marks.push(m);\n }\n this.finishLeaf(leaf);\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n reuseFragment(start) {\n if (!this.fragments.moveTo(this.absoluteLineStart + start, this.absoluteLineStart) ||\n !this.fragments.matches(this.block.hash))\n return false;\n let taken = this.fragments.takeNodes(this);\n if (!taken)\n return false;\n this.absoluteLineStart += taken;\n this.lineStart = toRelative(this.absoluteLineStart, this.ranges);\n this.moveRangeI();\n if (this.absoluteLineStart < this.to) {\n this.lineStart++;\n this.absoluteLineStart++;\n this.readLine();\n }\n else {\n this.atEnd = true;\n this.readLine();\n }\n return true;\n }\n /**\n The number of parent blocks surrounding the current block.\n */\n get depth() {\n return this.stack.length;\n }\n /**\n Get the type of the parent block at the given depth. When no\n depth is passed, return the type of the innermost parent.\n */\n parentType(depth = this.depth - 1) {\n return this.parser.nodeSet.types[this.stack[depth].type];\n }\n /**\n Move to the next input line. This should only be called by\n (non-composite) [block parsers](#BlockParser.parse) that consume\n the line directly, or leaf block parser\n [`nextLine`](#LeafBlockParser.nextLine) methods when they\n consume the current line (and return true).\n */\n nextLine() {\n this.lineStart += this.line.text.length;\n if (this.absoluteLineEnd >= this.to) {\n this.absoluteLineStart = this.absoluteLineEnd;\n this.atEnd = true;\n this.readLine();\n return false;\n }\n else {\n this.lineStart++;\n this.absoluteLineStart = this.absoluteLineEnd + 1;\n this.moveRangeI();\n this.readLine();\n return true;\n }\n }\n /**\n Retrieve the text of the line after the current one, without\n actually moving the context's current line forward.\n */\n peekLine() {\n return this.scanLine(this.absoluteLineEnd + 1).text;\n }\n moveRangeI() {\n while (this.rangeI < this.ranges.length - 1 && this.absoluteLineStart >= this.ranges[this.rangeI].to) {\n this.rangeI++;\n this.absoluteLineStart = Math.max(this.absoluteLineStart, this.ranges[this.rangeI].from);\n }\n }\n /**\n @internal\n Collect the text for the next line.\n */\n scanLine(start) {\n let r = scanLineResult;\n r.end = start;\n if (start >= this.to) {\n r.text = \"\";\n }\n else {\n r.text = this.lineChunkAt(start);\n r.end += r.text.length;\n if (this.ranges.length > 1) {\n let textOffset = this.absoluteLineStart, rangeI = this.rangeI;\n while (this.ranges[rangeI].to < r.end) {\n rangeI++;\n let nextFrom = this.ranges[rangeI].from;\n let after = this.lineChunkAt(nextFrom);\n r.end = nextFrom + after.length;\n r.text = r.text.slice(0, this.ranges[rangeI - 1].to - textOffset) + after;\n textOffset = r.end - r.text.length;\n }\n }\n }\n return r;\n }\n /**\n @internal\n Populate this.line with the content of the next line. Skip\n leading characters covered by composite blocks.\n */\n readLine() {\n let { line } = this, { text, end } = this.scanLine(this.absoluteLineStart);\n this.absoluteLineEnd = end;\n line.reset(text);\n for (; line.depth < this.stack.length; line.depth++) {\n let cx = this.stack[line.depth], handler = this.parser.skipContextMarkup[cx.type];\n if (!handler)\n throw new Error(\"Unhandled block context \" + Type[cx.type]);\n let marks = this.line.markers.length;\n if (!handler(cx, this, line)) {\n if (this.line.markers.length > marks)\n cx.end = this.line.markers[this.line.markers.length - 1].to;\n line.forward();\n break;\n }\n line.forward();\n }\n }\n lineChunkAt(pos) {\n let next = this.input.chunk(pos), text;\n if (!this.input.lineChunks) {\n let eol = next.indexOf(\"\\n\");\n text = eol < 0 ? next : next.slice(0, eol);\n }\n else {\n text = next == \"\\n\" ? \"\" : next;\n }\n return pos + text.length > this.to ? text.slice(0, this.to - pos) : text;\n }\n /**\n The end position of the previous line.\n */\n prevLineEnd() { return this.atEnd ? this.lineStart : this.lineStart - 1; }\n /**\n @internal\n */\n startContext(type, start, value = 0) {\n this.block = CompositeBlock.create(type, value, this.lineStart + start, this.block.hash, this.lineStart + this.line.text.length);\n this.stack.push(this.block);\n }\n /**\n Start a composite block. Should only be called from [block\n parser functions](#BlockParser.parse) that return null.\n */\n startComposite(type, start, value = 0) {\n this.startContext(this.parser.getNodeType(type), start, value);\n }\n /**\n @internal\n */\n addNode(block, from, to) {\n if (typeof block == \"number\")\n block = new Tree(this.parser.nodeSet.types[block], none, none, (to !== null && to !== void 0 ? to : this.prevLineEnd()) - from);\n this.block.addChild(block, from - this.block.from);\n }\n /**\n Add a block element. Can be called by [block\n parsers](#BlockParser.parse).\n */\n addElement(elt) {\n this.block.addChild(elt.toTree(this.parser.nodeSet), elt.from - this.block.from);\n }\n /**\n Add a block element from a [leaf parser](#LeafBlockParser). This\n makes sure any extra composite block markup (such as blockquote\n markers) inside the block are also added to the syntax tree.\n */\n addLeafElement(leaf, elt) {\n this.addNode(this.buffer\n .writeElements(injectMarks(elt.children, leaf.marks), -elt.from)\n .finish(elt.type, elt.to - elt.from), elt.from);\n }\n /**\n @internal\n */\n finishContext() {\n let cx = this.stack.pop();\n let top = this.stack[this.stack.length - 1];\n top.addChild(cx.toTree(this.parser.nodeSet), cx.from - top.from);\n this.block = top;\n }\n finish() {\n while (this.stack.length > 1)\n this.finishContext();\n return this.addGaps(this.block.toTree(this.parser.nodeSet, this.lineStart));\n }\n addGaps(tree) {\n return this.ranges.length > 1 ?\n injectGaps(this.ranges, 0, tree.topNode, this.ranges[0].from, this.reusePlaceholders) : tree;\n }\n /**\n @internal\n */\n finishLeaf(leaf) {\n for (let parser of leaf.parsers)\n if (parser.finish(this, leaf))\n return;\n let inline = injectMarks(this.parser.parseInline(leaf.content, leaf.start), leaf.marks);\n this.addNode(this.buffer\n .writeElements(inline, -leaf.start)\n .finish(Type.Paragraph, leaf.content.length), leaf.start);\n }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n /**\n @internal\n */\n get buffer() { return new Buffer(this.parser.nodeSet); }\n}\nfunction injectGaps(ranges, rangeI, tree, offset, dummies) {\n let rangeEnd = ranges[rangeI].to;\n let children = [], positions = [], start = tree.from + offset;\n function movePastNext(upto, inclusive) {\n while (inclusive ? upto >= rangeEnd : upto > rangeEnd) {\n let size = ranges[rangeI + 1].from - rangeEnd;\n offset += size;\n upto += size;\n rangeI++;\n rangeEnd = ranges[rangeI].to;\n }\n }\n for (let ch = tree.firstChild; ch; ch = ch.nextSibling) {\n movePastNext(ch.from + offset, true);\n let from = ch.from + offset, node, reuse = dummies.get(ch.tree);\n if (reuse) {\n node = reuse;\n }\n else if (ch.to + offset > rangeEnd) {\n node = injectGaps(ranges, rangeI, ch, offset, dummies);\n movePastNext(ch.to + offset, false);\n }\n else {\n node = ch.toTree();\n }\n children.push(node);\n positions.push(from - start);\n }\n movePastNext(tree.to + offset, false);\n return new Tree(tree.type, children, positions, tree.to + offset - start, tree.tree ? tree.tree.propValues : undefined);\n}\n/**\nA Markdown parser configuration.\n*/\nclass MarkdownParser extends Parser {\n /**\n @internal\n */\n constructor(\n /**\n The parser's syntax [node\n types](https://lezer.codemirror.net/docs/ref/#common.NodeSet).\n */\n nodeSet, \n /**\n @internal\n */\n blockParsers, \n /**\n @internal\n */\n leafBlockParsers, \n /**\n @internal\n */\n blockNames, \n /**\n @internal\n */\n endLeafBlock, \n /**\n @internal\n */\n skipContextMarkup, \n /**\n @internal\n */\n inlineParsers, \n /**\n @internal\n */\n inlineNames, \n /**\n @internal\n */\n wrappers) {\n super();\n this.nodeSet = nodeSet;\n this.blockParsers = blockParsers;\n this.leafBlockParsers = leafBlockParsers;\n this.blockNames = blockNames;\n this.endLeafBlock = endLeafBlock;\n this.skipContextMarkup = skipContextMarkup;\n this.inlineParsers = inlineParsers;\n this.inlineNames = inlineNames;\n this.wrappers = wrappers;\n /**\n @internal\n */\n this.nodeTypes = Object.create(null);\n for (let t of nodeSet.types)\n this.nodeTypes[t.name] = t.id;\n }\n createParse(input, fragments, ranges) {\n let parse = new BlockContext(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Reconfigure the parser.\n */\n configure(spec) {\n let config = resolveConfig(spec);\n if (!config)\n return this;\n let { nodeSet, skipContextMarkup } = this;\n let blockParsers = this.blockParsers.slice(), leafBlockParsers = this.leafBlockParsers.slice(), blockNames = this.blockNames.slice(), inlineParsers = this.inlineParsers.slice(), inlineNames = this.inlineNames.slice(), endLeafBlock = this.endLeafBlock.slice(), wrappers = this.wrappers;\n if (nonEmpty(config.defineNodes)) {\n skipContextMarkup = Object.assign({}, skipContextMarkup);\n let nodeTypes = nodeSet.types.slice(), styles;\n for (let s of config.defineNodes) {\n let { name, block, composite, style } = typeof s == \"string\" ? { name: s } : s;\n if (nodeTypes.some(t => t.name == name))\n continue;\n if (composite)\n skipContextMarkup[nodeTypes.length] =\n (bl, cx, line) => composite(cx, line, bl.value);\n let id = nodeTypes.length;\n let group = composite ? [\"Block\", \"BlockContext\"] : !block ? undefined\n : id >= Type.ATXHeading1 && id <= Type.SetextHeading2 ? [\"Block\", \"LeafBlock\", \"Heading\"] : [\"Block\", \"LeafBlock\"];\n nodeTypes.push(NodeType.define({\n id,\n name,\n props: group && [[NodeProp.group, group]]\n }));\n if (style) {\n if (!styles)\n styles = {};\n if (Array.isArray(style) || style instanceof Tag)\n styles[name] = style;\n else\n Object.assign(styles, style);\n }\n }\n nodeSet = new NodeSet(nodeTypes);\n if (styles)\n nodeSet = nodeSet.extend(styleTags(styles));\n }\n if (nonEmpty(config.props))\n nodeSet = nodeSet.extend(...config.props);\n if (nonEmpty(config.remove)) {\n for (let rm of config.remove) {\n let block = this.blockNames.indexOf(rm), inline = this.inlineNames.indexOf(rm);\n if (block > -1)\n blockParsers[block] = leafBlockParsers[block] = undefined;\n if (inline > -1)\n inlineParsers[inline] = undefined;\n }\n }\n if (nonEmpty(config.parseBlock)) {\n for (let spec of config.parseBlock) {\n let found = blockNames.indexOf(spec.name);\n if (found > -1) {\n blockParsers[found] = spec.parse;\n leafBlockParsers[found] = spec.leaf;\n }\n else {\n let pos = spec.before ? findName(blockNames, spec.before)\n : spec.after ? findName(blockNames, spec.after) + 1 : blockNames.length - 1;\n blockParsers.splice(pos, 0, spec.parse);\n leafBlockParsers.splice(pos, 0, spec.leaf);\n blockNames.splice(pos, 0, spec.name);\n }\n if (spec.endLeaf)\n endLeafBlock.push(spec.endLeaf);\n }\n }\n if (nonEmpty(config.parseInline)) {\n for (let spec of config.parseInline) {\n let found = inlineNames.indexOf(spec.name);\n if (found > -1) {\n inlineParsers[found] = spec.parse;\n }\n else {\n let pos = spec.before ? findName(inlineNames, spec.before)\n : spec.after ? findName(inlineNames, spec.after) + 1 : inlineNames.length - 1;\n inlineParsers.splice(pos, 0, spec.parse);\n inlineNames.splice(pos, 0, spec.name);\n }\n }\n }\n if (config.wrap)\n wrappers = wrappers.concat(config.wrap);\n return new MarkdownParser(nodeSet, blockParsers, leafBlockParsers, blockNames, endLeafBlock, skipContextMarkup, inlineParsers, inlineNames, wrappers);\n }\n /**\n @internal\n */\n getNodeType(name) {\n let found = this.nodeTypes[name];\n if (found == null)\n throw new RangeError(`Unknown node type '${name}'`);\n return found;\n }\n /**\n Parse the given piece of inline text at the given offset,\n returning an array of [`Element`](#Element) objects representing\n the inline content.\n */\n parseInline(text, offset) {\n let cx = new InlineContext(this, text, offset);\n outer: for (let pos = offset; pos < cx.end;) {\n let next = cx.char(pos);\n for (let token of this.inlineParsers)\n if (token) {\n let result = token(cx, next, pos);\n if (result >= 0) {\n pos = result;\n continue outer;\n }\n }\n pos++;\n }\n return cx.resolveMarkers(0);\n }\n}\nfunction nonEmpty(a) {\n return a != null && a.length > 0;\n}\nfunction resolveConfig(spec) {\n if (!Array.isArray(spec))\n return spec;\n if (spec.length == 0)\n return null;\n let conf = resolveConfig(spec[0]);\n if (spec.length == 1)\n return conf;\n let rest = resolveConfig(spec.slice(1));\n if (!rest || !conf)\n return conf || rest;\n let conc = (a, b) => (a || none).concat(b || none);\n let wrapA = conf.wrap, wrapB = rest.wrap;\n return {\n props: conc(conf.props, rest.props),\n defineNodes: conc(conf.defineNodes, rest.defineNodes),\n parseBlock: conc(conf.parseBlock, rest.parseBlock),\n parseInline: conc(conf.parseInline, rest.parseInline),\n remove: conc(conf.remove, rest.remove),\n wrap: !wrapA ? wrapB : !wrapB ? wrapA :\n (inner, input, fragments, ranges) => wrapA(wrapB(inner, input, fragments, ranges), input, fragments, ranges)\n };\n}\nfunction findName(names, name) {\n let found = names.indexOf(name);\n if (found < 0)\n throw new RangeError(`Position specified relative to unknown parser ${name}`);\n return found;\n}\nlet nodeTypes = [NodeType.none];\nfor (let i = 1, name; name = Type[i]; i++) {\n nodeTypes[i] = NodeType.define({\n id: i,\n name,\n props: i >= Type.Escape ? [] : [[NodeProp.group, i in DefaultSkipMarkup ? [\"Block\", \"BlockContext\"] : [\"Block\", \"LeafBlock\"]]],\n top: name == \"Document\"\n });\n}\nconst none = [];\nclass Buffer {\n constructor(nodeSet) {\n this.nodeSet = nodeSet;\n this.content = [];\n this.nodes = [];\n }\n write(type, from, to, children = 0) {\n this.content.push(type, from, to, 4 + children * 4);\n return this;\n }\n writeElements(elts, offset = 0) {\n for (let e of elts)\n e.writeTo(this, offset);\n return this;\n }\n finish(type, length) {\n return Tree.build({\n buffer: this.content,\n nodeSet: this.nodeSet,\n reused: this.nodes,\n topID: type,\n length\n });\n }\n}\n/**\nElements are used to compose syntax nodes during parsing.\n*/\nclass Element {\n /**\n @internal\n */\n constructor(\n /**\n The node's\n [id](https://lezer.codemirror.net/docs/ref/#common.NodeType.id).\n */\n type, \n /**\n The start of the node, as an offset from the start of the document.\n */\n from, \n /**\n The end of the node.\n */\n to, \n /**\n The node's child nodes @internal\n */\n children = none) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.children = children;\n }\n /**\n @internal\n */\n writeTo(buf, offset) {\n let startOff = buf.content.length;\n buf.writeElements(this.children, offset);\n buf.content.push(this.type, this.from + offset, this.to + offset, buf.content.length + 4 - startOff);\n }\n /**\n @internal\n */\n toTree(nodeSet) {\n return new Buffer(nodeSet).writeElements(this.children, -this.from).finish(this.type, this.to - this.from);\n }\n}\nclass TreeElement {\n constructor(tree, from) {\n this.tree = tree;\n this.from = from;\n }\n get to() { return this.from + this.tree.length; }\n get type() { return this.tree.type.id; }\n get children() { return none; }\n writeTo(buf, offset) {\n buf.nodes.push(this.tree);\n buf.content.push(buf.nodes.length - 1, this.from + offset, this.to + offset, -1);\n }\n toTree() { return this.tree; }\n}\nfunction elt(type, from, to, children) {\n return new Element(type, from, to, children);\n}\nconst EmphasisUnderscore = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst EmphasisAsterisk = { resolve: \"Emphasis\", mark: \"EmphasisMark\" };\nconst LinkStart = {}, ImageStart = {};\nclass InlineDelimiter {\n constructor(type, from, to, side) {\n this.type = type;\n this.from = from;\n this.to = to;\n this.side = side;\n }\n}\nconst Escapable = \"!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\";\nlet Punctuation = /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~\\xA1\\u2010-\\u2027]/;\ntry {\n Punctuation = new RegExp(\"[\\\\p{S}|\\\\p{P}]\", \"u\");\n}\ncatch (_) { }\nconst DefaultInline = {\n Escape(cx, next, start) {\n if (next != 92 /* '\\\\' */ || start == cx.end - 1)\n return -1;\n let escaped = cx.char(start + 1);\n for (let i = 0; i < Escapable.length; i++)\n if (Escapable.charCodeAt(i) == escaped)\n return cx.append(elt(Type.Escape, start, start + 2));\n return -1;\n },\n Entity(cx, next, start) {\n if (next != 38 /* '&' */)\n return -1;\n let m = /^(?:#\\d+|#x[a-f\\d]+|\\w+);/i.exec(cx.slice(start + 1, start + 31));\n return m ? cx.append(elt(Type.Entity, start, start + 1 + m[0].length)) : -1;\n },\n InlineCode(cx, next, start) {\n if (next != 96 /* '`' */ || start && cx.char(start - 1) == 96)\n return -1;\n let pos = start + 1;\n while (pos < cx.end && cx.char(pos) == 96)\n pos++;\n let size = pos - start, curSize = 0;\n for (; pos < cx.end; pos++) {\n if (cx.char(pos) == 96) {\n curSize++;\n if (curSize == size && cx.char(pos + 1) != 96)\n return cx.append(elt(Type.InlineCode, start, pos + 1, [\n elt(Type.CodeMark, start, start + size),\n elt(Type.CodeMark, pos + 1 - size, pos + 1)\n ]));\n }\n else {\n curSize = 0;\n }\n }\n return -1;\n },\n HTMLTag(cx, next, start) {\n if (next != 60 /* '<' */ || start == cx.end - 1)\n return -1;\n let after = cx.slice(start + 1, cx.end);\n let url = /^(?:[a-z][-\\w+.]+:[^\\s>]+|[a-z\\d.!#$%&'*+/=?^_`{|}~-]+@[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?(?:\\.[a-z\\d](?:[a-z\\d-]{0,61}[a-z\\d])?)*)>/i.exec(after);\n if (url) {\n return cx.append(elt(Type.Autolink, start, start + 1 + url[0].length, [\n elt(Type.LinkMark, start, start + 1),\n // url[0] includes the closing bracket, so exclude it from this slice\n elt(Type.URL, start + 1, start + url[0].length),\n elt(Type.LinkMark, start + url[0].length, start + 1 + url[0].length)\n ]));\n }\n let comment = /^!--[^>](?:-[^-]|[^-])*?-->/i.exec(after);\n if (comment)\n return cx.append(elt(Type.Comment, start, start + 1 + comment[0].length));\n let procInst = /^\\?[^]*?\\?>/.exec(after);\n if (procInst)\n return cx.append(elt(Type.ProcessingInstruction, start, start + 1 + procInst[0].length));\n let m = /^(?:![A-Z][^]*?>|!\\[CDATA\\[[^]*?\\]\\]>|\\/\\s*[a-zA-Z][\\w-]*\\s*>|\\s*[a-zA-Z][\\w-]*(\\s+[a-zA-Z:_][\\w-.:]*(?:\\s*=\\s*(?:[^\\s\"'=<>`]+|'[^']*'|\"[^\"]*\"))?)*\\s*(\\/\\s*)?>)/.exec(after);\n if (!m)\n return -1;\n return cx.append(elt(Type.HTMLTag, start, start + 1 + m[0].length));\n },\n Emphasis(cx, next, start) {\n if (next != 95 && next != 42)\n return -1;\n let pos = start + 1;\n while (cx.char(pos) == next)\n pos++;\n let before = cx.slice(start - 1, start), after = cx.slice(pos, pos + 1);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let leftFlanking = !sAfter && (!pAfter || sBefore || pBefore);\n let rightFlanking = !sBefore && (!pBefore || sAfter || pAfter);\n let canOpen = leftFlanking && (next == 42 || !rightFlanking || pBefore);\n let canClose = rightFlanking && (next == 42 || !leftFlanking || pAfter);\n return cx.append(new InlineDelimiter(next == 95 ? EmphasisUnderscore : EmphasisAsterisk, start, pos, (canOpen ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (canClose ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n },\n HardBreak(cx, next, start) {\n if (next == 92 /* '\\\\' */ && cx.char(start + 1) == 10 /* '\\n' */)\n return cx.append(elt(Type.HardBreak, start, start + 2));\n if (next == 32) {\n let pos = start + 1;\n while (cx.char(pos) == 32)\n pos++;\n if (cx.char(pos) == 10 && pos >= start + 2)\n return cx.append(elt(Type.HardBreak, start, pos + 1));\n }\n return -1;\n },\n Link(cx, next, start) {\n return next == 91 /* '[' */ ? cx.append(new InlineDelimiter(LinkStart, start, start + 1, 1 /* Mark.Open */)) : -1;\n },\n Image(cx, next, start) {\n return next == 33 /* '!' */ && cx.char(start + 1) == 91 /* '[' */\n ? cx.append(new InlineDelimiter(ImageStart, start, start + 2, 1 /* Mark.Open */)) : -1;\n },\n LinkEnd(cx, next, start) {\n if (next != 93 /* ']' */)\n return -1;\n // Scanning back to the next link/image start marker\n for (let i = cx.parts.length - 1; i >= 0; i--) {\n let part = cx.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart)) {\n // If this one has been set invalid (because it would produce\n // a nested link) or there's no valid link here ignore both.\n if (!part.side || cx.skipSpace(part.to) == start && !/[(\\[]/.test(cx.slice(start + 1, start + 2))) {\n cx.parts[i] = null;\n return -1;\n }\n // Finish the content and replace the entire range in\n // this.parts with the link/image node.\n let content = cx.takeContent(i);\n let link = cx.parts[i] = finishLink(cx, content, part.type == LinkStart ? Type.Link : Type.Image, part.from, start + 1);\n // Set any open-link markers before this link to invalid.\n if (part.type == LinkStart)\n for (let j = 0; j < i; j++) {\n let p = cx.parts[j];\n if (p instanceof InlineDelimiter && p.type == LinkStart)\n p.side = 0 /* Mark.None */;\n }\n return link.to;\n }\n }\n return -1;\n }\n};\nfunction finishLink(cx, content, type, start, startPos) {\n let { text } = cx, next = cx.char(startPos), endPos = startPos;\n content.unshift(elt(Type.LinkMark, start, start + (type == Type.Image ? 2 : 1)));\n content.push(elt(Type.LinkMark, startPos - 1, startPos));\n if (next == 40 /* '(' */) {\n let pos = cx.skipSpace(startPos + 1);\n let dest = parseURL(text, pos - cx.offset, cx.offset), title;\n if (dest) {\n pos = cx.skipSpace(dest.to);\n // The destination and title must be separated by whitespace\n if (pos != dest.to) {\n title = parseLinkTitle(text, pos - cx.offset, cx.offset);\n if (title)\n pos = cx.skipSpace(title.to);\n }\n }\n if (cx.char(pos) == 41 /* ')' */) {\n content.push(elt(Type.LinkMark, startPos, startPos + 1));\n endPos = pos + 1;\n if (dest)\n content.push(dest);\n if (title)\n content.push(title);\n content.push(elt(Type.LinkMark, pos, endPos));\n }\n }\n else if (next == 91 /* '[' */) {\n let label = parseLinkLabel(text, startPos - cx.offset, cx.offset, false);\n if (label) {\n content.push(label);\n endPos = label.to;\n }\n }\n return elt(type, start, endPos, content);\n}\n// These return `null` when falling off the end of the input, `false`\n// when parsing fails otherwise (for use in the incremental link\n// reference parser).\nfunction parseURL(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next == 60 /* '<' */) {\n for (let pos = start + 1; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (ch == 62 /* '>' */)\n return elt(Type.URL, start + offset, pos + 1 + offset);\n if (ch == 60 || ch == 10 /* '<\\n' */)\n return false;\n }\n return null;\n }\n else {\n let depth = 0, pos = start;\n for (let escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (space(ch)) {\n break;\n }\n else if (escaped) {\n escaped = false;\n }\n else if (ch == 40 /* '(' */) {\n depth++;\n }\n else if (ch == 41 /* ')' */) {\n if (!depth)\n break;\n depth--;\n }\n else if (ch == 92 /* '\\\\' */) {\n escaped = true;\n }\n }\n return pos > start ? elt(Type.URL, start + offset, pos + offset) : pos == text.length ? null : false;\n }\n}\nfunction parseLinkTitle(text, start, offset) {\n let next = text.charCodeAt(start);\n if (next != 39 && next != 34 && next != 40 /* '\"\\'(' */)\n return false;\n let end = next == 40 ? 41 : next;\n for (let pos = start + 1, escaped = false; pos < text.length; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == end)\n return elt(Type.LinkTitle, start + offset, pos + 1 + offset);\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n return null;\n}\nfunction parseLinkLabel(text, start, offset, requireNonWS) {\n for (let escaped = false, pos = start + 1, end = Math.min(text.length, pos + 999); pos < end; pos++) {\n let ch = text.charCodeAt(pos);\n if (escaped)\n escaped = false;\n else if (ch == 93 /* ']' */)\n return requireNonWS ? false : elt(Type.LinkLabel, start + offset, pos + 1 + offset);\n else {\n if (requireNonWS && !space(ch))\n requireNonWS = false;\n if (ch == 91 /* '[' */)\n return false;\n else if (ch == 92 /* '\\\\' */)\n escaped = true;\n }\n }\n return null;\n}\n/**\nInline parsing functions get access to this context, and use it to\nread the content and emit syntax nodes.\n*/\nclass InlineContext {\n /**\n @internal\n */\n constructor(\n /**\n The parser that is being used.\n */\n parser, \n /**\n The text of this inline section.\n */\n text, \n /**\n The starting offset of the section in the document.\n */\n offset) {\n this.parser = parser;\n this.text = text;\n this.offset = offset;\n /**\n @internal\n */\n this.parts = [];\n }\n /**\n Get the character code at the given (document-relative)\n position.\n */\n char(pos) { return pos >= this.end ? -1 : this.text.charCodeAt(pos - this.offset); }\n /**\n The position of the end of this inline section.\n */\n get end() { return this.offset + this.text.length; }\n /**\n Get a substring of this inline section. Again uses\n document-relative positions.\n */\n slice(from, to) { return this.text.slice(from - this.offset, to - this.offset); }\n /**\n @internal\n */\n append(elt) {\n this.parts.push(elt);\n return elt.to;\n }\n /**\n Add a [delimiter](#DelimiterType) at this given position. `open`\n and `close` indicate whether this delimiter is opening, closing,\n or both. Returns the end of the delimiter, for convenient\n returning from [parse functions](#InlineParser.parse).\n */\n addDelimiter(type, from, to, open, close) {\n return this.append(new InlineDelimiter(type, from, to, (open ? 1 /* Mark.Open */ : 0 /* Mark.None */) | (close ? 2 /* Mark.Close */ : 0 /* Mark.None */)));\n }\n /**\n Returns true when there is an unmatched link or image opening\n token before the current position.\n */\n get hasOpenLink() {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && (part.type == LinkStart || part.type == ImageStart))\n return true;\n }\n return false;\n }\n /**\n Add an inline element. Returns the end of the element.\n */\n addElement(elt) {\n return this.append(elt);\n }\n /**\n Resolve markers between this.parts.length and from, wrapping matched markers in the\n appropriate node and updating the content of this.parts. @internal\n */\n resolveMarkers(from) {\n // Scan forward, looking for closing tokens\n for (let i = from; i < this.parts.length; i++) {\n let close = this.parts[i];\n if (!(close instanceof InlineDelimiter && close.type.resolve && (close.side & 2 /* Mark.Close */)))\n continue;\n let emp = close.type == EmphasisUnderscore || close.type == EmphasisAsterisk;\n let closeSize = close.to - close.from;\n let open, j = i - 1;\n // Continue scanning for a matching opening token\n for (; j >= from; j--) {\n let part = this.parts[j];\n if (part instanceof InlineDelimiter && (part.side & 1 /* Mark.Open */) && part.type == close.type &&\n // Ignore emphasis delimiters where the character count doesn't match\n !(emp && ((close.side & 1 /* Mark.Open */) || (part.side & 2 /* Mark.Close */)) &&\n (part.to - part.from + closeSize) % 3 == 0 && ((part.to - part.from) % 3 || closeSize % 3))) {\n open = part;\n break;\n }\n }\n if (!open)\n continue;\n let type = close.type.resolve, content = [];\n let start = open.from, end = close.to;\n // Emphasis marker effect depends on the character count. Size consumed is minimum of the two\n // markers.\n if (emp) {\n let size = Math.min(2, open.to - open.from, closeSize);\n start = open.to - size;\n end = close.from + size;\n type = size == 1 ? \"Emphasis\" : \"StrongEmphasis\";\n }\n // Move the covered region into content, optionally adding marker nodes\n if (open.type.mark)\n content.push(this.elt(open.type.mark, start, open.to));\n for (let k = j + 1; k < i; k++) {\n if (this.parts[k] instanceof Element)\n content.push(this.parts[k]);\n this.parts[k] = null;\n }\n if (close.type.mark)\n content.push(this.elt(close.type.mark, close.from, end));\n let element = this.elt(type, start, end, content);\n // If there are leftover emphasis marker characters, shrink the close/open markers. Otherwise, clear them.\n this.parts[j] = emp && open.from != start ? new InlineDelimiter(open.type, open.from, start, open.side) : null;\n let keep = this.parts[i] = emp && close.to != end ? new InlineDelimiter(close.type, end, close.to, close.side) : null;\n // Insert the new element in this.parts\n if (keep)\n this.parts.splice(i, 0, element);\n else\n this.parts[i] = element;\n }\n // Collect the elements remaining in this.parts into an array.\n let result = [];\n for (let i = from; i < this.parts.length; i++) {\n let part = this.parts[i];\n if (part instanceof Element)\n result.push(part);\n }\n return result;\n }\n /**\n Find an opening delimiter of the given type. Returns `null` if\n no delimiter is found, or an index that can be passed to\n [`takeContent`](#InlineContext.takeContent) otherwise.\n */\n findOpeningDelimiter(type) {\n for (let i = this.parts.length - 1; i >= 0; i--) {\n let part = this.parts[i];\n if (part instanceof InlineDelimiter && part.type == type && (part.side & 1 /* Mark.Open */))\n return i;\n }\n return null;\n }\n /**\n Remove all inline elements and delimiters starting from the\n given index (which you should get from\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter),\n resolve delimiters inside of them, and return them as an array\n of elements.\n */\n takeContent(startIndex) {\n let content = this.resolveMarkers(startIndex);\n this.parts.length = startIndex;\n return content;\n }\n /**\n Return the delimiter at the given index. Mostly useful to get\n additional info out of a delimiter index returned by\n [`findOpeningDelimiter`](#InlineContext.findOpeningDelimiter).\n Returns null if there is no delimiter at this index.\n */\n getDelimiterAt(index) {\n let part = this.parts[index];\n return part instanceof InlineDelimiter ? part : null;\n }\n /**\n Skip space after the given (document) position, returning either\n the position of the next non-space character or the end of the\n section.\n */\n skipSpace(from) { return skipSpace(this.text, from - this.offset) + this.offset; }\n elt(type, from, to, children) {\n if (typeof type == \"string\")\n return elt(this.parser.getNodeType(type), from, to, children);\n return new TreeElement(type, from);\n }\n}\n/**\nThe opening delimiter type used by the standard link parser.\n*/\nInlineContext.linkStart = LinkStart;\n/**\nOpening delimiter type used for standard images.\n*/\nInlineContext.imageStart = ImageStart;\nfunction injectMarks(elements, marks) {\n if (!marks.length)\n return elements;\n if (!elements.length)\n return marks;\n let elts = elements.slice(), eI = 0;\n for (let mark of marks) {\n while (eI < elts.length && elts[eI].to < mark.to)\n eI++;\n if (eI < elts.length && elts[eI].from < mark.from) {\n let e = elts[eI];\n if (e instanceof Element)\n elts[eI] = new Element(e.type, e.from, e.to, injectMarks(e.children, [mark]));\n }\n else {\n elts.splice(eI++, 0, mark);\n }\n }\n return elts;\n}\n// These are blocks that can span blank lines, and should thus only be\n// reused if their next sibling is also being reused.\nconst NotLast = [Type.CodeBlock, Type.ListItem, Type.OrderedList, Type.BulletList];\nclass FragmentCursor {\n constructor(fragments, input) {\n this.fragments = fragments;\n this.input = input;\n // Index into fragment array\n this.i = 0;\n // Active fragment\n this.fragment = null;\n this.fragmentEnd = -1;\n // Cursor into the current fragment, if any. When `moveTo` returns\n // true, this points at the first block after `pos`.\n this.cursor = null;\n if (fragments.length)\n this.fragment = fragments[this.i++];\n }\n nextFragment() {\n this.fragment = this.i < this.fragments.length ? this.fragments[this.i++] : null;\n this.cursor = null;\n this.fragmentEnd = -1;\n }\n moveTo(pos, lineStart) {\n while (this.fragment && this.fragment.to <= pos)\n this.nextFragment();\n if (!this.fragment || this.fragment.from > (pos ? pos - 1 : 0))\n return false;\n if (this.fragmentEnd < 0) {\n let end = this.fragment.to;\n while (end > 0 && this.input.read(end - 1, end) != \"\\n\")\n end--;\n this.fragmentEnd = end ? end - 1 : 0;\n }\n let c = this.cursor;\n if (!c) {\n c = this.cursor = this.fragment.tree.cursor();\n c.firstChild();\n }\n let rPos = pos + this.fragment.offset;\n while (c.to <= rPos)\n if (!c.parent())\n return false;\n for (;;) {\n if (c.from >= rPos)\n return this.fragment.from <= lineStart;\n if (!c.childAfter(rPos))\n return false;\n }\n }\n matches(hash) {\n let tree = this.cursor.tree;\n return tree && tree.prop(NodeProp.contextHash) == hash;\n }\n takeNodes(cx) {\n let cur = this.cursor, off = this.fragment.offset, fragEnd = this.fragmentEnd - (this.fragment.openEnd ? 1 : 0);\n let start = cx.absoluteLineStart, end = start, blockI = cx.block.children.length;\n let prevEnd = end, prevI = blockI;\n for (;;) {\n if (cur.to - off > fragEnd) {\n if (cur.type.isAnonymous && cur.firstChild())\n continue;\n break;\n }\n let pos = toRelative(cur.from - off, cx.ranges);\n if (cur.to - off <= cx.ranges[cx.rangeI].to) { // Fits in current range\n cx.addNode(cur.tree, pos);\n }\n else {\n let dummy = new Tree(cx.parser.nodeSet.types[Type.Paragraph], [], [], 0, cx.block.hashProp);\n cx.reusePlaceholders.set(dummy, cur.tree);\n cx.addNode(dummy, pos);\n }\n // Taken content must always end in a block, because incremental\n // parsing happens on block boundaries. Never stop directly\n // after an indented code block, since those can continue after\n // any number of blank lines.\n if (cur.type.is(\"Block\")) {\n if (NotLast.indexOf(cur.type.id) < 0) {\n end = cur.to - off;\n blockI = cx.block.children.length;\n }\n else {\n end = prevEnd;\n blockI = prevI;\n }\n prevEnd = cur.to - off;\n prevI = cx.block.children.length;\n }\n if (!cur.nextSibling())\n break;\n }\n while (cx.block.children.length > blockI) {\n cx.block.children.pop();\n cx.block.positions.pop();\n }\n return end - start;\n }\n}\n// Convert an input-stream-relative position to a\n// Markdown-doc-relative position by subtracting the size of all input\n// gaps before `abs`.\nfunction toRelative(abs, ranges) {\n let pos = abs;\n for (let i = 1; i < ranges.length; i++) {\n let gapFrom = ranges[i - 1].to, gapTo = ranges[i].from;\n if (gapFrom < abs)\n pos -= gapTo - gapFrom;\n }\n return pos;\n}\nconst markdownHighlighting = styleTags({\n \"Blockquote/...\": tags.quote,\n HorizontalRule: tags.contentSeparator,\n \"ATXHeading1/... SetextHeading1/...\": tags.heading1,\n \"ATXHeading2/... SetextHeading2/...\": tags.heading2,\n \"ATXHeading3/...\": tags.heading3,\n \"ATXHeading4/...\": tags.heading4,\n \"ATXHeading5/...\": tags.heading5,\n \"ATXHeading6/...\": tags.heading6,\n \"Comment CommentBlock\": tags.comment,\n Escape: tags.escape,\n Entity: tags.character,\n \"Emphasis/...\": tags.emphasis,\n \"StrongEmphasis/...\": tags.strong,\n \"Link/... Image/...\": tags.link,\n \"OrderedList/... BulletList/...\": tags.list,\n \"BlockQuote/...\": tags.quote,\n \"InlineCode CodeText\": tags.monospace,\n \"URL Autolink\": tags.url,\n \"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark\": tags.processingInstruction,\n \"CodeInfo LinkLabel\": tags.labelName,\n LinkTitle: tags.string,\n Paragraph: tags.content\n});\n/**\nThe default CommonMark parser.\n*/\nconst parser = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);\n\nfunction leftOverSpace(node, from, to) {\n let ranges = [];\n for (let n = node.firstChild, pos = from;; n = n.nextSibling) {\n let nextPos = n ? n.from : to;\n if (nextPos > pos)\n ranges.push({ from: pos, to: nextPos });\n if (!n)\n break;\n pos = n.to;\n }\n return ranges;\n}\n/**\nCreate a Markdown extension to enable nested parsing on code\nblocks and/or embedded HTML.\n*/\nfunction parseCode(config) {\n let { codeParser, htmlParser } = config;\n let wrap = parseMixed((node, input) => {\n let id = node.type.id;\n if (codeParser && (id == Type.CodeBlock || id == Type.FencedCode)) {\n let info = \"\";\n if (id == Type.FencedCode) {\n let infoNode = node.node.getChild(Type.CodeInfo);\n if (infoNode)\n info = input.read(infoNode.from, infoNode.to);\n }\n let parser = codeParser(info);\n if (parser)\n return { parser, overlay: node => node.type.id == Type.CodeText, bracketed: id == Type.FencedCode };\n }\n else if (htmlParser && (id == Type.HTMLBlock || id == Type.HTMLTag || id == Type.CommentBlock)) {\n return { parser: htmlParser, overlay: leftOverSpace(node.node, node.from, node.to) };\n }\n return null;\n });\n return { wrap };\n}\n\nconst StrikethroughDelim = { resolve: \"Strikethrough\", mark: \"StrikethroughMark\" };\n/**\nAn extension that implements\n[GFM-style](https://github.github.com/gfm/#strikethrough-extension-)\nStrikethrough syntax using `~~` delimiters.\n*/\nconst Strikethrough = {\n defineNodes: [{\n name: \"Strikethrough\",\n style: { \"Strikethrough/...\": tags.strikethrough }\n }, {\n name: \"StrikethroughMark\",\n style: tags.processingInstruction\n }],\n parseInline: [{\n name: \"Strikethrough\",\n parse(cx, next, pos) {\n if (next != 126 /* '~' */ || cx.char(pos + 1) != 126 || cx.char(pos + 2) == 126)\n return -1;\n let before = cx.slice(pos - 1, pos), after = cx.slice(pos + 2, pos + 3);\n let sBefore = /\\s|^$/.test(before), sAfter = /\\s|^$/.test(after);\n let pBefore = Punctuation.test(before), pAfter = Punctuation.test(after);\n return cx.addDelimiter(StrikethroughDelim, pos, pos + 2, !sAfter && (!pAfter || sBefore || pBefore), !sBefore && (!pBefore || sAfter || pAfter));\n },\n after: \"Emphasis\"\n }]\n};\n// Parse a line as a table row and return the row count. When `elts`\n// is given, push syntax elements for the content onto it.\nfunction parseRow(cx, line, startI = 0, elts, offset = 0) {\n let count = 0, first = true, cellStart = -1, cellEnd = -1, esc = false;\n let parseCell = () => {\n elts.push(cx.elt(\"TableCell\", offset + cellStart, offset + cellEnd, cx.parser.parseInline(line.slice(cellStart, cellEnd), offset + cellStart)));\n };\n for (let i = startI; i < line.length; i++) {\n let next = line.charCodeAt(i);\n if (next == 124 /* '|' */ && !esc) {\n if (!first || cellStart > -1)\n count++;\n first = false;\n if (elts) {\n if (cellStart > -1)\n parseCell();\n elts.push(cx.elt(\"TableDelimiter\", i + offset, i + offset + 1));\n }\n cellStart = cellEnd = -1;\n }\n else if (esc || next != 32 && next != 9) {\n if (cellStart < 0)\n cellStart = i;\n cellEnd = i + 1;\n }\n esc = !esc && next == 92;\n }\n if (cellStart > -1) {\n count++;\n if (elts)\n parseCell();\n }\n return count;\n}\nfunction hasPipe(str, start) {\n for (let i = start; i < str.length; i++) {\n let next = str.charCodeAt(i);\n if (next == 124 /* '|' */)\n return true;\n if (next == 92 /* '\\\\' */)\n i++;\n }\n return false;\n}\nconst delimiterLine = /^\\|?(\\s*:?-+:?\\s*\\|)+(\\s*:?-+:?\\s*)?$/;\nclass TableParser {\n constructor() {\n // Null means we haven't seen the second line yet, false means this\n // isn't a table, and an array means this is a table and we've\n // parsed the given rows so far.\n this.rows = null;\n }\n nextLine(cx, line, leaf) {\n if (this.rows == null) { // Second line\n this.rows = false;\n let lineText;\n if ((line.next == 45 || line.next == 58 || line.next == 124 /* '-:|' */) &&\n delimiterLine.test(lineText = line.text.slice(line.pos))) {\n let firstRow = [], firstCount = parseRow(cx, leaf.content, 0, firstRow, leaf.start);\n if (firstCount == parseRow(cx, lineText, line.pos))\n this.rows = [cx.elt(\"TableHeader\", leaf.start, leaf.start + leaf.content.length, firstRow),\n cx.elt(\"TableDelimiter\", cx.lineStart + line.pos, cx.lineStart + line.text.length)];\n }\n }\n else if (this.rows) { // Line after the second\n let content = [];\n parseRow(cx, line.text, line.pos, content, cx.lineStart);\n this.rows.push(cx.elt(\"TableRow\", cx.lineStart + line.pos, cx.lineStart + line.text.length, content));\n }\n return false;\n }\n finish(cx, leaf) {\n if (!this.rows)\n return false;\n cx.addLeafElement(leaf, cx.elt(\"Table\", leaf.start, leaf.start + leaf.content.length, this.rows));\n return true;\n }\n}\n/**\nThis extension provides\n[GFM-style](https://github.github.com/gfm/#tables-extension-)\ntables, using syntax like this:\n\n```\n| head 1 | head 2 |\n| --- | --- |\n| cell 1 | cell 2 |\n```\n*/\nconst Table = {\n defineNodes: [\n { name: \"Table\", block: true },\n { name: \"TableHeader\", style: { \"TableHeader/...\": tags.heading } },\n \"TableRow\",\n { name: \"TableCell\", style: tags.content },\n { name: \"TableDelimiter\", style: tags.processingInstruction },\n ],\n parseBlock: [{\n name: \"Table\",\n leaf(_, leaf) { return hasPipe(leaf.content, 0) ? new TableParser : null; },\n endLeaf(cx, line, leaf) {\n if (leaf.parsers.some(p => p instanceof TableParser) || !hasPipe(line.text, line.basePos))\n return false;\n let next = cx.peekLine();\n return delimiterLine.test(next) && parseRow(cx, line.text, line.basePos) == parseRow(cx, next, line.basePos);\n },\n before: \"SetextHeading\"\n }]\n};\nclass TaskParser {\n nextLine() { return false; }\n finish(cx, leaf) {\n cx.addLeafElement(leaf, cx.elt(\"Task\", leaf.start, leaf.start + leaf.content.length, [\n cx.elt(\"TaskMarker\", leaf.start, leaf.start + 3),\n ...cx.parser.parseInline(leaf.content.slice(3), leaf.start + 3)\n ]));\n return true;\n }\n}\n/**\nExtension providing\n[GFM-style](https://github.github.com/gfm/#task-list-items-extension-)\ntask list items, where list items can be prefixed with `[ ]` or\n`[x]` to add a checkbox.\n*/\nconst TaskList = {\n defineNodes: [\n { name: \"Task\", block: true, style: tags.list },\n { name: \"TaskMarker\", style: tags.atom }\n ],\n parseBlock: [{\n name: \"TaskList\",\n leaf(cx, leaf) {\n return /^\\[[ xX]\\][ \\t]/.test(leaf.content) && cx.parentType().name == \"ListItem\" ? new TaskParser : null;\n },\n after: \"SetextHeading\"\n }]\n};\nconst autolinkRE = /(www\\.)|(https?:\\/\\/)|([\\w.+-]{1,100}@)|(mailto:|xmpp:)/gy;\nconst urlRE = /[\\w-]+(\\.[\\w-]+)+(\\/[^\\s<]*)?/gy;\nconst lastTwoDomainWords = /[\\w-]+\\.[\\w-]+($|\\/)/;\nconst emailRE = /[\\w.+-]+@[\\w-]+(\\.[\\w.-]+)+/gy;\nconst xmppResourceRE = /\\/[a-zA-Z\\d@.]+/gy;\nfunction count(str, from, to, ch) {\n let result = 0;\n for (let i = from; i < to; i++)\n if (str[i] == ch)\n result++;\n return result;\n}\nfunction autolinkURLEnd(text, from) {\n urlRE.lastIndex = from;\n let m = urlRE.exec(text);\n if (!m || lastTwoDomainWords.exec(m[0])[0].indexOf(\"_\") > -1)\n return -1;\n let end = from + m[0].length;\n for (;;) {\n let last = text[end - 1], m;\n if (/[?!.,:*_~]/.test(last) ||\n last == \")\" && count(text, from, end, \")\") > count(text, from, end, \"(\"))\n end--;\n else if (last == \";\" && (m = /&(?:#\\d+|#x[a-f\\d]+|\\w+);$/.exec(text.slice(from, end))))\n end = from + m.index;\n else\n break;\n }\n return end;\n}\nfunction autolinkEmailEnd(text, from) {\n emailRE.lastIndex = from;\n let m = emailRE.exec(text);\n if (!m)\n return -1;\n let last = m[0][m[0].length - 1];\n return last == \"_\" || last == \"-\" ? -1 : from + m[0].length - (last == \".\" ? 1 : 0);\n}\n/**\nExtension that implements autolinking for\n`www.`/`http://`/`https://`/`mailto:`/`xmpp:` URLs and email\naddresses.\n*/\nconst Autolink = {\n parseInline: [{\n name: \"Autolink\",\n parse(cx, next, absPos) {\n let pos = absPos - cx.offset;\n if (pos && /\\w/.test(cx.text[pos - 1]))\n return -1;\n autolinkRE.lastIndex = pos;\n let m = autolinkRE.exec(cx.text), end = -1;\n if (!m)\n return -1;\n if (m[1] || m[2]) { // www., http://\n end = autolinkURLEnd(cx.text, pos + m[0].length);\n if (end > -1 && cx.hasOpenLink) {\n let noBracket = /([^\\[\\]]|\\[[^\\]]*\\])*/.exec(cx.text.slice(pos, end));\n end = pos + noBracket[0].length;\n }\n }\n else if (m[3]) { // email address\n end = autolinkEmailEnd(cx.text, pos);\n }\n else { // mailto:/xmpp:\n end = autolinkEmailEnd(cx.text, pos + m[0].length);\n if (end > -1 && m[0] == \"xmpp:\") {\n xmppResourceRE.lastIndex = end;\n m = xmppResourceRE.exec(cx.text);\n if (m)\n end = m.index + m[0].length;\n }\n }\n if (end < 0)\n return -1;\n cx.addElement(cx.elt(\"URL\", absPos, end + cx.offset));\n return end + cx.offset;\n }\n }]\n};\n/**\nExtension bundle containing [`Table`](#Table),\n[`TaskList`](#TaskList), [`Strikethrough`](#Strikethrough), and\n[`Autolink`](#Autolink).\n*/\nconst GFM = [Table, TaskList, Strikethrough, Autolink];\nfunction parseSubSuper(ch, node, mark) {\n return (cx, next, pos) => {\n if (next != ch || cx.char(pos + 1) == ch)\n return -1;\n let elts = [cx.elt(mark, pos, pos + 1)];\n for (let i = pos + 1; i < cx.end; i++) {\n let next = cx.char(i);\n if (next == ch)\n return cx.addElement(cx.elt(node, pos, i + 1, elts.concat(cx.elt(mark, i, i + 1))));\n if (next == 92 /* '\\\\' */)\n elts.push(cx.elt(\"Escape\", i, i++ + 2));\n if (space(next))\n break;\n }\n return -1;\n };\n}\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsuperscript using `^` markers.\n*/\nconst Superscript = {\n defineNodes: [\n { name: \"Superscript\", style: tags.special(tags.content) },\n { name: \"SuperscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Superscript\",\n parse: parseSubSuper(94 /* '^' */, \"Superscript\", \"SuperscriptMark\")\n }]\n};\n/**\nExtension providing\n[Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)\nsubscript using `~` markers.\n*/\nconst Subscript = {\n defineNodes: [\n { name: \"Subscript\", style: tags.special(tags.content) },\n { name: \"SubscriptMark\", style: tags.processingInstruction }\n ],\n parseInline: [{\n name: \"Subscript\",\n parse: parseSubSuper(126 /* '~' */, \"Subscript\", \"SubscriptMark\")\n }]\n};\n/**\nExtension that parses two colons with only letters, underscores,\nand numbers between them as `Emoji` nodes.\n*/\nconst Emoji = {\n defineNodes: [{ name: \"Emoji\", style: tags.character }],\n parseInline: [{\n name: \"Emoji\",\n parse(cx, next, pos) {\n let match;\n if (next != 58 /* ':' */ || !(match = /^[a-zA-Z_0-9]+:/.exec(cx.slice(pos + 1, cx.end))))\n return -1;\n return cx.addElement(cx.elt(\"Emoji\", pos, pos + 1 + match[0].length));\n }\n }]\n};\n\nexport { Autolink, BlockContext, Element, Emoji, GFM, InlineContext, LeafBlock, Line, MarkdownParser, Strikethrough, Subscript, Superscript, Table, TaskList, parseCode, parser };\n","import { EditorSelection, countColumn, Prec, EditorState } from '@codemirror/state';\nimport { EditorView, keymap } from '@codemirror/view';\nimport { defineLanguageFacet, foldNodeProp, indentNodeProp, languageDataProp, foldService, syntaxTree, Language, LanguageDescription, ParseContext, indentUnit, LanguageSupport } from '@codemirror/language';\nimport { CompletionContext } from '@codemirror/autocomplete';\nimport { parser, GFM, Subscript, Superscript, Emoji, MarkdownParser, parseCode } from '@lezer/markdown';\nimport { html, htmlCompletionSource } from '@codemirror/lang-html';\nimport { NodeProp } from '@lezer/common';\n\nconst data = /*@__PURE__*/defineLanguageFacet({ commentTokens: { block: { open: \"<!--\", close: \"-->\" } } });\nconst headingProp = /*@__PURE__*/new NodeProp();\nconst commonmark = /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/foldNodeProp.add(type => {\n return !type.is(\"Block\") || type.is(\"Document\") || isHeading(type) != null || isList(type) ? undefined\n : (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to });\n }),\n /*@__PURE__*/headingProp.add(isHeading),\n /*@__PURE__*/indentNodeProp.add({\n Document: () => null\n }),\n /*@__PURE__*/languageDataProp.add({\n Document: data\n })\n ]\n});\nfunction isHeading(type) {\n let match = /^(?:ATX|Setext)Heading(\\d)$/.exec(type.name);\n return match ? +match[1] : undefined;\n}\nfunction isList(type) {\n return type.name == \"OrderedList\" || type.name == \"BulletList\";\n}\nfunction findSectionEnd(headerNode, level) {\n let last = headerNode;\n for (;;) {\n let next = last.nextSibling, heading;\n if (!next || (heading = isHeading(next.type)) != null && heading <= level)\n break;\n last = next;\n }\n return last.to;\n}\nconst headerIndent = /*@__PURE__*/foldService.of((state, start, end) => {\n for (let node = syntaxTree(state).resolveInner(end, -1); node; node = node.parent) {\n if (node.from < start)\n break;\n let heading = node.type.prop(headingProp);\n if (heading == null)\n continue;\n let upto = findSectionEnd(node, heading);\n if (upto > end)\n return { from: end, to: upto };\n }\n return null;\n});\nfunction mkLang(parser) {\n return new Language(data, parser, [], \"markdown\");\n}\n/**\nLanguage support for strict CommonMark.\n*/\nconst commonmarkLanguage = /*@__PURE__*/mkLang(commonmark);\nconst extended = /*@__PURE__*/commonmark.configure([GFM, Subscript, Superscript, Emoji, {\n props: [\n /*@__PURE__*/foldNodeProp.add({\n Table: (tree, state) => ({ from: state.doc.lineAt(tree.from).to, to: tree.to })\n })\n ]\n }]);\n/**\nLanguage support for [GFM](https://github.github.com/gfm/) plus\nsubscript, superscript, and emoji syntax.\n*/\nconst markdownLanguage = /*@__PURE__*/mkLang(extended);\nfunction getCodeParser(languages, defaultLanguage) {\n return (info) => {\n if (info && languages) {\n let found = null;\n // Strip anything after whitespace\n info = /\\S*/.exec(info)[0];\n if (typeof languages == \"function\")\n found = languages(info);\n else\n found = LanguageDescription.matchLanguageName(languages, info, true);\n if (found instanceof LanguageDescription)\n return found.support ? found.support.language.parser : ParseContext.getSkippingParser(found.load());\n else if (found)\n return found.parser;\n }\n return defaultLanguage ? defaultLanguage.parser : null;\n };\n}\n\nclass Context {\n constructor(node, from, to, spaceBefore, spaceAfter, type, item) {\n this.node = node;\n this.from = from;\n this.to = to;\n this.spaceBefore = spaceBefore;\n this.spaceAfter = spaceAfter;\n this.type = type;\n this.item = item;\n }\n blank(maxWidth, trailing = true) {\n let result = this.spaceBefore + (this.node.name == \"Blockquote\" ? \">\" : \"\");\n if (maxWidth != null) {\n while (result.length < maxWidth)\n result += \" \";\n return result;\n }\n else {\n for (let i = this.to - this.from - result.length - this.spaceAfter.length; i > 0; i--)\n result += \" \";\n return result + (trailing ? this.spaceAfter : \"\");\n }\n }\n marker(doc, add) {\n let number = this.node.name == \"OrderedList\" ? String((+itemNumber(this.item, doc)[2] + add)) : \"\";\n return this.spaceBefore + number + this.type + this.spaceAfter;\n }\n}\nfunction getContext(node, doc) {\n let nodes = [], context = [];\n for (let cur = node; cur; cur = cur.parent) {\n if (cur.name == \"FencedCode\")\n return context;\n if (cur.name == \"ListItem\" || cur.name == \"Blockquote\")\n nodes.push(cur);\n }\n for (let i = nodes.length - 1; i >= 0; i--) {\n let node = nodes[i], match;\n let line = doc.lineAt(node.from), startPos = node.from - line.from;\n if (node.name == \"Blockquote\" && (match = /^ *>( ?)/.exec(line.text.slice(startPos)))) {\n context.push(new Context(node, startPos, startPos + match[0].length, \"\", match[1], \">\", null));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"OrderedList\" &&\n (match = /^( *)\\d+([.)])( *)/.exec(line.text.slice(startPos)))) {\n let after = match[3], len = match[0].length;\n if (after.length >= 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, match[2], node));\n }\n else if (node.name == \"ListItem\" && node.parent.name == \"BulletList\" &&\n (match = /^( *)([-+*])( {1,4}\\[[ xX]\\])?( +)/.exec(line.text.slice(startPos)))) {\n let after = match[4], len = match[0].length;\n if (after.length > 4) {\n after = after.slice(0, after.length - 4);\n len -= 4;\n }\n let type = match[2];\n if (match[3])\n type += match[3].replace(/[xX]/, ' ');\n context.push(new Context(node.parent, startPos, startPos + len, match[1], after, type, node));\n }\n }\n return context;\n}\nfunction itemNumber(item, doc) {\n return /^(\\s*)(\\d+)(?=[.)])/.exec(doc.sliceString(item.from, item.from + 10));\n}\nfunction renumberList(after, doc, changes, offset = 0) {\n for (let prev = -1, node = after;;) {\n if (node.name == \"ListItem\") {\n let m = itemNumber(node, doc);\n let number = +m[2];\n if (prev >= 0) {\n if (number != prev + 1)\n return;\n changes.push({ from: node.from + m[1].length, to: node.from + m[0].length, insert: String(prev + 2 + offset) });\n }\n prev = number;\n }\n let next = node.nextSibling;\n if (!next)\n break;\n node = next;\n }\n}\nfunction normalizeIndent(content, state) {\n let blank = /^[ \\t]*/.exec(content)[0].length;\n if (!blank || state.facet(indentUnit) != \"\\t\")\n return content;\n let col = countColumn(content, 4, blank);\n let space = \"\";\n for (let i = col; i > 0;) {\n if (i >= 4) {\n space += \"\\t\";\n i -= 4;\n }\n else {\n space += \" \";\n i--;\n }\n }\n return space + content.slice(blank);\n}\n/**\nReturns a command like\n[`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup),\nallowing further configuration.\n*/\nconst insertNewlineContinueMarkupCommand = (config = {}) => ({ state, dispatch }) => {\n let tree = syntaxTree(state), { doc } = state;\n let dont = null, changes = state.changeByRange(range => {\n if (!range.empty || !markdownLanguage.isActiveAt(state, range.from, -1) && !markdownLanguage.isActiveAt(state, range.from, 1))\n return dont = { range };\n let pos = range.from, line = doc.lineAt(pos);\n let context = getContext(tree.resolveInner(pos, -1), doc);\n while (context.length && context[context.length - 1].from > pos - line.from)\n context.pop();\n if (!context.length)\n return dont = { range };\n let inner = context[context.length - 1];\n if (inner.to - inner.spaceAfter.length > pos - line.from)\n return dont = { range };\n let emptyLine = pos >= (inner.to - inner.spaceAfter.length) && !/\\S/.test(line.text.slice(inner.to));\n // Empty line in list\n if (inner.item && emptyLine) {\n let first = inner.node.firstChild, second = inner.node.getChild(\"ListItem\", \"ListItem\");\n // Not second item or blank line before: delete a level of markup\n if (first.to >= pos || second && second.to < pos ||\n line.from > 0 && !/[^\\s>]/.test(doc.lineAt(line.from - 1).text) ||\n config.nonTightLists === false) {\n let next = context.length > 1 ? context[context.length - 2] : null;\n let delTo, insert = \"\";\n if (next && next.item) { // Re-add marker for the list at the next level\n delTo = line.from + next.from;\n insert = next.marker(doc, 1);\n }\n else {\n delTo = line.from + (next ? next.to : 0);\n }\n let changes = [{ from: delTo, to: pos, insert }];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes, -2);\n if (next && next.node.name == \"OrderedList\")\n renumberList(next.item, doc, changes);\n return { range: EditorSelection.cursor(delTo + insert.length), changes };\n }\n else { // Move second item down, making tight two-item list non-tight\n let insert = blankLine(context, state, line);\n return { range: EditorSelection.cursor(pos + insert.length + 1),\n changes: { from: line.from, insert: insert + state.lineBreak } };\n }\n }\n if (inner.node.name == \"Blockquote\" && emptyLine && line.from) {\n let prevLine = doc.lineAt(line.from - 1), quoted = />\\s*$/.exec(prevLine.text);\n // Two aligned empty quoted lines in a row\n if (quoted && quoted.index == inner.from) {\n let changes = state.changes([{ from: prevLine.from + quoted.index, to: prevLine.to },\n { from: line.from + inner.from, to: line.to }]);\n return { range: range.map(changes), changes };\n }\n }\n let changes = [];\n if (inner.node.name == \"OrderedList\")\n renumberList(inner.item, doc, changes);\n let continued = inner.item && inner.item.from < line.from;\n let insert = \"\";\n // If not dedented\n if (!continued || /^[\\s\\d.)\\-+*>]*/.exec(line.text)[0].length >= inner.to) {\n for (let i = 0, e = context.length - 1; i <= e; i++) {\n insert += i == e && !continued ? context[i].marker(doc, 1)\n : context[i].blank(i < e ? countColumn(line.text, 4, context[i + 1].from) - insert.length : null);\n }\n }\n let from = pos;\n while (from > line.from && /\\s/.test(line.text.charAt(from - line.from - 1)))\n from--;\n insert = normalizeIndent(insert, state);\n if (nonTightList(inner.node, state.doc))\n insert = blankLine(context, state, line) + state.lineBreak + insert;\n changes.push({ from, to: pos, insert: state.lineBreak + insert });\n return { range: EditorSelection.cursor(from + insert.length + 1), changes };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n return true;\n};\n/**\nThis command, when invoked in Markdown context with cursor\nselection(s), will create a new line with the markup for\nblockquotes and lists that were active on the old line. If the\ncursor was directly after the end of the markup for the old line,\ntrailing whitespace and list markers are removed from that line.\n\nThe command does nothing in non-Markdown context, so it should\nnot be used as the only binding for Enter (even in a Markdown\ndocument, HTML and code regions might use a different language).\n*/\nconst insertNewlineContinueMarkup = /*@__PURE__*/insertNewlineContinueMarkupCommand();\nfunction isMark(node) {\n return node.name == \"QuoteMark\" || node.name == \"ListMark\";\n}\nfunction nonTightList(node, doc) {\n if (node.name != \"OrderedList\" && node.name != \"BulletList\")\n return false;\n let first = node.firstChild, second = node.getChild(\"ListItem\", \"ListItem\");\n if (!second)\n return false;\n let line1 = doc.lineAt(first.to), line2 = doc.lineAt(second.from);\n let empty = /^[\\s>]*$/.test(line1.text);\n return line1.number + (empty ? 0 : 1) < line2.number;\n}\nfunction blankLine(context, state, line) {\n let insert = \"\";\n for (let i = 0, e = context.length - 2; i <= e; i++) {\n insert += context[i].blank(i < e\n ? countColumn(line.text, 4, context[i + 1].from) - insert.length\n : null, i < e);\n }\n return normalizeIndent(insert, state);\n}\nfunction contextNodeForDelete(tree, pos) {\n let node = tree.resolveInner(pos, -1), scan = pos;\n if (isMark(node)) {\n scan = node.from;\n node = node.parent;\n }\n for (let prev; prev = node.childBefore(scan);) {\n if (isMark(prev)) {\n scan = prev.from;\n }\n else if (prev.name == \"OrderedList\" || prev.name == \"BulletList\") {\n node = prev.lastChild;\n scan = node.to;\n }\n else {\n break;\n }\n }\n return node;\n}\n/**\nThis command will, when invoked in a Markdown context with the\ncursor directly after list or blockquote markup, delete one level\nof markup. When the markup is for a list, it will be replaced by\nspaces on the first invocation (a further invocation will delete\nthe spaces), to make it easy to continue a list.\n\nWhen not after Markdown block markup, this command will return\nfalse, so it is intended to be bound alongside other deletion\ncommands, with a higher precedence than the more generic commands.\n*/\nconst deleteMarkupBackward = ({ state, dispatch }) => {\n let tree = syntaxTree(state);\n let dont = null, changes = state.changeByRange(range => {\n let pos = range.from, { doc } = state;\n if (range.empty && markdownLanguage.isActiveAt(state, range.from)) {\n let line = doc.lineAt(pos);\n let context = getContext(contextNodeForDelete(tree, pos), doc);\n if (context.length) {\n let inner = context[context.length - 1];\n let spaceEnd = inner.to - inner.spaceAfter.length + (inner.spaceAfter ? 1 : 0);\n // Delete extra trailing space after markup\n if (pos - line.from > spaceEnd && !/\\S/.test(line.text.slice(spaceEnd, pos - line.from)))\n return { range: EditorSelection.cursor(line.from + spaceEnd),\n changes: { from: line.from + spaceEnd, to: pos } };\n if (pos - line.from == spaceEnd &&\n // Only apply this if we're on the line that has the\n // construct's syntax, or there's only indentation in the\n // target range\n (!inner.item || line.from <= inner.item.from || !/\\S/.test(line.text.slice(0, inner.to)))) {\n let start = line.from + inner.from;\n // Replace a list item marker with blank space\n if (inner.item && inner.node.from < inner.item.from && /\\S/.test(line.text.slice(inner.from, inner.to))) {\n let insert = inner.blank(countColumn(line.text, 4, inner.to) - countColumn(line.text, 4, inner.from));\n if (start == line.from)\n insert = normalizeIndent(insert, state);\n return { range: EditorSelection.cursor(start + insert.length),\n changes: { from: start, to: line.from + inner.to, insert } };\n }\n // Delete one level of indentation\n if (start < pos)\n return { range: EditorSelection.cursor(start), changes: { from: start, to: pos } };\n }\n }\n }\n return dont = { range };\n });\n if (dont)\n return false;\n dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"delete\" }));\n return true;\n};\n\n/**\nA small keymap with Markdown-specific bindings. Binds Enter to\n[`insertNewlineContinueMarkup`](https://codemirror.net/6/docs/ref/#lang-markdown.insertNewlineContinueMarkup)\nand Backspace to\n[`deleteMarkupBackward`](https://codemirror.net/6/docs/ref/#lang-markdown.deleteMarkupBackward).\n*/\nconst markdownKeymap = [\n { key: \"Enter\", run: insertNewlineContinueMarkup },\n { key: \"Backspace\", run: deleteMarkupBackward }\n];\nconst htmlNoMatch = /*@__PURE__*/html({ matchClosingTags: false });\n/**\nMarkdown language support.\n*/\nfunction markdown(config = {}) {\n let { codeLanguages, defaultCodeLanguage, addKeymap = true, base: { parser } = commonmarkLanguage, completeHTMLTags = true, pasteURLAsLink: pasteURL = true, htmlTagLanguage = htmlNoMatch } = config;\n if (!(parser instanceof MarkdownParser))\n throw new RangeError(\"Base parser provided to `markdown` should be a Markdown parser\");\n let extensions = config.extensions ? [config.extensions] : [];\n let support = [htmlTagLanguage.support, headerIndent], defaultCode;\n if (pasteURL)\n support.push(pasteURLAsLink);\n if (defaultCodeLanguage instanceof LanguageSupport) {\n support.push(defaultCodeLanguage.support);\n defaultCode = defaultCodeLanguage.language;\n }\n else if (defaultCodeLanguage) {\n defaultCode = defaultCodeLanguage;\n }\n let codeParser = codeLanguages || defaultCode ? getCodeParser(codeLanguages, defaultCode) : undefined;\n extensions.push(parseCode({ codeParser, htmlParser: htmlTagLanguage.language.parser }));\n if (addKeymap)\n support.push(Prec.high(keymap.of(markdownKeymap)));\n let lang = mkLang(parser.configure(extensions));\n if (completeHTMLTags)\n support.push(lang.data.of({ autocomplete: htmlTagCompletion }));\n return new LanguageSupport(lang, support);\n}\nfunction htmlTagCompletion(context) {\n let { state, pos } = context, m = /<[:\\-\\.\\w\\u00b7-\\uffff]*$/.exec(state.sliceDoc(pos - 25, pos));\n if (!m)\n return null;\n let tree = syntaxTree(state).resolveInner(pos, -1);\n while (tree && !tree.type.isTop) {\n if (tree.name == \"CodeBlock\" || tree.name == \"FencedCode\" || tree.name == \"ProcessingInstructionBlock\" ||\n tree.name == \"CommentBlock\" || tree.name == \"Link\" || tree.name == \"Image\")\n return null;\n tree = tree.parent;\n }\n return {\n from: pos - m[0].length, to: pos,\n options: htmlTagCompletions(),\n validFor: /^<[:\\-\\.\\w\\u00b7-\\uffff]*$/\n };\n}\nlet _tagCompletions = null;\nfunction htmlTagCompletions() {\n if (_tagCompletions)\n return _tagCompletions;\n let result = htmlCompletionSource(new CompletionContext(EditorState.create({ extensions: htmlNoMatch }), 0, true));\n return _tagCompletions = result ? result.options : [];\n}\nconst nonPlainText = /code|horizontalrule|html|link|comment|processing|escape|entity|image|mark|url/i;\n/**\nAn extension that intercepts pastes when the pasted content looks\nlike a URL and the selection is non-empty and selects regular\ntext, making the selection a link with the pasted URL as target.\n*/\nconst pasteURLAsLink = /*@__PURE__*/EditorView.domEventHandlers({\n paste: (event, view) => {\n var _a;\n let { main } = view.state.selection;\n if (main.empty)\n return false;\n let link = (_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.getData(\"text/plain\");\n if (!link || !/^(https?:\\/\\/|mailto:|xmpp:|www\\.)/.test(link))\n return false;\n if (/^www\\./.test(link))\n link = \"https://\" + link;\n if (!markdownLanguage.isActiveAt(view.state, main.from, 1))\n return false;\n let tree = syntaxTree(view.state), crossesNode = false;\n // Verify that no nodes are started/ended between the selection\n // points, and we're not inside any non-plain-text construct.\n tree.iterate({\n from: main.from, to: main.to,\n enter: node => { if (node.from > main.from || nonPlainText.test(node.name))\n crossesNode = true; },\n leave: node => { if (node.to < main.to)\n crossesNode = true; }\n });\n if (crossesNode)\n return false;\n view.dispatch({\n changes: [{ from: main.from, insert: \"[\" }, { from: main.to, insert: `](${link})` }],\n userEvent: \"input.paste\",\n scrollIntoView: true\n });\n return true;\n }\n});\n\nexport { commonmarkLanguage, deleteMarkupBackward, insertNewlineContinueMarkup, insertNewlineContinueMarkupCommand, markdown, markdownKeymap, markdownLanguage, pasteURLAsLink };\n","import { ExternalTokenizer, ContextTracker, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst printKeyword = 1,\n indent = 194,\n dedent = 195,\n newline$1 = 196,\n blankLineStart = 197,\n newlineBracketed = 198,\n eof = 199,\n stringContent = 200,\n Escape = 2,\n replacementStart = 3,\n stringEnd = 201,\n ParenL = 24,\n ParenthesizedExpression = 25,\n TupleExpression = 49,\n ComprehensionExpression = 50,\n BracketL = 55,\n ArrayExpression = 56,\n ArrayComprehensionExpression = 57,\n BraceL = 59,\n DictionaryExpression = 60,\n DictionaryComprehensionExpression = 61,\n SetExpression = 62,\n SetComprehensionExpression = 63,\n ArgList = 65,\n subscript = 238,\n String$1 = 71,\n stringStart = 241,\n stringStartD = 242,\n stringStartL = 243,\n stringStartLD = 244,\n stringStartR = 245,\n stringStartRD = 246,\n stringStartRL = 247,\n stringStartRLD = 248,\n FormatString = 72,\n stringStartF = 249,\n stringStartFD = 250,\n stringStartFL = 251,\n stringStartFLD = 252,\n stringStartFR = 253,\n stringStartFRD = 254,\n stringStartFRL = 255,\n stringStartFRLD = 256,\n FormatReplacement = 73,\n nestedFormatReplacement = 77,\n importList = 263,\n TypeParamList = 112,\n ParamList = 130,\n SequencePattern = 151,\n MappingPattern = 152,\n PatternArgList = 155;\n\nconst newline = 10, carriageReturn = 13, space = 32, tab = 9, hash = 35, parenOpen = 40, dot = 46,\n braceOpen = 123, braceClose = 125, singleQuote = 39, doubleQuote = 34, backslash = 92,\n letter_o = 111, letter_x = 120, letter_N = 78, letter_u = 117, letter_U = 85;\n\nconst bracketed = new Set([\n ParenthesizedExpression, TupleExpression, ComprehensionExpression, importList, ArgList, ParamList,\n ArrayExpression, ArrayComprehensionExpression, subscript,\n SetExpression, SetComprehensionExpression, FormatString, FormatReplacement, nestedFormatReplacement,\n DictionaryExpression, DictionaryComprehensionExpression,\n SequencePattern, MappingPattern, PatternArgList, TypeParamList\n]);\n\nfunction isLineBreak(ch) {\n return ch == newline || ch == carriageReturn\n}\n\nfunction isHex(ch) {\n return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102\n}\n\nconst newlines = new ExternalTokenizer((input, stack) => {\n let prev;\n if (input.next < 0) {\n input.acceptToken(eof);\n } else if (stack.context.flags & cx_Bracketed) {\n if (isLineBreak(input.next)) input.acceptToken(newlineBracketed, 1);\n } else if (((prev = input.peek(-1)) < 0 || isLineBreak(prev)) &&\n stack.canShift(blankLineStart)) {\n let spaces = 0;\n while (input.next == space || input.next == tab) { input.advance(); spaces++; }\n if (input.next == newline || input.next == carriageReturn || input.next == hash)\n input.acceptToken(blankLineStart, -spaces);\n } else if (isLineBreak(input.next)) {\n input.acceptToken(newline$1, 1);\n }\n}, {contextual: true});\n\nconst indentation = new ExternalTokenizer((input, stack) => {\n let context = stack.context;\n if (context.flags) return\n let prev = input.peek(-1);\n if (prev == newline || prev == carriageReturn) {\n let depth = 0, chars = 0;\n for (;;) {\n if (input.next == space) depth++;\n else if (input.next == tab) depth += 8 - (depth % 8);\n else break\n input.advance();\n chars++;\n }\n if (depth != context.indent &&\n input.next != newline && input.next != carriageReturn && input.next != hash) {\n if (depth < context.indent) input.acceptToken(dedent, -chars);\n else input.acceptToken(indent);\n }\n }\n});\n\n// Flags used in Context objects\nconst cx_Bracketed = 1, cx_String = 2, cx_DoubleQuote = 4, cx_Long = 8, cx_Raw = 16, cx_Format = 32;\n\nfunction Context(parent, indent, flags) {\n this.parent = parent;\n this.indent = indent;\n this.flags = flags;\n this.hash = (parent ? parent.hash + parent.hash << 8 : 0) + indent + (indent << 4) + flags + (flags << 6);\n}\n\nconst topIndent = new Context(null, 0, 0);\n\nfunction countIndent(space) {\n let depth = 0;\n for (let i = 0; i < space.length; i++)\n depth += space.charCodeAt(i) == tab ? 8 - (depth % 8) : 1;\n return depth\n}\n\nconst stringFlags = new Map([\n [stringStart, 0],\n [stringStartD, cx_DoubleQuote],\n [stringStartL, cx_Long],\n [stringStartLD, cx_Long | cx_DoubleQuote],\n [stringStartR, cx_Raw],\n [stringStartRD, cx_Raw | cx_DoubleQuote],\n [stringStartRL, cx_Raw | cx_Long],\n [stringStartRLD, cx_Raw | cx_Long | cx_DoubleQuote],\n [stringStartF, cx_Format],\n [stringStartFD, cx_Format | cx_DoubleQuote],\n [stringStartFL, cx_Format | cx_Long],\n [stringStartFLD, cx_Format | cx_Long | cx_DoubleQuote],\n [stringStartFR, cx_Format | cx_Raw],\n [stringStartFRD, cx_Format | cx_Raw | cx_DoubleQuote],\n [stringStartFRL, cx_Format | cx_Raw | cx_Long],\n [stringStartFRLD, cx_Format | cx_Raw | cx_Long | cx_DoubleQuote]\n].map(([term, flags]) => [term, flags | cx_String]));\n\nconst trackIndent = new ContextTracker({\n start: topIndent,\n reduce(context, term, _, input) {\n if ((context.flags & cx_Bracketed) && bracketed.has(term) ||\n (term == String$1 || term == FormatString) && (context.flags & cx_String))\n return context.parent\n return context\n },\n shift(context, term, stack, input) {\n if (term == indent)\n return new Context(context, countIndent(input.read(input.pos, stack.pos)), 0)\n if (term == dedent)\n return context.parent\n if (term == ParenL || term == BracketL || term == BraceL || term == replacementStart)\n return new Context(context, 0, cx_Bracketed)\n if (stringFlags.has(term))\n return new Context(context, 0, stringFlags.get(term) | (context.flags & cx_Bracketed))\n return context\n },\n hash(context) { return context.hash }\n});\n\nconst legacyPrint = new ExternalTokenizer(input => {\n for (let i = 0; i < 5; i++) {\n if (input.next != \"print\".charCodeAt(i)) return\n input.advance();\n }\n if (/\\w/.test(String.fromCharCode(input.next))) return\n for (let off = 0;; off++) {\n let next = input.peek(off);\n if (next == space || next == tab) continue\n if (next != parenOpen && next != dot && next != newline && next != carriageReturn && next != hash)\n input.acceptToken(printKeyword);\n return\n }\n});\n\nconst strings = new ExternalTokenizer((input, stack) => {\n let {flags} = stack.context;\n let quote = (flags & cx_DoubleQuote) ? doubleQuote : singleQuote;\n let long = (flags & cx_Long) > 0;\n let escapes = !(flags & cx_Raw);\n let format = (flags & cx_Format) > 0;\n\n let start = input.pos;\n for (;;) {\n if (input.next < 0) {\n break\n } else if (format && input.next == braceOpen) {\n if (input.peek(1) == braceOpen) {\n input.advance(2);\n } else {\n if (input.pos == start) {\n input.acceptToken(replacementStart, 1);\n return\n }\n break\n }\n } else if (escapes && input.next == backslash) {\n if (input.pos == start) {\n input.advance();\n let escaped = input.next;\n if (escaped >= 0) {\n input.advance();\n skipEscape(input, escaped);\n }\n input.acceptToken(Escape);\n return\n }\n break\n } else if (input.next == backslash && !escapes && input.peek(1) > -1) {\n // Raw strings still ignore escaped quotes, weirdly.\n input.advance(2);\n } else if (input.next == quote && (!long || input.peek(1) == quote && input.peek(2) == quote)) {\n if (input.pos == start) {\n input.acceptToken(stringEnd, long ? 3 : 1);\n return\n }\n break\n } else if (input.next == newline) {\n if (long) {\n input.advance();\n } else if (input.pos == start) {\n input.acceptToken(stringEnd);\n return\n }\n break\n } else {\n input.advance();\n }\n }\n if (input.pos > start) input.acceptToken(stringContent);\n});\n\nfunction skipEscape(input, ch) {\n if (ch == letter_o) {\n for (let i = 0; i < 2 && input.next >= 48 && input.next <= 55; i++) input.advance();\n } else if (ch == letter_x) {\n for (let i = 0; i < 2 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_u) {\n for (let i = 0; i < 4 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_U) {\n for (let i = 0; i < 8 && isHex(input.next); i++) input.advance();\n } else if (ch == letter_N) {\n if (input.next == braceOpen) {\n input.advance();\n while (input.next >= 0 && input.next != braceClose && input.next != singleQuote &&\n input.next != doubleQuote && input.next != newline) input.advance();\n if (input.next == braceClose) input.advance();\n }\n }\n}\n\nconst pythonHighlighting = styleTags({\n \"async \\\"*\\\" \\\"**\\\" FormatConversion FormatSpec\": tags.modifier,\n \"for while if elif else try except finally return raise break continue with pass assert await yield match case\": tags.controlKeyword,\n \"in not and or is del\": tags.operatorKeyword,\n \"from def class global nonlocal lambda\": tags.definitionKeyword,\n import: tags.moduleKeyword,\n \"with as print\": tags.keyword,\n Boolean: tags.bool,\n None: tags.null,\n VariableName: tags.variableName,\n \"CallExpression/VariableName\": tags.function(tags.variableName),\n \"FunctionDefinition/VariableName\": tags.function(tags.definition(tags.variableName)),\n \"ClassDefinition/VariableName\": tags.definition(tags.className),\n PropertyName: tags.propertyName,\n \"CallExpression/MemberExpression/PropertyName\": tags.function(tags.propertyName),\n Comment: tags.lineComment,\n Number: tags.number,\n String: tags.string,\n FormatString: tags.special(tags.string),\n Escape: tags.escape,\n UpdateOp: tags.updateOperator,\n \"ArithOp!\": tags.arithmeticOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n AssignOp: tags.definitionOperator,\n Ellipsis: tags.punctuation,\n At: tags.meta,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \".\": tags.derefOperator,\n \", ;\": tags.separator\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,await:44, or:54, and:56, in:60, not:62, is:64, if:70, else:72, lambda:76, yield:94, from:96, async:102, for:104, None:162, True:164, False:164, del:178, pass:182, break:186, continue:190, return:194, raise:202, import:206, as:208, global:212, nonlocal:214, assert:218, type:223, elif:236, while:240, try:246, except:248, finally:250, with:254, def:258, class:268, match:279, case:285};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyO<POWO,5:aOOQS,5:a,5:aO<[QdO'#HwOOOW'#Dw'#DwOOOW'#Fz'#FzO<lOWO,5:bOOQS,5:b,5:bOOQS'#F}'#F}O<zQtO,5:iO?lQtO,5=`O@VQ#xO,5=`O@vQtO,5=`OOQS,5:},5:}OA_QeO'#GWOBqQdO,5;^OOQV,5=^,5=^OB|QtO'#IPOCkQdO,5;tOOQS-E:[-E:[OOQV,5;s,5;sO4dQdO'#FQOOQV-E9o-E9oOCsQtO,59]OEzQtO,59iOFeQdO'#HVOFpQdO'#HVO1XQdO'#HVOF{QdO'#DTOGTQdO,59mOGYQdO'#HZO'vQdO'#HZO0rQdO,5=tOOQS,5=t,5=tO0rQdO'#EROOQS'#ES'#ESOGwQdO'#GPOHXQdO,58|OHXQdO,58|O*xQdO,5:oOHgQtO'#H]OOQS,5:r,5:rOOQS,5:z,5:zOHzQdO,5;OOI]QdO'#IOO1XQdO'#H}OOQS,5;Q,5;QOOQS'#GT'#GTOIqQtO,5;QOJPQdO,5;QOJUQdO'#IQOOQS,5;T,5;TOJdQdO'#H|OOQS,5;W,5;WOJuQdO,5;YO4iQdO,5;`O4iQdO,5;cOJ}QtO'#ITO'vQdO'#ITOKXQdO,5;eO4VQdO,5;eO0rQdO,5;jO1XQdO,5;lOK^QeO'#EuOLjQgO,5;fO!!kQdO'#IUO4iQdO,5;jO!!vQdO,5;lO!#OQdO,5;qO!#ZQtO,5;vO'vQdO,5;vPOOO,5=[,5=[P!#bOSO,5=[P!#jOdO,5=[O!&bQtO1G.jO!&iQtO1G.jO!)YQtO1G.jO!)dQtO1G.jO!+}QtO1G.jO!,bQtO1G.jO!,uQdO'#HcO!-TQtO'#GuO0rQdO'#HcO!-_QdO'#HbOOQS,5:Z,5:ZO!-gQdO,5:ZO!-lQdO'#HeO!-wQdO'#HeO!.[QdO,5>OOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5<jOOQS,5<j,5<jOOQS-E9|-E9|OOQS,5<r,5<rOOQS-E:U-E:UOOQV1G0x1G0xO1XQdO'#GRO!7dQtO,5>kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5<k,5<kOOQS-E9}-E9}O!9wQdO1G.hOOQS1G0Z1G0ZO!:VQdO,5=wO!:gQdO,5=wO0rQdO1G0jO0rQdO1G0jO!:xQdO,5>jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!<RQdO,5>lO!<aQdO,5>lO!<oQdO,5>hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5<m,5<mOOQS-E:P-E:POOQS7+&z7+&zOOQS1G3]1G3]OOQS,5<^,5<^OOQS-E9p-E9pOOQS7+$s7+$sO#)bQdO,5=`O#){QdO,5=`O#*^QtO,5<aO#*qQdO1G3cOOQS-E9s-E9sOOQS7+&U7+&UO#+RQdO7+&UO#+aQdO,5<nO#+uQdO1G4UOOQS-E:Q-E:QO#,WQdO1G4UOOQS1G4T1G4TOOQS7+&W7+&WO#,iQdO7+&WOOQS,5<p,5<pO#,tQdO1G4WOOQS-E:S-E:SOOQS,5<l,5<lO#-SQdO1G4SOOQS-E:O-E:OO1XQdO'#EqO#-jQdO'#EqO#-uQdO'#IRO#-}QdO,5;[OOQS7+&`7+&`O0rQdO7+&`O#.SQgO7+&fO!JmQdO'#GXO4iQdO7+&fO4iQdO7+&iO#2QQtO,5<tO'vQdO,5<tO#2[QdO1G4ZOOQS-E:W-E:WO#2fQdO1G4ZO4iQdO7+&kO0rQdO7+&kOOQV7+&p7+&pO!KrQ!fO7+&rO!KzQdO7+&rO`QeO1G0{OOQV-E:X-E:XO4iQdO7+&lO4iQdO7+&lOOQV,5<u,5<uO#2nQdO,5<uO!JmQdO,5<uOOQV7+&l7+&lO#2yQgO7+&lO#6tQdO,5<vO#7PQdO1G4[OOQS-E:Y-E:YO#7^QdO1G4[O#7fQdO'#IWO#7tQdO'#IWO1XQdO'#IWOOQS'#IW'#IWO#8PQdO'#IVOOQS,5;n,5;nO#8XQdO,5;nO0rQdO'#FUOOQV7+&r7+&rO4iQdO7+&rOOQV7+&w7+&wO4iQdO7+&wO#8^QfO,5;xOOQV7+&|7+&|POOO7+(b7+(bO#8cQdO1G3iOOQS,5<c,5<cO#8qQdO1G3hOOQS-E9u-E9uO#9UQdO,5<dO#9aQdO,5<dO#9tQdO1G3kOOQS-E9v-E9vO#:UQdO1G3kO#:^QdO1G3kO#:nQdO1G3kO#:UQdO1G3kOOQS<<H[<<H[O#:yQtO1G1zOOQS<<Hk<<HkP#;WQdO'#FtO8vQdO1G3bO#;eQdO1G3bO#;jQdO<<HkOOQS<<Hl<<HlO#;zQdO7+)QOOQS<<Hs<<HsO#<[QtO1G1yP#<{QdO'#FsO#=YQdO7+)RO#=jQdO7+)RO#=rQdO<<HwO#=wQdO7+({OOQS<<Hy<<HyO#>nQdO,5<bO'vQdO,5<bOOQS-E9t-E9tOOQS<<Hw<<HwOOQS,5<g,5<gO0rQdO,5<gO#>sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<<IpO1XQdO1G2YP1XQdO'#GSO#AOQdO7+)pO#AaQdO7+)pOOQS<<Ir<<IrP1XQdO'#GUP0rQdO'#GQOOQS,5;],5;]O#ArQdO,5>mO#BQQdO,5>mOOQS1G0v1G0vOOQS<<Iz<<IzOOQV-E:V-E:VO4iQdO<<JQOOQV,5<s,5<sO4iQdO,5<sOOQV<<JQ<<JQOOQV<<JT<<JTO#BYQtO1G2`P#BdQdO'#GYO#BkQdO7+)uO#BuQgO<<JVO4iQdO<<JVOOQV<<J^<<J^O4iQdO<<J^O!KrQ!fO<<J^O#FpQgO7+&gOOQV<<JW<<JWO#FzQgO<<JWOOQV1G2a1G2aO1XQdO1G2aO#JuQdO1G2aO4iQdO<<JWO1XQdO1G2bP0rQdO'#G[O#KQQdO7+)vO#K_QdO7+)vOOQS'#FT'#FTO0rQdO,5>rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<<Jc<<JcO#LhQdO1G1dOOQS7+)T7+)TP#LmQdO'#FwO#L}QdO1G2OO#MbQdO1G2OO#MrQdO1G2OP#M}QdO'#FxO#N[QdO7+)VO#NlQdO7+)VO#NlQdO7+)VO#NtQdO7+)VO$ UQdO7+(|O8vQdO7+(|OOQSAN>VAN>VO$ oQdO<<LmOOQSAN>cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<<MT<<MTO$#nQdO7+(fOOQSAN?[AN?[OOQS7+'t7+'tO$$XQdO<<M[OOQS,5<q,5<qO$$jQdO1G4XOOQS-E:T-E:TOOQVAN?lAN?lOOQV1G2_1G2_O4iQdOAN?qO$$xQgOAN?qOOQVAN?xAN?xO4iQdOAN?xOOQV<<JR<<JRO4iQdOAN?rO4iQdO7+'{OOQV7+'{7+'{O1XQdO7+'{OOQVAN?rAN?rOOQS7+'|7+'|O$(sQdO<<MbOOQS1G4^1G4^O0rQdO1G4^OOQS,5<w,5<wO$)QQdO1G4]OOQS-E:Z-E:ZOOQU'#G_'#G_O$)cQfO7+'OO$)nQdO'#F_O$*uQdO7+'jO$+VQdO7+'jOOQS7+'j7+'jO$+bQdO<<LqO$+rQdO<<LqO$+rQdO<<LqO$+zQdO'#H^OOQS<<Lh<<LhO$,UQdO<<LhOOQS7+'h7+'hOOQS'#D|'#D|OOOO1G4R1G4RO$,oQdO1G4RO$,wQdO1G4RP!=hQdO'#GVOOQVG25]G25]O4iQdOG25]OOQVG25dG25dOOQVG25^G25^OOQV<<Kg<<KgO4iQdO<<KgOOQS7+)x7+)xP$-SQdO'#G]OOQU-E:]-E:]OOQV<<Jj<<JjO$-vQtO'#FaOOQS'#Fc'#FcO$.WQdO'#FbO$.xQdO'#FbOOQS'#Fb'#FbO$.}QdO'#IYO$)nQdO'#FiO$)nQdO'#FiO$/fQdO'#FjO$)nQdO'#FkO$/mQdO'#IZOOQS'#IZ'#IZO$0[QdO,5;yOOQS<<KU<<KUO$0dQdO<<KUO$0tQdOANB]O$1UQdOANB]O$1^QdO'#H_OOQS'#H_'#H_O1sQdO'#DcO$1wQdO,5=xOOQSANBSANBSOOOO7+)m7+)mO$2`QdO7+)mOOQVLD*wLD*wOOQVANARANARO5uQ!fO'#GaO$2hQtO,5<SO$)nQdO'#FmOOQS,5<W,5<WOOQS'#Fd'#FdO$3YQdO,5;|O$3_QdO,5;|OOQS'#Fg'#FgO$)nQdO'#G`O$4PQdO,5<QO$4kQdO,5>tO$4{QdO,5>tO1XQdO,5<PO$5^QdO,5<TO$5cQdO,5<TO$)nQdO'#I[O$5hQdO'#I[O$5mQdO,5<UOOQS,5<V,5<VO0rQdO'#FpOOQU1G1e1G1eO4iQdO1G1eOOQSAN@pAN@pO$5rQdOG27wO$6SQdO,59}OOQS1G3d1G3dOOOO<<MX<<MXOOQS,5<{,5<{OOQS-E:_-E:_O$6XQtO'#FaO$6`QdO'#I]O$6nQdO'#I]O$6vQdO,5<XOOQS1G1h1G1hO$6{QdO1G1hO$7QQdO,5<zOOQS-E:^-E:^O$7lQdO,5=OO$8TQdO1G4`OOQS-E:b-E:bOOQS1G1k1G1kOOQS1G1o1G1oO$8eQdO,5>vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5<YO$8sQdO,5>wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5<ZP$)nQdO'#GcO$;XQdO1G2hO$)nQdO1G2hP$;gQdO'#GbO$;nQdO<<MhO$;xQdO1G1uO$<WQdO7+(SO8vQdO'#C}O8vQdO,59bO8vQdO,59bO8vQdO,59bO$<fQtO,5=`O8vQdO1G.|O0rQdO1G/XO0rQdO7+$pP$<yQdO'#GOO'vQdO'#GtO$=WQdO,59bO$=]QdO,59bO$=dQdO,59mO$=iQdO1G/UO1sQdO'#DRO8vQdO,59j\",\n stateData: \"$>S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~\",\n goto: \"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!<S!<VP!<_!<h!=d!=g]eOn#g$j)t,P'}`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r{!cQ#c#p$R$d$p%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g}!dQ#c#p$R$d$p$u%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!P!eQ#c#p$R$d$p$u$v%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!R!fQ#c#p$R$d$p$u$v$w%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!T!gQ#c#p$R$d$p$u$v$w$x%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!V!hQ#c#p$R$d$p$u$v$w$x$y%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!Z!hQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g'}TOTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r&eVOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0n0r%oXOYZ[dnrxy}!P!Q!U!i!k#[#d#g#y#{#}$Q$h$j$}%S%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/V/Z0i0j0kQ#vqQ/[.kR0o0q't`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rh#jhz{$W$Z&l&q)S)X+f+g-RW#rq&].k0qQ$]|Q$a!OQ$n!VQ$o!WW$|!i'm*d,gS&[#s#tQ'S$iQ(s&UQ)U&nU)Y&s)Z+jW)a&w+m-T-{Q*Q']W*R'_,`-h.TQ+l)`S,_*S*TQ-Q+eQ-_,TQ-c,WQ.R-al.W-l.^._.a.z.|/R/j/o/t/y0U0Z0^Q/S.`Q/a.tQ/l/OU0P/u0S0[X0V/z0W0_0`R&Z#r!_!wYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZR%^!vQ!{YQ%x#[Q&d#}Q&g$QR,{+YT.j-s/s!Y!jQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v0gQ&X#kQ'c$oR*^'dR'l$|Q%V!mR/_.r'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rS#a_#b!P.[-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rT#a_#bT#^^#_R(o%xa(l%x(n(o+`,{-y-z.oT+[(k+]R-z,{Q$PsQ+l)aQ,^*RR-e,_X#}s$O$P&fQ&y$aQ'a$nQ'd$oR)s'SQ)b&wV-S+m-T-{ZgOn$j)t,PXkOn)t,PQ$k!TQ&z$bQ&{$cQ'^$mQ'b$oQ)q'RQ)x'WQ){'XQ)|'YQ*Z'`S*]'c'dQ+s)gQ+u)hQ+v)iQ+z)oS+|)r*[Q,Q)vQ,R)wS,S)y)zQ,d*^Q-V+rQ-W+tQ-Y+{S-Z+},OQ-`,UQ-b,VQ-|-XQ.O-[Q.P-^Q.Q-_Q.p-}Q.q.RQ/W.dR/r/XWkOn)t,PR#mjQ'`$nS)r'S'aR,O)sQ,]*RR-f,^Q*['`Q+})rR-[,OZiOjn)t,PQ'f$pR*`'gT-j,e-ku.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^t.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^Q/S.`X0V/z0W0_0`!P.Z-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`Q.w.YR/f.xg.z.].{/b/i/n/|0O0Q0]0a0bu.b-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^X.u.W.b/a0PR/c.tV0R/u0S0[R/X.dQnOS#on,PR,P)tQ&^#uR(x&^S%m#R#wS(_%m(bT(b%p&`Q%a!yQ%h!}W(P%a%h(U(YQ(U%eR(Y%jQ&i$RR)O&iQ(e%qQ*{(`T+R(e*{Q'n%OR*e'nS'q%R%SY*i'q*j,m-q.hU*j'r's'tU,m*k*l*mS-q,n,oR.h-rQ#Y]R%t#YQ#_^R%y#_Q(h%vS+W(h+XR+X(iQ+](kR,|+]Q#b_R%{#bQ#ebQ%}#cW&Q#e%}({+bQ({&cR+b0gQ$OsS&e$O&fR&f$PQ&v$_R)_&vQ&V#jR(t&VQ&m$VS)T&m+hR+h)UQ$Z{R&p$ZQ&t$]R)[&tQ+n)bR-U+nQ#hfR&S#hQ)f&zR+q)fQ&}$dS)m&})nR)n'OQ'V$kR)u'VQ'[$lS*P'[,ZR,Z*QQ,a*VR-i,aWjOn)t,PR#ljQ-k,eR.U-kd.{.]/b/i/n/|0O0Q0]0a0bR/h.{U.s.W/a0PR/`.sQ/{/nS0X/{0YR0Y/|S/v/b/cR0T/vQ.}.]R/k.}R!ZPXmOn)t,PWlOn)t,PR'T$jYfOn$j)t,PR&R#g[sOn#g$j)t,PR&d#}&dQOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0n0rQ!nTQ#caQ#poU$Rt%c(SS$d!R$gQ$p!XQ$u!cQ$v!dQ$w!eQ$x!fQ$y!gQ$z!hQ%e!zQ%j#OQ%p#SQ%q#TQ&`#xQ'O$eQ'g$qQ(q&OU(|&h(}+cW)j&|)l+x+yQ*o'|Q*x(]Q+w)kQ,v+QR0g0lQ!yYQ!}ZQ$b!PQ$c!QQ%R!kQ't%S^'{%`%g(O(W*q*t*v^*f'p*h,k,l-p.g/ZQ*l'rQ*m'sQ+t)gQ,j*gQ,n*kQ-n,hQ-o,iQ-r,oQ.e-mR/Y.f[bOn#g$j)t,P!^!vYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZQ#R[Q#fdS#wrxQ$UyW$_}$Q'P)pS$l!U$hW${!i'm*d,gS%v#[+Y`&P#d%|(p(r(z+a-O0kQ&a#yQ&b#{Q&c#}Q'j$}Q'z%^W([%l(^*y*}Q(`%nQ(i%wQ(v&ZS(y&_0iQ)P&jQ)Q&kU)]&u)^+kQ)d&xQ)y'WY)}'Z*O,X,Y-dQ*b'lS*n'w0jW+P(d*z,s,wW+T(g+V,y,zQ+p)eQ,U)zQ,c*YQ,x+UQ-P+dQ-e,]Q-v,uQ.S-fR/q/VhUOn#d#g$j%|&_'w(p(r)t,P%U!uYZ[drxy}!P!Q!U!i!k#[#y#{#}$Q$h$}%S%^%`%g%l%n%w&Z&j&k&u&x'P'W'Z'l'm'p'r's(O(W(^(d(g(z)^)e)g)p)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/V/Z0i0j0kQ#qpW%W!o!s0d0nQ%X!pQ%Y!qQ%[!tQ%f0cS'v%Z0hQ'x0eQ'y0fQ,p*rQ-u,qS.i-s/sR0p0rU#uq.k0qR(w&][cOn#g$j)t,PZ!xY#[#}$Q+YQ#W[Q#zrR$TxQ%b!yQ%i!}Q%o#RQ'j${Q(V%eQ(Z%jQ(c%pQ(f%qQ*|(`Q,f*bQ-t,pQ.m-uR/].lQ$StQ(R%cR*s(SQ.l-sR/}/sR#QZR#V[R%Q!iQ%O!iV*c'm*d,g!Z!lQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v0gR%T!kT#]^#_Q%x#[R,{+YQ(m%xS+_(n(oQ,}+`Q-x,{S.n-y-zR/^.oT+Z(k+]Q$`}Q&g$QQ)o'PR+{)pQ$XzQ)W&qR+i)XQ$XzQ&o$WQ)W&qR+i)XQ#khW$Vz$W&q)XQ$[{Q&r$ZZ)R&l)S+f+g-RR$^|R)c&wXlOn)t,PQ$f!RR'Q$gQ$m!UR'R$hR*X'_Q*V'_V-g,`-h.TQ.d-lQ/P.^R/Q._U.]-l.^._Q/U.aQ/b.tQ/g.zU/i.|/j/yQ/n/RQ/|/oQ0O/tU0Q/u0S0[Q0]0UQ0a0ZR0b0^R/T.`R/d.t\",\n nodeNames: \"⚠ print Escape { Comment Script AssignStatement * BinaryExpression BitOp BitOp BitOp BitOp ArithOp ArithOp @ ArithOp ** UnaryExpression ArithOp BitOp AwaitExpression await ) ( ParenthesizedExpression BinaryExpression or and CompareOp in not is UnaryExpression ConditionalExpression if else LambdaExpression lambda ParamList VariableName AssignOp , : NamedExpression AssignOp YieldExpression yield from TupleExpression ComprehensionExpression async for LambdaExpression ] [ ArrayExpression ArrayComprehensionExpression } { DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression CallExpression ArgList AssignOp MemberExpression . PropertyName Number String FormatString FormatReplacement FormatSelfDoc FormatConversion FormatSpec FormatReplacement FormatSelfDoc ContinuedString Ellipsis None Boolean TypeDef AssignOp UpdateStatement UpdateOp ExpressionStatement DeleteStatement del PassStatement pass BreakStatement break ContinueStatement continue ReturnStatement return YieldStatement PrintStatement RaiseStatement raise ImportStatement import as ScopeStatement global nonlocal AssertStatement assert TypeDefinition type TypeParamList TypeParam StatementGroup ; IfStatement Body elif WhileStatement while ForStatement TryStatement try except finally WithStatement with FunctionDefinition def ParamList AssignOp TypeDef ClassDefinition class DecoratedStatement Decorator At MatchStatement match MatchBody MatchClause case CapturePattern LiteralPattern ArithOp ArithOp AsPattern OrPattern LogicOp AttributePattern SequencePattern MappingPattern StarPattern ClassPattern PatternArgList KeywordPattern KeywordPattern Guard\",\n maxTerm: 277,\n context: trackIndent,\n nodeProps: [\n [\"isolate\", -5,4,71,72,73,77,\"\"],\n [\"group\", -15,6,85,87,88,90,92,94,96,98,99,100,102,105,108,110,\"Statement Statement\",-22,8,18,21,25,40,49,50,56,57,60,61,62,63,64,67,70,71,72,79,80,81,82,\"Expression\",-10,114,116,119,121,122,126,128,133,135,138,\"Statement\",-9,143,144,147,148,150,151,152,153,154,\"Pattern\"],\n [\"openedBy\", 23,\"(\",54,\"[\",58,\"{\"],\n [\"closedBy\", 24,\")\",55,\"]\",59,\"}\"]\n ],\n propSources: [pythonHighlighting],\n skippedNodes: [0,4],\n repeatNodeCount: 34,\n tokenData: \"!2|~R!`OX%TXY%oY[%T[]%o]p%Tpq%oqr'ars)Yst*xtu%Tuv,dvw-hwx.Uxy/tyz0[z{0r{|2S|}2p}!O3W!O!P4_!P!Q:Z!Q!R;k!R![>_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T\",\n tokenizers: [legacyPrint, indentation, newlines, strings, 0, 1, 2, 3, 4],\n topRules: {\"Script\":[0,5]},\n specialized: [{term: 221, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 7668\n});\n\nexport { parser };\n","import { parser } from '@lezer/python';\nimport { syntaxTree, LRLanguage, indentNodeProp, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\nimport { NodeWeakMap, IterMode } from '@lezer/common';\nimport { snippetCompletion, ifNotIn, completeFromList } from '@codemirror/autocomplete';\n\nconst cache = /*@__PURE__*/new NodeWeakMap();\nconst ScopeNodes = /*@__PURE__*/new Set([\n \"Script\", \"Body\",\n \"FunctionDefinition\", \"ClassDefinition\", \"LambdaExpression\",\n \"ForStatement\", \"MatchClause\"\n]);\nfunction defID(type) {\n return (node, def, outer) => {\n if (outer)\n return false;\n let id = node.node.getChild(\"VariableName\");\n if (id)\n def(id, type);\n return true;\n };\n}\nconst gatherCompletions = {\n FunctionDefinition: /*@__PURE__*/defID(\"function\"),\n ClassDefinition: /*@__PURE__*/defID(\"class\"),\n ForStatement(node, def, outer) {\n if (outer)\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \"in\")\n break;\n }\n },\n ImportStatement(_node, def) {\n var _a, _b;\n let { node } = _node;\n let isFrom = ((_a = node.firstChild) === null || _a === void 0 ? void 0 : _a.name) == \"from\";\n for (let ch = node.getChild(\"import\"); ch; ch = ch.nextSibling) {\n if (ch.name == \"VariableName\" && ((_b = ch.nextSibling) === null || _b === void 0 ? void 0 : _b.name) != \"as\")\n def(ch, isFrom ? \"variable\" : \"namespace\");\n }\n },\n AssignStatement(node, def) {\n for (let child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\")\n def(child, \"variable\");\n else if (child.name == \":\" || child.name == \"AssignOp\")\n break;\n }\n },\n ParamList(node, def) {\n for (let prev = null, child = node.node.firstChild; child; child = child.nextSibling) {\n if (child.name == \"VariableName\" && (!prev || !/\\*|AssignOp/.test(prev.name)))\n def(child, \"variable\");\n prev = child;\n }\n },\n CapturePattern: /*@__PURE__*/defID(\"variable\"),\n AsPattern: /*@__PURE__*/defID(\"variable\"),\n __proto__: null\n};\nfunction getScope(doc, node) {\n let cached = cache.get(node);\n if (cached)\n return cached;\n let completions = [], top = true;\n function def(node, type) {\n let name = doc.sliceString(node.from, node.to);\n completions.push({ label: name, type });\n }\n node.cursor(IterMode.IncludeAnonymous).iterate(node => {\n if (node.name) {\n let gather = gatherCompletions[node.name];\n if (gather && gather(node, def, top) || !top && ScopeNodes.has(node.name))\n return false;\n top = false;\n }\n else if (node.to - node.from > 8192) {\n // Allow caching for bigger internal nodes\n for (let c of getScope(doc, node.node))\n completions.push(c);\n return false;\n }\n });\n cache.set(node, completions);\n return completions;\n}\nconst Identifier = /^[\\w\\xa1-\\uffff][\\w\\d\\xa1-\\uffff]*$/;\nconst dontComplete = [\"String\", \"FormatString\", \"Comment\", \"PropertyName\"];\n/**\nCompletion source that looks up locally defined names in\nPython code.\n*/\nfunction localCompletionSource(context) {\n let inner = syntaxTree(context.state).resolveInner(context.pos, -1);\n if (dontComplete.indexOf(inner.name) > -1)\n return null;\n let isWord = inner.name == \"VariableName\" ||\n inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));\n if (!isWord && !context.explicit)\n return null;\n let options = [];\n for (let pos = inner; pos; pos = pos.parent) {\n if (ScopeNodes.has(pos.name))\n options = options.concat(getScope(context.state.doc, pos));\n }\n return {\n options,\n from: isWord ? inner.from : context.pos,\n validFor: Identifier\n };\n}\nconst globals = /*@__PURE__*/[\n \"__annotations__\", \"__builtins__\", \"__debug__\", \"__doc__\", \"__import__\", \"__name__\",\n \"__loader__\", \"__package__\", \"__spec__\",\n \"False\", \"None\", \"True\"\n].map(n => ({ label: n, type: \"constant\" })).concat(/*@__PURE__*/[\n \"ArithmeticError\", \"AssertionError\", \"AttributeError\", \"BaseException\", \"BlockingIOError\",\n \"BrokenPipeError\", \"BufferError\", \"BytesWarning\", \"ChildProcessError\", \"ConnectionAbortedError\",\n \"ConnectionError\", \"ConnectionRefusedError\", \"ConnectionResetError\", \"DeprecationWarning\",\n \"EOFError\", \"Ellipsis\", \"EncodingWarning\", \"EnvironmentError\", \"Exception\", \"FileExistsError\",\n \"FileNotFoundError\", \"FloatingPointError\", \"FutureWarning\", \"GeneratorExit\", \"IOError\",\n \"ImportError\", \"ImportWarning\", \"IndentationError\", \"IndexError\", \"InterruptedError\",\n \"IsADirectoryError\", \"KeyError\", \"KeyboardInterrupt\", \"LookupError\", \"MemoryError\",\n \"ModuleNotFoundError\", \"NameError\", \"NotADirectoryError\", \"NotImplemented\", \"NotImplementedError\",\n \"OSError\", \"OverflowError\", \"PendingDeprecationWarning\", \"PermissionError\", \"ProcessLookupError\",\n \"RecursionError\", \"ReferenceError\", \"ResourceWarning\", \"RuntimeError\", \"RuntimeWarning\",\n \"StopAsyncIteration\", \"StopIteration\", \"SyntaxError\", \"SyntaxWarning\", \"SystemError\",\n \"SystemExit\", \"TabError\", \"TimeoutError\", \"TypeError\", \"UnboundLocalError\", \"UnicodeDecodeError\",\n \"UnicodeEncodeError\", \"UnicodeError\", \"UnicodeTranslateError\", \"UnicodeWarning\", \"UserWarning\",\n \"ValueError\", \"Warning\", \"ZeroDivisionError\"\n].map(n => ({ label: n, type: \"type\" }))).concat(/*@__PURE__*/[\n \"bool\", \"bytearray\", \"bytes\", \"classmethod\", \"complex\", \"float\", \"frozenset\", \"int\", \"list\",\n \"map\", \"memoryview\", \"object\", \"range\", \"set\", \"staticmethod\", \"str\", \"super\", \"tuple\", \"type\"\n].map(n => ({ label: n, type: \"class\" }))).concat(/*@__PURE__*/[\n \"abs\", \"aiter\", \"all\", \"anext\", \"any\", \"ascii\", \"bin\", \"breakpoint\", \"callable\", \"chr\",\n \"compile\", \"delattr\", \"dict\", \"dir\", \"divmod\", \"enumerate\", \"eval\", \"exec\", \"exit\", \"filter\",\n \"format\", \"getattr\", \"globals\", \"hasattr\", \"hash\", \"help\", \"hex\", \"id\", \"input\", \"isinstance\",\n \"issubclass\", \"iter\", \"len\", \"license\", \"locals\", \"max\", \"min\", \"next\", \"oct\", \"open\",\n \"ord\", \"pow\", \"print\", \"property\", \"quit\", \"repr\", \"reversed\", \"round\", \"setattr\", \"slice\",\n \"sorted\", \"sum\", \"vars\", \"zip\"\n].map(n => ({ label: n, type: \"function\" })));\nconst snippets = [\n /*@__PURE__*/snippetCompletion(\"def ${name}(${params}):\\n\\t${}\", {\n label: \"def\",\n detail: \"function\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"for ${name} in ${collection}:\\n\\t${}\", {\n label: \"for\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"while ${}:\\n\\t${}\", {\n label: \"while\",\n detail: \"loop\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"try:\\n\\t${}\\nexcept ${error}:\\n\\t${}\", {\n label: \"try\",\n detail: \"/ except block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t\\n\", {\n label: \"if\",\n detail: \"block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"if ${}:\\n\\t${}\\nelse:\\n\\t${}\", {\n label: \"if\",\n detail: \"/ else block\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"class ${name}:\\n\\tdef __init__(self, ${params}):\\n\\t\\t\\t${}\", {\n label: \"class\",\n detail: \"definition\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"import ${module}\", {\n label: \"import\",\n detail: \"statement\",\n type: \"keyword\"\n }),\n /*@__PURE__*/snippetCompletion(\"from ${module} import ${names}\", {\n label: \"from\",\n detail: \"import\",\n type: \"keyword\"\n })\n];\n/**\nAutocompletion for built-in Python globals and keywords.\n*/\nconst globalCompletion = /*@__PURE__*/ifNotIn(dontComplete, /*@__PURE__*/completeFromList(/*@__PURE__*/globals.concat(snippets)));\n\nfunction innerBody(context) {\n let { node, pos } = context;\n let lineIndent = context.lineIndent(pos, -1);\n let found = null;\n for (;;) {\n let before = node.childBefore(pos);\n if (!before) {\n break;\n }\n else if (before.name == \"Comment\") {\n pos = before.from;\n }\n else if (before.name == \"Body\" || before.name == \"MatchBody\") {\n if (context.baseIndentFor(before) + context.unit <= lineIndent)\n found = before;\n node = before;\n }\n else if (before.name == \"MatchClause\") {\n node = before;\n }\n else if (before.type.is(\"Statement\")) {\n node = before;\n }\n else {\n break;\n }\n }\n return found;\n}\nfunction indentBody(context, node) {\n let base = context.baseIndentFor(node);\n let line = context.lineAt(context.pos, -1), to = line.from + line.text.length;\n // Don't consider blank, deindented lines at the end of the\n // block part of the block\n if (/^\\s*($|#)/.test(line.text) &&\n context.node.to < to + 100 &&\n !/\\S/.test(context.state.sliceDoc(to, context.node.to)) &&\n context.lineIndent(context.pos, -1) <= base)\n return null;\n // A normally deindenting keyword that appears at a higher\n // indentation than the block should probably be handled by the next\n // level\n if (/^\\s*(else:|elif |except |finally:|case\\s+[^=:]+:)/.test(context.textAfter) && context.lineIndent(context.pos, -1) > base)\n return null;\n return base + context.unit;\n}\n/**\nA language provider based on the [Lezer Python\nparser](https://github.com/lezer-parser/python), extended with\nhighlighting and indentation information.\n*/\nconst pythonLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"python\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Body: context => {\n var _a;\n let body = /^\\s*(#|$)/.test(context.textAfter) && innerBody(context) || context.node;\n return (_a = indentBody(context, body)) !== null && _a !== void 0 ? _a : context.continue();\n },\n MatchBody: context => {\n var _a;\n let inner = innerBody(context);\n return (_a = indentBody(context, inner || context.node)) !== null && _a !== void 0 ? _a : context.continue();\n },\n IfStatement: cx => /^\\s*(else:|elif )/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n \"ForStatement WhileStatement\": cx => /^\\s*else:/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n TryStatement: cx => /^\\s*(except[ :]|finally:|else:)/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),\n MatchStatement: cx => {\n if (/^\\s*case /.test(cx.textAfter))\n return cx.baseIndent + cx.unit;\n return cx.continue();\n },\n \"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression\": /*@__PURE__*/delimitedIndent({ closing: \")\" }),\n \"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n \"ArrayExpression ArrayComprehensionExpression\": /*@__PURE__*/delimitedIndent({ closing: \"]\" }),\n MemberExpression: cx => cx.baseIndent + cx.unit,\n \"String FormatString\": () => null,\n Script: context => {\n var _a;\n let inner = innerBody(context);\n return (_a = (inner && indentBody(context, inner))) !== null && _a !== void 0 ? _a : context.continue();\n },\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"ArrayExpression DictionaryExpression SetExpression TupleExpression\": foldInside,\n Body: (node, state) => ({ from: node.from + 1, to: node.to - (node.to == state.doc.length ? 0 : 1) }),\n \"String FormatString\": (node, state) => ({ from: state.doc.lineAt(node.from).to, to: node.to })\n })\n ],\n }),\n languageData: {\n closeBrackets: {\n brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"'''\", '\"\"\"'],\n stringPrefixes: [\"f\", \"fr\", \"rf\", \"r\", \"u\", \"b\", \"br\", \"rb\",\n \"F\", \"FR\", \"RF\", \"R\", \"U\", \"B\", \"BR\", \"RB\"]\n },\n commentTokens: { line: \"#\" },\n // Indent logic logic are triggered upon below input patterns\n indentOnInput: /^\\s*([\\}\\]\\)]|else:|elif |except |finally:|case\\s+[^:]*:?)$/,\n }\n});\n/**\nPython language support.\n*/\nfunction python() {\n return new LanguageSupport(pythonLanguage, [\n pythonLanguage.data.of({ autocomplete: localCompletionSource }),\n pythonLanguage.data.of({ autocomplete: globalCompletion }),\n ]);\n}\n\nexport { globalCompletion, localCompletionSource, python, pythonLanguage };\n","import { ContextTracker, ExternalTokenizer, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst StartTag = 1,\n StartCloseTag = 2,\n MissingCloseTag = 3,\n mismatchedStartCloseTag = 4,\n incompleteStartCloseTag = 5,\n commentContent$1 = 36,\n piContent$1 = 37,\n cdataContent$1 = 38,\n Element = 11,\n OpenTag = 13;\n\n/* Hand-written tokenizer for XML tag matching. */\n\nfunction nameChar(ch) {\n return ch == 45 || ch == 46 || ch == 58 || ch >= 65 && ch <= 90 || ch == 95 || ch >= 97 && ch <= 122 || ch >= 161\n}\n\nfunction isSpace(ch) {\n return ch == 9 || ch == 10 || ch == 13 || ch == 32\n}\n\nlet cachedName = null, cachedInput = null, cachedPos = 0;\nfunction tagNameAfter(input, offset) {\n let pos = input.pos + offset;\n if (cachedInput == input && cachedPos == pos) return cachedName\n while (isSpace(input.peek(offset))) offset++;\n let name = \"\";\n for (;;) {\n let next = input.peek(offset);\n if (!nameChar(next)) break\n name += String.fromCharCode(next);\n offset++;\n }\n cachedInput = input; cachedPos = pos;\n return cachedName = name || null\n}\n\nfunction ElementContext(name, parent) {\n this.name = name;\n this.parent = parent;\n}\n\nconst elementContext = new ContextTracker({\n start: null,\n shift(context, term, stack, input) {\n return term == StartTag ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n reduce(context, term) {\n return term == Element && context ? context.parent : context\n },\n reuse(context, node, _stack, input) {\n let type = node.type.id;\n return type == StartTag || type == OpenTag\n ? new ElementContext(tagNameAfter(input, 1) || \"\", context) : context\n },\n strict: false\n});\n\nconst startTag = new ExternalTokenizer((input, stack) => {\n if (input.next != 60 /* '<' */) return\n input.advance();\n if (input.next == 47 /* '/' */) {\n input.advance();\n let name = tagNameAfter(input, 0);\n if (!name) return input.acceptToken(incompleteStartCloseTag)\n if (stack.context && name == stack.context.name) return input.acceptToken(StartCloseTag)\n for (let cx = stack.context; cx; cx = cx.parent) if (cx.name == name) return input.acceptToken(MissingCloseTag, -2)\n input.acceptToken(mismatchedStartCloseTag);\n } else if (input.next != 33 /* '!' */ && input.next != 63 /* '?' */) {\n return input.acceptToken(StartTag)\n }\n}, {contextual: true});\n\nfunction scanTo(type, end) {\n return new ExternalTokenizer(input => {\n let len = 0, first = end.charCodeAt(0);\n scan: for (;; input.advance(), len++) {\n if (input.next < 0) break\n if (input.next == first) {\n for (let i = 1; i < end.length; i++)\n if (input.peek(i) != end.charCodeAt(i)) continue scan\n break\n }\n }\n if (len) input.acceptToken(type);\n })\n}\n\nconst commentContent = scanTo(commentContent$1, \"-->\");\nconst piContent = scanTo(piContent$1, \"?>\");\nconst cdataContent = scanTo(cdataContent$1, \"]]>\");\n\nconst xmlHighlighting = styleTags({\n Text: tags.content,\n \"StartTag StartCloseTag EndTag SelfCloseEndTag\": tags.angleBracket,\n TagName: tags.tagName,\n \"MismatchedCloseTag/TagName\": [tags.tagName, tags.invalid],\n AttributeName: tags.attributeName,\n AttributeValue: tags.attributeValue,\n Is: tags.definitionOperator,\n \"EntityReference CharacterReference\": tags.character,\n Comment: tags.blockComment,\n ProcessingInst: tags.processingInstruction,\n DoctypeDecl: tags.documentMeta,\n Cdata: tags.special(tags.string)\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \",lOQOaOOOrOxO'#CfOzOpO'#CiO!tOaO'#CgOOOP'#Cg'#CgO!{OrO'#CrO#TOtO'#CsO#]OpO'#CtOOOP'#DT'#DTOOOP'#Cv'#CvQQOaOOOOOW'#Cw'#CwO#eOxO,59QOOOP,59Q,59QOOOO'#Cx'#CxO#mOpO,59TO#uO!bO,59TOOOP'#C|'#C|O$TOaO,59RO$[OpO'#CoOOOP,59R,59ROOOQ'#C}'#C}O$dOrO,59^OOOP,59^,59^OOOS'#DO'#DOO$lOtO,59_OOOP,59_,59_O$tOpO,59`O$|OpO,59`OOOP-E6t-E6tOOOW-E6u-E6uOOOP1G.l1G.lOOOO-E6v-E6vO%UO!bO1G.oO%UO!bO1G.oO%dOpO'#CkO%lO!bO'#CyO%zO!bO1G.oOOOP1G.o1G.oOOOP1G.w1G.wOOOP-E6z-E6zOOOP1G.m1G.mO&VOpO,59ZO&_OpO,59ZOOOQ-E6{-E6{OOOP1G.x1G.xOOOS-E6|-E6|OOOP1G.y1G.yO&gOpO1G.zO&gOpO1G.zOOOP1G.z1G.zO&oO!bO7+$ZO&}O!bO7+$ZOOOP7+$Z7+$ZOOOP7+$c7+$cO'YOpO,59VO'bOpO,59VO'mO!bO,59eOOOO-E6w-E6wO'{OpO1G.uO'{OpO1G.uOOOP1G.u1G.uO(TOpO7+$fOOOP7+$f7+$fO(]O!bO<<GuOOOP<<Gu<<GuOOOP<<G}<<G}O'bOpO1G.qO'bOpO1G.qO(hO#tO'#CnO(vO&jO'#CnOOOO1G.q1G.qO)UOpO7+$aOOOP7+$a7+$aOOOP<<HQ<<HQOOOPAN=aAN=aOOOPAN=iAN=iO'bOpO7+$]OOOO7+$]7+$]OOOO'#Cz'#CzO)^O#tO,59YOOOO,59Y,59YOOOO'#C{'#C{O)lO&jO,59YOOOP<<G{<<G{OOOO<<Gw<<GwOOOO-E6x-E6xOOOO1G.t1G.tOOOO-E6y-E6y\",\n stateData: \")z~OPQOSVOTWOVWOWWOXWOiXOyPO!QTO!SUO~OvZOx]O~O^`Oz^O~OPQOQcOSVOTWOVWOWWOXWOyPO!QTO!SUO~ORdO~P!SOteO!PgO~OuhO!RjO~O^lOz^O~OvZOxoO~O^qOz^O~O[vO`sOdwOz^O~ORyO~P!SO^{Oz^O~OteO!P}O~OuhO!R!PO~O^!QOz^O~O[!SOz^O~O[!VO`sOd!WOz^O~Oa!YOz^O~Oz^O[mX`mXdmX~O[!VO`sOd!WO~O^!]Oz^O~O[!_Oz^O~O[!aOz^O~O[!cO`sOd!dOz^O~O[!cO`sOd!dO~Oa!eOz^O~Oz^O{!gO}!hO~Oz^O[ma`madma~O[!kOz^O~O[!lOz^O~O[!mO`sOd!nO~OW!qOX!qO{!sO|!qO~OW!tOX!tO}!sO!O!tO~O[!vOz^O~OW!qOX!qO{!yO|!qO~OW!tOX!tO}!yO!O!tO~O\",\n goto: \"%cxPPPPPPPPPPyyP!PP!VPP!`!jP!pyyyP!v!|#S$[$k$q$w$}%TPPPP%ZXWORYbXRORYb_t`qru!T!U!bQ!i!YS!p!e!fR!w!oQdRRybXSORYbQYORmYQ[PRn[Q_QQkVjp_krz!R!T!X!Z!^!`!f!j!oQr`QzcQ!RlQ!TqQ!XsQ!ZtQ!^{Q!`!QQ!f!YQ!j!]R!o!eQu`S!UqrU![u!U!bR!b!TQ!r!gR!x!rQ!u!hR!z!uQbRRxbQfTR|fQiUR!OiSXOYTaRb\",\n nodeNames: \"⚠ StartTag StartCloseTag MissingCloseTag StartCloseTag StartCloseTag Document Text EntityReference CharacterReference Cdata Element EndTag OpenTag TagName Attribute AttributeName Is AttributeValue CloseTag SelfCloseEndTag SelfClosingTag Comment ProcessingInst MismatchedCloseTag DoctypeDecl\",\n maxTerm: 50,\n context: elementContext,\n nodeProps: [\n [\"closedBy\", 1,\"SelfCloseEndTag EndTag\",13,\"CloseTag MissingCloseTag\"],\n [\"openedBy\", 12,\"StartTag StartCloseTag\",19,\"OpenTag\",20,\"StartTag\"],\n [\"isolate\", -6,13,18,19,21,22,24,\"\"]\n ],\n propSources: [xmlHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 9,\n tokenData: \"!)v~R!YOX$qXY)iYZ)iZ]$q]^)i^p$qpq)iqr$qrs*vsv$qvw+fwx/ix}$q}!O0[!O!P$q!P!Q2z!Q![$q![!]4n!]!^$q!^!_8U!_!`!#t!`!a!$l!a!b!%d!b!c$q!c!}4n!}#P$q#P#Q!'W#Q#R$q#R#S4n#S#T$q#T#o4n#o%W$q%W%o4n%o%p$q%p&a4n&a&b$q&b1p4n1p4U$q4U4d4n4d4e$q4e$IS4n$IS$I`$q$I`$Ib4n$Ib$Kh$q$Kh%#t4n%#t&/x$q&/x&Et4n&Et&FV$q&FV;'S4n;'S;:j8O;:j;=`)c<%l?&r$q?&r?Ah4n?Ah?BY$q?BY?Mn4n?MnO$qi$zXVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qa%nVVP!O`Ov%gwx&Tx!^%g!^!_&o!_;'S%g;'S;=`'W<%lO%gP&YTVPOv&Tw!^&T!_;'S&T;'S;=`&i<%lO&TP&lP;=`<%l&T`&tS!O`Ov&ox;'S&o;'S;=`'Q<%lO&o`'TP;=`<%l&oa'ZP;=`<%l%gX'eWVP|WOr'^rs&Tsv'^w!^'^!^!_'}!_;'S'^;'S;=`(i<%lO'^W(ST|WOr'}sv'}w;'S'};'S;=`(c<%lO'}W(fP;=`<%l'}X(lP;=`<%l'^h(vV|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oh)`P;=`<%l(oi)fP;=`<%l$qo)t`VP|W!O`zUOX$qXY)iYZ)iZ]$q]^)i^p$qpq)iqr$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk+PV{YVP!O`Ov%gwx&Tx!^%g!^!_&o!_;'S%g;'S;=`'W<%lO%g~+iast,n![!]-r!c!}-r#R#S-r#T#o-r%W%o-r%p&a-r&b1p-r4U4d-r4e$IS-r$I`$Ib-r$Kh%#t-r&/x&Et-r&FV;'S-r;'S;:j/c?&r?Ah-r?BY?Mn-r~,qQ!Q![,w#l#m-V~,zQ!Q![,w!]!^-Q~-VOX~~-YR!Q![-c!c!i-c#T#Z-c~-fS!Q![-c!]!^-Q!c!i-c#T#Z-c~-ug}!O-r!O!P-r!Q![-r![!]-r!]!^/^!c!}-r#R#S-r#T#o-r$}%O-r%W%o-r%p&a-r&b1p-r1p4U-r4U4d-r4e$IS-r$I`$Ib-r$Je$Jg-r$Kh%#t-r&/x&Et-r&FV;'S-r;'S;:j/c?&r?Ah-r?BY?Mn-r~/cOW~~/fP;=`<%l-rk/rW}bVP|WOr'^rs&Tsv'^w!^'^!^!_'}!_;'S'^;'S;=`(i<%lO'^k0eZVP|W!O`Or$qrs%gsv$qwx'^x}$q}!O1W!O!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk1aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a2S!a;'S$q;'S;=`)c<%lO$qk2_X!PQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qm3TZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a3v!a;'S$q;'S;=`)c<%lO$qm4RXdSVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo4{!P`S^QVP|W!O`Or$qrs%gsv$qwx'^x}$q}!O4n!O!P4n!P!Q$q!Q![4n![!]4n!]!^$q!^!_(o!_!c$q!c!}4n!}#R$q#R#S4n#S#T$q#T#o4n#o$}$q$}%O4n%O%W$q%W%o4n%o%p$q%p&a4n&a&b$q&b1p4n1p4U4n4U4d4n4d4e$q4e$IS4n$IS$I`$q$I`$Ib4n$Ib$Je$q$Je$Jg4n$Jg$Kh$q$Kh%#t4n%#t&/x$q&/x&Et4n&Et&FV$q&FV;'S4n;'S;:j8O;:j;=`)c<%l?&r$q?&r?Ah4n?Ah?BY$q?BY?Mn4n?MnO$qo8RP;=`<%l4ni8]Y|W!O`Oq(oqr8{rs&osv(owx'}x!a(o!a!b!#U!b;'S(o;'S;=`)]<%lO(oi9S_|W!O`Or(ors&osv(owx'}x}(o}!O:R!O!f(o!f!g;e!g!}(o!}#ODh#O#W(o#W#XLp#X;'S(o;'S;=`)]<%lO(oi:YX|W!O`Or(ors&osv(owx'}x}(o}!O:u!O;'S(o;'S;=`)]<%lO(oi;OV!QP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oi;lX|W!O`Or(ors&osv(owx'}x!q(o!q!r<X!r;'S(o;'S;=`)]<%lO(oi<`X|W!O`Or(ors&osv(owx'}x!e(o!e!f<{!f;'S(o;'S;=`)]<%lO(oi=SX|W!O`Or(ors&osv(owx'}x!v(o!v!w=o!w;'S(o;'S;=`)]<%lO(oi=vX|W!O`Or(ors&osv(owx'}x!{(o!{!|>c!|;'S(o;'S;=`)]<%lO(oi>jX|W!O`Or(ors&osv(owx'}x!r(o!r!s?V!s;'S(o;'S;=`)]<%lO(oi?^X|W!O`Or(ors&osv(owx'}x!g(o!g!h?y!h;'S(o;'S;=`)]<%lO(oi@QY|W!O`Or?yrs@psv?yvwA[wxBdx!`?y!`!aCr!a;'S?y;'S;=`Db<%lO?ya@uV!O`Ov@pvxA[x!`@p!`!aAy!a;'S@p;'S;=`B^<%lO@pPA_TO!`A[!`!aAn!a;'SA[;'S;=`As<%lOA[PAsOiPPAvP;=`<%lA[aBQSiP!O`Ov&ox;'S&o;'S;=`'Q<%lO&oaBaP;=`<%l@pXBiX|WOrBdrsA[svBdvwA[w!`Bd!`!aCU!a;'SBd;'S;=`Cl<%lOBdXC]TiP|WOr'}sv'}w;'S'};'S;=`(c<%lO'}XCoP;=`<%lBdiC{ViP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiDeP;=`<%l?yiDoZ|W!O`Or(ors&osv(owx'}x!e(o!e!fEb!f#V(o#V#WIr#W;'S(o;'S;=`)]<%lO(oiEiX|W!O`Or(ors&osv(owx'}x!f(o!f!gFU!g;'S(o;'S;=`)]<%lO(oiF]X|W!O`Or(ors&osv(owx'}x!c(o!c!dFx!d;'S(o;'S;=`)]<%lO(oiGPX|W!O`Or(ors&osv(owx'}x!v(o!v!wGl!w;'S(o;'S;=`)]<%lO(oiGsX|W!O`Or(ors&osv(owx'}x!c(o!c!dH`!d;'S(o;'S;=`)]<%lO(oiHgX|W!O`Or(ors&osv(owx'}x!}(o!}#OIS#O;'S(o;'S;=`)]<%lO(oiI]V|W!O`yPOr(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(oiIyX|W!O`Or(ors&osv(owx'}x#W(o#W#XJf#X;'S(o;'S;=`)]<%lO(oiJmX|W!O`Or(ors&osv(owx'}x#T(o#T#UKY#U;'S(o;'S;=`)]<%lO(oiKaX|W!O`Or(ors&osv(owx'}x#h(o#h#iK|#i;'S(o;'S;=`)]<%lO(oiLTX|W!O`Or(ors&osv(owx'}x#T(o#T#UH`#U;'S(o;'S;=`)]<%lO(oiLwX|W!O`Or(ors&osv(owx'}x#c(o#c#dMd#d;'S(o;'S;=`)]<%lO(oiMkX|W!O`Or(ors&osv(owx'}x#V(o#V#WNW#W;'S(o;'S;=`)]<%lO(oiN_X|W!O`Or(ors&osv(owx'}x#h(o#h#iNz#i;'S(o;'S;=`)]<%lO(oi! RX|W!O`Or(ors&osv(owx'}x#m(o#m#n! n#n;'S(o;'S;=`)]<%lO(oi! uX|W!O`Or(ors&osv(owx'}x#d(o#d#e!!b#e;'S(o;'S;=`)]<%lO(oi!!iX|W!O`Or(ors&osv(owx'}x#X(o#X#Y?y#Y;'S(o;'S;=`)]<%lO(oi!#_V!SP|W!O`Or(ors&osv(owx'}x;'S(o;'S;=`)]<%lO(ok!$PXaQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qo!$wX[UVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!%mZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!&`!a;'S$q;'S;=`)c<%lO$qk!&kX!RQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$qk!'aZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_#P$q#P#Q!(S#Q;'S$q;'S;=`)c<%lO$qk!(]ZVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_!`$q!`!a!)O!a;'S$q;'S;=`)c<%lO$qk!)ZXxQVP|W!O`Or$qrs%gsv$qwx'^x!^$q!^!_(o!_;'S$q;'S;=`)c<%lO$q\",\n tokenizers: [startTag, commentContent, piContent, cdataContent, 0, 1, 2, 3, 4],\n topRules: {\"Document\":[0,6]},\n tokenPrec: 0\n});\n\nexport { parser };\n","import { parser } from '@lezer/xml';\nimport { syntaxTree, LRLanguage, indentNodeProp, foldNodeProp, bracketMatchingHandle, LanguageSupport } from '@codemirror/language';\nimport { EditorSelection } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\n\nfunction tagName(doc, tag) {\n let name = tag && tag.getChild(\"TagName\");\n return name ? doc.sliceString(name.from, name.to) : \"\";\n}\nfunction elementName$1(doc, tree) {\n let tag = tree && tree.firstChild;\n return !tag || tag.name != \"OpenTag\" ? \"\" : tagName(doc, tag);\n}\nfunction attrName(doc, tag, pos) {\n let attr = tag && tag.getChildren(\"Attribute\").find(a => a.from <= pos && a.to >= pos);\n let name = attr && attr.getChild(\"AttributeName\");\n return name ? doc.sliceString(name.from, name.to) : \"\";\n}\nfunction findParentElement(tree) {\n for (let cur = tree && tree.parent; cur; cur = cur.parent)\n if (cur.name == \"Element\")\n return cur;\n return null;\n}\nfunction findLocation(state, pos) {\n var _a;\n let at = syntaxTree(state).resolveInner(pos, -1), inTag = null;\n for (let cur = at; !inTag && cur.parent; cur = cur.parent)\n if (cur.name == \"OpenTag\" || cur.name == \"CloseTag\" || cur.name == \"SelfClosingTag\" || cur.name == \"MismatchedCloseTag\")\n inTag = cur;\n if (inTag && (inTag.to > pos || inTag.lastChild.type.isError)) {\n let elt = inTag.parent;\n if (at.name == \"TagName\")\n return inTag.name == \"CloseTag\" || inTag.name == \"MismatchedCloseTag\"\n ? { type: \"closeTag\", from: at.from, context: elt }\n : { type: \"openTag\", from: at.from, context: findParentElement(elt) };\n if (at.name == \"AttributeName\")\n return { type: \"attrName\", from: at.from, context: inTag };\n if (at.name == \"AttributeValue\")\n return { type: \"attrValue\", from: at.from, context: inTag };\n let before = at == inTag || at.name == \"Attribute\" ? at.childBefore(pos) : at;\n if ((before === null || before === void 0 ? void 0 : before.name) == \"StartTag\")\n return { type: \"openTag\", from: pos, context: findParentElement(elt) };\n if ((before === null || before === void 0 ? void 0 : before.name) == \"StartCloseTag\" && before.to <= pos)\n return { type: \"closeTag\", from: pos, context: elt };\n if ((before === null || before === void 0 ? void 0 : before.name) == \"Is\")\n return { type: \"attrValue\", from: pos, context: inTag };\n if (before)\n return { type: \"attrName\", from: pos, context: inTag };\n return null;\n }\n else if (at.name == \"StartCloseTag\") {\n return { type: \"closeTag\", from: pos, context: at.parent };\n }\n while (at.parent && at.to == pos && !((_a = at.lastChild) === null || _a === void 0 ? void 0 : _a.type.isError))\n at = at.parent;\n if (at.name == \"Element\" || at.name == \"Text\" || at.name == \"Document\")\n return { type: \"tag\", from: pos, context: at.name == \"Element\" ? at : findParentElement(at) };\n return null;\n}\nclass Element {\n constructor(spec, attrs, attrValues) {\n this.attrs = attrs;\n this.attrValues = attrValues;\n this.children = [];\n this.name = spec.name;\n this.completion = Object.assign(Object.assign({ type: \"type\" }, spec.completion || {}), { label: this.name });\n this.openCompletion = Object.assign(Object.assign({}, this.completion), { label: \"<\" + this.name });\n this.closeCompletion = Object.assign(Object.assign({}, this.completion), { label: \"</\" + this.name + \">\", boost: 2 });\n this.closeNameCompletion = Object.assign(Object.assign({}, this.completion), { label: this.name + \">\" });\n this.text = spec.textContent ? spec.textContent.map(s => ({ label: s, type: \"text\" })) : [];\n }\n}\nconst Identifier = /^[:\\-\\.\\w\\u00b7-\\uffff]*$/;\nfunction attrCompletion(spec) {\n return Object.assign(Object.assign({ type: \"property\" }, spec.completion || {}), { label: spec.name });\n}\nfunction valueCompletion(spec) {\n return typeof spec == \"string\" ? { label: `\"${spec}\"`, type: \"constant\" }\n : /^\"/.test(spec.label) ? spec\n : Object.assign(Object.assign({}, spec), { label: `\"${spec.label}\"` });\n}\n/**\nCreate a completion source for the given schema.\n*/\nfunction completeFromSchema(eltSpecs, attrSpecs) {\n let allAttrs = [], globalAttrs = [];\n let attrValues = Object.create(null);\n for (let s of attrSpecs) {\n let completion = attrCompletion(s);\n allAttrs.push(completion);\n if (s.global)\n globalAttrs.push(completion);\n if (s.values)\n attrValues[s.name] = s.values.map(valueCompletion);\n }\n let allElements = [], topElements = [];\n let byName = Object.create(null);\n for (let s of eltSpecs) {\n let attrs = globalAttrs, attrVals = attrValues;\n if (s.attributes)\n attrs = attrs.concat(s.attributes.map(s => {\n if (typeof s == \"string\")\n return allAttrs.find(a => a.label == s) || { label: s, type: \"property\" };\n if (s.values) {\n if (attrVals == attrValues)\n attrVals = Object.create(attrVals);\n attrVals[s.name] = s.values.map(valueCompletion);\n }\n return attrCompletion(s);\n }));\n let elt = new Element(s, attrs, attrVals);\n byName[elt.name] = elt;\n allElements.push(elt);\n if (s.top)\n topElements.push(elt);\n }\n if (!topElements.length)\n topElements = allElements;\n for (let i = 0; i < allElements.length; i++) {\n let s = eltSpecs[i], elt = allElements[i];\n if (s.children) {\n for (let ch of s.children)\n if (byName[ch])\n elt.children.push(byName[ch]);\n }\n else {\n elt.children = allElements;\n }\n }\n return cx => {\n var _a;\n let { doc } = cx.state, loc = findLocation(cx.state, cx.pos);\n if (!loc || (loc.type == \"tag\" && !cx.explicit))\n return null;\n let { type, from, context } = loc;\n if (type == \"openTag\") {\n let children = topElements;\n let parentName = elementName$1(doc, context);\n if (parentName) {\n let parent = byName[parentName];\n children = (parent === null || parent === void 0 ? void 0 : parent.children) || allElements;\n }\n return {\n from,\n options: children.map(ch => ch.completion),\n validFor: Identifier\n };\n }\n else if (type == \"closeTag\") {\n let parentName = elementName$1(doc, context);\n return parentName ? {\n from,\n to: cx.pos + (doc.sliceString(cx.pos, cx.pos + 1) == \">\" ? 1 : 0),\n options: [((_a = byName[parentName]) === null || _a === void 0 ? void 0 : _a.closeNameCompletion) || { label: parentName + \">\", type: \"type\" }],\n validFor: Identifier\n } : null;\n }\n else if (type == \"attrName\") {\n let parent = byName[tagName(doc, context)];\n return {\n from,\n options: (parent === null || parent === void 0 ? void 0 : parent.attrs) || globalAttrs,\n validFor: Identifier\n };\n }\n else if (type == \"attrValue\") {\n let attr = attrName(doc, context, from);\n if (!attr)\n return null;\n let parent = byName[tagName(doc, context)];\n let values = ((parent === null || parent === void 0 ? void 0 : parent.attrValues) || attrValues)[attr];\n if (!values || !values.length)\n return null;\n return {\n from,\n to: cx.pos + (doc.sliceString(cx.pos, cx.pos + 1) == '\"' ? 1 : 0),\n options: values,\n validFor: /^\"[^\"]*\"?$/\n };\n }\n else if (type == \"tag\") {\n let parentName = elementName$1(doc, context), parent = byName[parentName];\n let closing = [], last = context && context.lastChild;\n if (parentName && (!last || last.name != \"CloseTag\" || tagName(doc, last) != parentName))\n closing.push(parent ? parent.closeCompletion : { label: \"</\" + parentName + \">\", type: \"type\", boost: 2 });\n let options = closing.concat(((parent === null || parent === void 0 ? void 0 : parent.children) || (context ? allElements : topElements)).map(e => e.openCompletion));\n if (context && (parent === null || parent === void 0 ? void 0 : parent.text.length)) {\n let openTag = context.firstChild;\n if (openTag.to > cx.pos - 20 && !/\\S/.test(cx.state.sliceDoc(openTag.to, cx.pos)))\n options = options.concat(parent.text);\n }\n return {\n from,\n options,\n validFor: /^<\\/?[:\\-\\.\\w\\u00b7-\\uffff]*$/\n };\n }\n else {\n return null;\n }\n };\n}\n\n/**\nA language provider based on the [Lezer XML\nparser](https://github.com/lezer-parser/xml), extended with\nhighlighting and indentation information.\n*/\nconst xmlLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"xml\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Element(context) {\n let closed = /^\\s*<\\//.test(context.textAfter);\n return context.lineIndent(context.node.from) + (closed ? 0 : context.unit);\n },\n \"OpenTag CloseTag SelfClosingTag\"(context) {\n return context.column(context.node.from) + context.unit;\n }\n }),\n /*@__PURE__*/foldNodeProp.add({\n Element(subtree) {\n let first = subtree.firstChild, last = subtree.lastChild;\n if (!first || first.name != \"OpenTag\")\n return null;\n return { from: first.to, to: last.name == \"CloseTag\" ? last.from : subtree.to };\n }\n }),\n /*@__PURE__*/bracketMatchingHandle.add({\n \"OpenTag CloseTag\": node => node.getChild(\"TagName\")\n })\n ]\n }),\n languageData: {\n commentTokens: { block: { open: \"<!--\", close: \"-->\" } },\n indentOnInput: /^\\s*<\\/$/\n }\n});\n/**\nXML language support. Includes schema-based autocompletion when\nconfigured.\n*/\nfunction xml(conf = {}) {\n let support = [xmlLanguage.data.of({\n autocomplete: completeFromSchema(conf.elements || [], conf.attributes || [])\n })];\n if (conf.autoCloseTags !== false)\n support.push(autoCloseTags);\n return new LanguageSupport(xmlLanguage, support);\n}\nfunction elementName(doc, tree, max = doc.length) {\n if (!tree)\n return \"\";\n let tag = tree.firstChild;\n let name = tag && tag.getChild(\"TagName\");\n return name ? doc.sliceString(name.from, Math.min(name.to, max)) : \"\";\n}\n/**\nExtension that will automatically insert close tags when a `>` or\n`/` is typed.\n*/\nconst autoCloseTags = /*@__PURE__*/EditorView.inputHandler.of((view, from, to, text, insertTransaction) => {\n if (view.composing || view.state.readOnly || from != to || (text != \">\" && text != \"/\") ||\n !xmlLanguage.isActiveAt(view.state, from, -1))\n return false;\n let base = insertTransaction(), { state } = base;\n let closeTags = state.changeByRange(range => {\n var _a, _b, _c;\n let { head } = range;\n let didType = state.doc.sliceString(head - 1, head) == text;\n let after = syntaxTree(state).resolveInner(head, -1), name;\n if (didType && text == \">\" && after.name == \"EndTag\") {\n let tag = after.parent;\n if (((_b = (_a = tag.parent) === null || _a === void 0 ? void 0 : _a.lastChild) === null || _b === void 0 ? void 0 : _b.name) != \"CloseTag\" &&\n (name = elementName(state.doc, tag.parent, head))) {\n let to = head + (state.doc.sliceString(head, head + 1) === \">\" ? 1 : 0);\n let insert = `</${name}>`;\n return { range, changes: { from: head, to, insert } };\n }\n }\n else if (didType && text == \"/\" && after.name == \"StartCloseTag\") {\n let base = after.parent;\n if (after.from == head - 2 && ((_c = base.lastChild) === null || _c === void 0 ? void 0 : _c.name) != \"CloseTag\" &&\n (name = elementName(state.doc, base, head))) {\n let to = head + (state.doc.sliceString(head, head + 1) === \">\" ? 1 : 0);\n let insert = `${name}>`;\n return {\n range: EditorSelection.cursor(head + insert.length, -1),\n changes: { from: head, to, insert }\n };\n }\n }\n return { range };\n });\n if (closeTags.changes.empty)\n return false;\n view.dispatch([\n base,\n state.update(closeTags, {\n userEvent: \"input.complete\",\n scrollIntoView: true\n })\n ]);\n return true;\n});\n\nexport { autoCloseTags, completeFromSchema, xml, xmlLanguage };\n","import { ContextTracker, ExternalTokenizer, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst blockEnd = 63,\n eof = 64,\n DirectiveEnd = 1,\n DocEnd = 2,\n sequenceStartMark = 3,\n sequenceContinueMark = 4,\n explicitMapStartMark = 5,\n explicitMapContinueMark = 6,\n flowMapMark = 7,\n mapStartMark = 65,\n mapContinueMark = 66,\n Literal = 8,\n QuotedLiteral = 9,\n Anchor = 10,\n Alias = 11,\n Tag = 12,\n BlockLiteralContent = 13,\n BracketL = 19,\n FlowSequence = 20,\n Colon = 29,\n BraceL = 33,\n FlowMapping = 34,\n BlockLiteralHeader = 47;\n\nconst\n type_Top = 0, // Top document level\n type_Seq = 1, // Block sequence\n type_Map = 2, // Block mapping\n type_Flow = 3, // Inside flow content\n type_Lit = 4; // Block literal with explicit indentation\n\nclass Context {\n constructor(parent, depth, type) {\n this.parent = parent;\n this.depth = depth;\n this.type = type;\n this.hash = (parent ? parent.hash + parent.hash << 8 : 0) + depth + (depth << 4) + type;\n }\n}\n\nContext.top = new Context(null, -1, type_Top);\n\nfunction findColumn(input, pos) {\n for (let col = 0, p = pos - input.pos - 1;; p--, col++) {\n let ch = input.peek(p);\n if (isBreakSpace(ch) || ch == -1) return col\n }\n}\n\nfunction isNonBreakSpace(ch) {\n return ch == 32 || ch == 9\n}\n\nfunction isBreakSpace(ch) {\n return ch == 10 || ch == 13\n}\n\nfunction isSpace(ch) {\n return isNonBreakSpace(ch) || isBreakSpace(ch)\n}\n\nfunction isSep(ch) {\n return ch < 0 || isSpace(ch)\n}\n\nconst indentation = new ContextTracker({\n start: Context.top,\n reduce(context, term) {\n return context.type == type_Flow && (term == FlowSequence || term == FlowMapping) ? context.parent : context\n },\n shift(context, term, stack, input) {\n if (term == sequenceStartMark)\n return new Context(context, findColumn(input, input.pos), type_Seq)\n if (term == mapStartMark || term == explicitMapStartMark)\n return new Context(context, findColumn(input, input.pos), type_Map)\n if (term == blockEnd)\n return context.parent\n if (term == BracketL || term == BraceL)\n return new Context(context, 0, type_Flow)\n if (term == BlockLiteralContent && context.type == type_Lit)\n return context.parent\n if (term == BlockLiteralHeader) {\n let indent = /[1-9]/.exec(input.read(input.pos, stack.pos));\n if (indent) return new Context(context, context.depth + (+indent[0]), type_Lit)\n }\n return context\n },\n hash(context) { return context.hash }\n});\n\nfunction three(input, ch, off = 0) {\n return input.peek(off) == ch && input.peek(off + 1) == ch && input.peek(off + 2) == ch && isSep(input.peek(off + 3))\n}\n\nconst newlines = new ExternalTokenizer((input, stack) => {\n if (input.next == -1 && stack.canShift(eof))\n return input.acceptToken(eof)\n let prev = input.peek(-1);\n if ((isBreakSpace(prev) || prev < 0) && stack.context.type != type_Flow) {\n if (three(input, 45 /* '-' */)) {\n if (stack.canShift(blockEnd)) input.acceptToken(blockEnd);\n else return input.acceptToken(DirectiveEnd, 3)\n }\n if (three(input, 46 /* '.' */)) {\n if (stack.canShift(blockEnd)) input.acceptToken(blockEnd);\n else return input.acceptToken(DocEnd, 3)\n }\n let depth = 0;\n while (input.next == 32 /* ' ' */) { depth++; input.advance(); }\n if ((depth < stack.context.depth ||\n depth == stack.context.depth && stack.context.type == type_Seq &&\n (input.next != 45 /* '-' */ || !isSep(input.peek(1)))) &&\n // Not blank\n input.next != -1 && !isBreakSpace(input.next) && input.next != 35 /* '#' */)\n input.acceptToken(blockEnd, -depth);\n }\n}, {contextual: true});\n\nconst blockMark = new ExternalTokenizer((input, stack) => {\n if (stack.context.type == type_Flow) {\n if (input.next == 63 /* '?' */) {\n input.advance();\n if (isSep(input.next)) input.acceptToken(flowMapMark);\n }\n return\n }\n if (input.next == 45 /* '-' */) {\n input.advance();\n if (isSep(input.next))\n input.acceptToken(stack.context.type == type_Seq && stack.context.depth == findColumn(input, input.pos - 1)\n ? sequenceContinueMark : sequenceStartMark);\n } else if (input.next == 63 /* '?' */) {\n input.advance();\n if (isSep(input.next))\n input.acceptToken(stack.context.type == type_Map && stack.context.depth == findColumn(input, input.pos - 1)\n ? explicitMapContinueMark : explicitMapStartMark);\n } else {\n let start = input.pos;\n // Scan over a potential key to see if it is followed by a colon.\n for (;;) {\n if (isNonBreakSpace(input.next)) {\n if (input.pos == start) return\n input.advance();\n } else if (input.next == 33 /* '!' */) {\n readTag(input);\n } else if (input.next == 38 /* '&' */) {\n readAnchor(input);\n } else if (input.next == 42 /* '*' */) {\n readAnchor(input);\n break\n } else if (input.next == 39 /* \"'\" */ || input.next == 34 /* '\"' */) {\n if (readQuoted(input, true)) break\n return\n } else if (input.next == 91 /* '[' */ || input.next == 123 /* '{' */) {\n if (!scanBrackets(input)) return\n break\n } else {\n readPlain(input, true, false, 0);\n break\n }\n }\n while (isNonBreakSpace(input.next)) input.advance();\n if (input.next == 58 /* ':' */) {\n if (input.pos == start && stack.canShift(Colon)) return\n let after = input.peek(1);\n if (isSep(after))\n input.acceptTokenTo(stack.context.type == type_Map && stack.context.depth == findColumn(input, start)\n ? mapContinueMark : mapStartMark, start);\n }\n }\n}, {contextual: true});\n\nfunction uriChar(ch) {\n return ch > 32 && ch < 127 && ch != 34 && ch != 37 && ch != 44 && ch != 60 &&\n ch != 62 && ch != 92 && ch != 94 && ch != 96 && ch != 123 && ch != 124 && ch != 125\n}\n\nfunction hexChar(ch) {\n return ch >= 48 && ch <= 57 || ch >= 97 && ch <= 102 || ch >= 65 && ch <= 70\n}\n\nfunction readUriChar(input, quoted) {\n if (input.next == 37 /* '%' */) {\n input.advance();\n if (hexChar(input.next)) input.advance();\n if (hexChar(input.next)) input.advance();\n return true\n } else if (uriChar(input.next) || quoted && input.next == 44 /* ',' */) {\n input.advance();\n return true\n }\n return false\n}\n\nfunction readTag(input) {\n input.advance(); // !\n if (input.next == 60 /* '<' */) {\n input.advance();\n for (;;) {\n if (!readUriChar(input, true)) {\n if (input.next == 62 /* '>' */) input.advance();\n break\n }\n }\n } else {\n while (readUriChar(input, false)) {}\n }\n}\n\nfunction readAnchor(input) {\n input.advance();\n while (!isSep(input.next) && charTag(input.next) != \"f\") input.advance();\n}\n \nfunction readQuoted(input, scan) {\n let quote = input.next, lineBreak = false, start = input.pos;\n input.advance();\n for (;;) {\n let ch = input.next;\n if (ch < 0) break\n input.advance();\n if (ch == quote) {\n if (ch == 39 /* \"'\" */) {\n if (input.next == 39) input.advance();\n else break\n } else {\n break\n }\n } else if (ch == 92 /* \"\\\\\" */ && quote == 34 /* '\"' */) {\n if (input.next >= 0) input.advance();\n } else if (isBreakSpace(ch)) {\n if (scan) return false\n lineBreak = true;\n } else if (scan && input.pos >= start + 1024) {\n return false\n }\n }\n return !lineBreak\n}\n\nfunction scanBrackets(input) {\n for (let stack = [], end = input.pos + 1024;;) {\n if (input.next == 91 /* '[' */ || input.next == 123 /* '{' */) {\n stack.push(input.next);\n input.advance();\n } else if (input.next == 39 /* \"'\" */ || input.next == 34 /* '\"' */) {\n if (!readQuoted(input, true)) return false\n } else if (input.next == 93 /* ']' */ || input.next == 125 /* '}' */) {\n if (stack[stack.length - 1] != input.next - 2) return false\n stack.pop();\n input.advance();\n if (!stack.length) return true\n } else if (input.next < 0 || input.pos > end || isBreakSpace(input.next)) {\n return false\n } else {\n input.advance();\n }\n }\n}\n\n// \"Safe char\" info for char codes 33 to 125. s: safe, i: indicator, f: flow indicator\nconst charTable = \"iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif\";\n\nfunction charTag(ch) {\n if (ch < 33) return \"u\"\n if (ch > 125) return \"s\"\n return charTable[ch - 33]\n}\n\nfunction isSafe(ch, inFlow) {\n let tag = charTag(ch);\n return tag != \"u\" && !(inFlow && tag == \"f\")\n}\n\nfunction readPlain(input, scan, inFlow, indent) {\n if (charTag(input.next) == \"s\" ||\n (input.next == 63 /* '?' */ || input.next == 58 /* ':' */ || input.next == 45 /* '-' */) &&\n isSafe(input.peek(1), inFlow)) {\n input.advance();\n } else {\n return false\n }\n let start = input.pos;\n for (;;) {\n let next = input.next, off = 0, lineIndent = indent + 1;\n while (isSpace(next)) {\n if (isBreakSpace(next)) {\n if (scan) return false\n lineIndent = 0;\n } else {\n lineIndent++;\n }\n next = input.peek(++off);\n }\n let safe = next >= 0 &&\n (next == 58 /* ':' */ ? isSafe(input.peek(off + 1), inFlow) :\n next == 35 /* '#' */ ? input.peek(off - 1) != 32 /* ' ' */ :\n isSafe(next, inFlow));\n if (!safe || !inFlow && lineIndent <= indent ||\n lineIndent == 0 && !inFlow && (three(input, 45, off) || three(input, 46, off)))\n break\n if (scan && charTag(next) == \"f\") return false\n for (let i = off; i >= 0; i--) input.advance();\n if (scan && input.pos > start + 1024) return false\n }\n return true\n}\n\nconst literals = new ExternalTokenizer((input, stack) => {\n if (input.next == 33 /* '!' */) {\n readTag(input);\n input.acceptToken(Tag);\n } else if (input.next == 38 /* '&' */ || input.next == 42 /* '*' */) {\n let token = input.next == 38 ? Anchor : Alias;\n readAnchor(input);\n input.acceptToken(token);\n } else if (input.next == 39 /* \"'\" */ || input.next == 34 /* '\"' */) {\n readQuoted(input, false);\n input.acceptToken(QuotedLiteral);\n } else if (readPlain(input, false, stack.context.type == type_Flow, stack.context.depth)) {\n input.acceptToken(Literal);\n }\n});\n\nconst blockLiteral = new ExternalTokenizer((input, stack) => {\n let indent = stack.context.type == type_Lit ? stack.context.depth : -1, upto = input.pos;\n scan: for (;;) {\n let depth = 0, next = input.next;\n while (next == 32 /* ' ' */) next = input.peek(++depth);\n if (!depth && (three(input, 45, depth) || three(input, 46, depth))) break\n if (!isBreakSpace(next)) {\n if (indent < 0) indent = Math.max(stack.context.depth + 1, depth);\n if (depth < indent) break\n }\n for (;;) {\n if (input.next < 0) break scan\n let isBreak = isBreakSpace(input.next);\n input.advance();\n if (isBreak) continue scan\n upto = input.pos;\n }\n }\n input.acceptTokenTo(BlockLiteralContent, upto);\n});\n\nconst yamlHighlighting = styleTags({\n DirectiveName: tags.keyword,\n DirectiveContent: tags.attributeValue,\n \"DirectiveEnd DocEnd\": tags.meta,\n QuotedLiteral: tags.string,\n BlockLiteralHeader: tags.special(tags.string),\n BlockLiteralContent: tags.content,\n Literal: tags.content,\n \"Key/Literal Key/QuotedLiteral\": tags.definition(tags.propertyName),\n \"Anchor Alias\": tags.labelName,\n Tag: tags.typeName,\n Comment: tags.lineComment,\n \": , -\": tags.separator,\n \"?\": tags.punctuation,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"5lQ!ZQgOOO#PQfO'#CpO#uQfO'#DOOOQR'#Dv'#DvO$qQgO'#DRO%gQdO'#DUO%nQgO'#DUO&ROaO'#D[OOQR'#Du'#DuO&{QgO'#D^O'rQgO'#D`OOQR'#Dt'#DtO(iOqO'#DbOOQP'#Dj'#DjO(zQaO'#CmO)YQgO'#CmOOQP'#Cm'#CmQ)jQaOOQ)uQgOOQ]QgOOO*PQdO'#CrO*nQdO'#CtOOQO'#Dw'#DwO+]Q`O'#CxO+hQdO'#CwO+rQ`O'#CwOOQO'#Cv'#CvO+wQdO'#CvOOQO'#Cq'#CqO,UQ`O,59[O,^QfO,59[OOQR,59[,59[OOQO'#Cx'#CxO,eQ`O'#DPO,pQdO'#DPOOQO'#Dx'#DxO,zQdO'#DxO-XQ`O,59jO-aQfO,59jOOQR,59j,59jOOQR'#DS'#DSO-hQcO,59mO-sQgO'#DVO.TQ`O'#DVO.YQcO,59pOOQR'#DX'#DXO#|QfO'#DWO.hQcO'#DWOOQR,59v,59vO.yOWO,59vO/OOaO,59vO/WOaO,59vO/cQgO'#D_OOQR,59x,59xO0VQgO'#DaOOQR,59z,59zOOQP,59|,59|O0yOaO,59|O1ROaO,59|O1aOqO,59|OOQP-E7h-E7hO1oQgO,59XOOQP,59X,59XO2PQaO'#DeO2_QgO'#DeO2oQgO'#DkOOQP'#Dk'#DkQ)jQaOOO3PQdO'#CsOOQO,59^,59^O3kQdO'#CuOOQO,59`,59`OOQO,59c,59cO4VQdO,59cO4aQdO'#CzO4kQ`O'#CzOOQO,59b,59bOOQU,5:Q,5:QOOQR1G.v1G.vO4pQ`O1G.vOOQU-E7d-E7dO4xQdO,59kOOQO,59k,59kO5SQdO'#DQO5^Q`O'#DQOOQO,5:d,5:dOOQU,5:R,5:ROOQR1G/U1G/UO5cQ`O1G/UOOQU-E7e-E7eO5kQgO'#DhO5xQcO1G/XOOQR1G/X1G/XOOQR,59q,59qO6TQgO,59qO6eQdO'#DiO6lQgO'#DiO7PQcO1G/[OOQR1G/[1G/[OOQR,59r,59rO#|QfO,59rOOQR1G/b1G/bO7_OWO1G/bO7dOaO1G/bOOQR,59y,59yOOQR,59{,59{OOQP1G/h1G/hO7lOaO1G/hO7tOaO1G/hO8POaO1G/hOOQP1G.s1G.sO8_QgO,5:POOQP,5:P,5:POOQP,5:V,5:VOOQP-E7i-E7iOOQO,59_,59_OOQO,59a,59aOOQO1G.}1G.}OOQO,59f,59fO8oQdO,59fOOQR7+$b7+$bP,XQ`O'#DfOOQO1G/V1G/VOOQO,59l,59lO8yQdO,59lOOQR7+$p7+$pP9TQ`O'#DgOOQR'#DT'#DTOOQR,5:S,5:SOOQR-E7f-E7fOOQR7+$s7+$sOOQR1G/]1G/]O9YQgO'#DYO9jQ`O'#DYOOQR,5:T,5:TO#|QfO'#DZO9oQcO'#DZOOQR-E7g-E7gOOQR7+$v7+$vOOQR1G/^1G/^OOQR7+$|7+$|O:QOWO7+$|OOQP7+%S7+%SO:VOaO7+%SO:_OaO7+%SOOQP1G/k1G/kOOQO1G/Q1G/QOOQO1G/W1G/WOOQR,59t,59tO:jQgO,59tOOQR,59u,59uO#|QfO,59uOOQR<<Hh<<HhOOQP<<Hn<<HnO:zOaO<<HnOOQR1G/`1G/`OOQR1G/a1G/aOOQPAN>YAN>Y\",\n stateData: \";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O\",\n goto: \",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv\",\n nodeNames: \"⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document\",\n maxTerm: 74,\n context: indentation,\n nodeProps: [\n [\"isolate\", -3,8,9,14,\"\"],\n [\"openedBy\", 18,\"[\",32,\"{\"],\n [\"closedBy\", 19,\"]\",33,\"}\"]\n ],\n propSources: [yamlHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 6,\n tokenData: \"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P\",\n tokenizers: [newlines, blockMark, literals, blockLiteral, 0, 1],\n topRules: {\"Stream\":[0,15]},\n tokenPrec: 0\n});\n\nexport { parser };\n","import { parser as parser$1 } from '@lezer/yaml';\nimport { LRLanguage, indentNodeProp, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\nimport { parseMixed } from '@lezer/common';\nimport { styleTags, tags } from '@lezer/highlight';\nimport { LRParser } from '@lezer/lr';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = /*@__PURE__*/LRParser.deserialize({\n version: 14,\n states: \"!vOQOPOOO]OPO'#C_OhOPO'#C^OOOO'#Cc'#CcOpOPO'#CaQOOOOOO{OPOOOOOO'#Cb'#CbO!WOPO'#C`O!`OPO,58xOOOO-E6a-E6aOOOO-E6`-E6`OOOO'#C_'#C_OOOO1G.d1G.d\",\n stateData: \"!h~OXPOYROWTP~OWVXXRXYRX~OYVOXSP~OXROYROWTX~OXROYROWTP~OYVOXSX~OX[O~OXY~\",\n goto: \"vWPPX[beioRUOQQOR]XRXQTTOUQWQRZWSSOURYS\",\n nodeNames: \"⚠ Document Frontmatter DashLine FrontmatterContent Body\",\n maxTerm: 10,\n skippedNodes: [0],\n repeatNodeCount: 2,\n tokenData: \"$z~RXOYnYZ!^Z]n]^!^^}n}!O!i!O;'Sn;'S;=`!c<%lOn~qXOYnYZ!^Z]n]^!^^;'Sn;'S;=`!c<%l~n~On~~!^~!cOY~~!fP;=`<%ln~!lZOYnYZ!^Z]n]^!^^}n}!O#_!O;'Sn;'S;=`!c<%l~n~On~~!^~#bZOYnYZ!^Z]n]^!^^}n}!O$T!O;'Sn;'S;=`!c<%l~n~On~~!^~$WXOYnYZ$sZ]n]^$s^;'Sn;'S;=`!c<%l~n~On~~$s~$zOX~Y~\",\n tokenizers: [0],\n topRules: {\"Document\":[0,1]},\n tokenPrec: 67\n});\n\n/**\nA language provider based on the [Lezer YAML\nparser](https://github.com/lezer-parser/yaml), extended with\nhighlighting and indentation information.\n*/\nconst yamlLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"yaml\",\n parser: /*@__PURE__*/parser$1.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Stream: cx => {\n for (let before = cx.node.resolve(cx.pos, -1); before && before.to >= cx.pos; before = before.parent) {\n if (before.name == \"BlockLiteralContent\" && before.from < before.to)\n return cx.baseIndentFor(before);\n if (before.name == \"BlockLiteral\")\n return cx.baseIndentFor(before) + cx.unit;\n if (before.name == \"BlockSequence\" || before.name == \"BlockMapping\")\n return cx.column(before.from, 1);\n if (before.name == \"QuotedLiteral\")\n return null;\n if (before.name == \"Literal\") {\n let col = cx.column(before.from, 1);\n if (col == cx.lineIndent(before.from, 1))\n return col; // Start on own line\n if (before.to > cx.pos)\n return null;\n }\n }\n return null;\n },\n FlowMapping: /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n FlowSequence: /*@__PURE__*/delimitedIndent({ closing: \"]\" }),\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"FlowMapping FlowSequence\": foldInside,\n \"Item Pair BlockLiteral\": (node, state) => ({ from: state.doc.lineAt(node.from).to, to: node.to })\n })\n ]\n }),\n languageData: {\n commentTokens: { line: \"#\" },\n indentOnInput: /^\\s*[\\]\\}]$/,\n }\n});\n/**\nLanguage support for YAML.\n*/\nfunction yaml() {\n return new LanguageSupport(yamlLanguage);\n}\nconst frontmatterLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"yaml-frontmatter\",\n parser: /*@__PURE__*/parser.configure({\n props: [/*@__PURE__*/styleTags({ DashLine: tags.meta })]\n })\n});\n/**\nReturns language support for a document parsed as `config.content`\nwith an optional YAML \"frontmatter\" delimited by lines that\ncontain three dashes.\n*/\nfunction yamlFrontmatter(config) {\n let { language, support } = config.content instanceof LanguageSupport ? config.content\n : { language: config.content, support: [] };\n return new LanguageSupport(frontmatterLanguage.configure({\n wrap: parseMixed(node => {\n return node.name == \"FrontmatterContent\" ? { parser: yamlLanguage.parser }\n : node.name == \"Body\" ? { parser: language.parser }\n : null;\n })\n }), support);\n}\n\nexport { yaml, yamlFrontmatter, yamlLanguage };\n","import { ExternalTokenizer, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst closureParamDelim = 1,\n tpOpen = 2,\n tpClose = 3,\n RawString = 4,\n Float = 5;\n\nconst _b = 98, _e = 101, _f = 102, _r = 114, _E = 69, Zero = 48,\n Dot = 46, Plus = 43, Minus = 45, Hash = 35, Quote = 34, Pipe = 124, LessThan = 60, GreaterThan = 62;\n\nfunction isNum(ch) { return ch >= 48 && ch <= 57 }\nfunction isNum_(ch) { return isNum(ch) || ch == 95 }\n\nconst literalTokens = new ExternalTokenizer((input, stack) => {\n if (isNum(input.next)) {\n let isFloat = false;\n do { input.advance(); } while (isNum_(input.next))\n if (input.next == Dot) {\n isFloat = true;\n input.advance();\n if (isNum(input.next)) {\n do { input.advance(); } while (isNum_(input.next))\n } else if (input.next == Dot || input.next > 0x7f || /\\w/.test(String.fromCharCode(input.next))) {\n return\n }\n }\n if (input.next == _e || input.next == _E) {\n isFloat = true;\n input.advance();\n if (input.next == Plus || input.next == Minus) input.advance();\n if (!isNum_(input.next)) return\n do { input.advance(); } while (isNum_(input.next))\n }\n if (input.next == _f) {\n let after = input.peek(1);\n if (after == Zero + 3 && input.peek(2) == Zero + 2 ||\n after == Zero + 6 && input.peek(2) == Zero + 4) {\n input.advance(3);\n isFloat = true;\n } else {\n return\n }\n }\n if (isFloat) input.acceptToken(Float);\n } else if (input.next == _b || input.next == _r) {\n if (input.next == _b) input.advance();\n if (input.next != _r) return\n input.advance();\n let count = 0;\n while (input.next == Hash) { count++; input.advance(); }\n if (input.next != Quote) return\n input.advance();\n content: for (;;) {\n if (input.next < 0) return\n let isQuote = input.next == Quote;\n input.advance();\n if (isQuote) {\n for (let i = 0; i < count; i++) {\n if (input.next != Hash) continue content\n input.advance();\n }\n input.acceptToken(RawString);\n return\n }\n }\n }\n});\n\nconst closureParam = new ExternalTokenizer(input => {\n if (input.next == Pipe) input.acceptToken(closureParamDelim, 1);\n});\n\nconst tpDelim = new ExternalTokenizer(input => {\n if (input.next == LessThan) input.acceptToken(tpOpen, 1);\n else if (input.next == GreaterThan) input.acceptToken(tpClose, 1);\n});\n\nconst rustHighlighting = styleTags({\n \"const macro_rules struct union enum type fn impl trait let static\": tags.definitionKeyword,\n \"mod use crate\": tags.moduleKeyword,\n \"pub unsafe async mut extern default move\": tags.modifier,\n \"for if else loop while match continue break return await\": tags.controlKeyword,\n \"as in ref\": tags.operatorKeyword,\n \"where _ crate super dyn\": tags.keyword,\n \"self\": tags.self,\n String: tags.string,\n Char: tags.character,\n RawString: tags.special(tags.string),\n Boolean: tags.bool,\n Identifier: tags.variableName,\n \"CallExpression/Identifier\": tags.function(tags.variableName),\n BoundIdentifier: tags.definition(tags.variableName),\n \"FunctionItem/BoundIdentifier\": tags.function(tags.definition(tags.variableName)),\n LoopLabel: tags.labelName,\n FieldIdentifier: tags.propertyName,\n \"CallExpression/FieldExpression/FieldIdentifier\": tags.function(tags.propertyName),\n Lifetime: tags.special(tags.variableName),\n ScopeIdentifier: tags.namespace,\n TypeIdentifier: tags.typeName,\n \"MacroInvocation/Identifier MacroInvocation/ScopedIdentifier/Identifier\": tags.macroName,\n \"MacroInvocation/TypeIdentifier MacroInvocation/ScopedIdentifier/TypeIdentifier\": tags.macroName,\n \"\\\"!\\\"\": tags.macroName,\n UpdateOp: tags.updateOperator,\n LineComment: tags.lineComment,\n BlockComment: tags.blockComment,\n Integer: tags.integer,\n Float: tags.float,\n ArithOp: tags.arithmeticOperator,\n LogicOp: tags.logicOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n \"=\": tags.definitionOperator,\n \".. ... => ->\": tags.punctuation,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \". DerefOp\": tags.derefOperator,\n \"&\": tags.operator,\n \", ; ::\": tags.separator,\n \"Attribute/...\": tags.meta,\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,self:28, super:32, crate:34, impl:46, true:72, false:72, pub:88, in:92, const:96, unsafe:104, async:108, move:110, if:114, let:118, ref:142, mut:144, _:198, else:200, match:204, as:248, return:252, await:262, break:270, continue:276, while:312, loop:316, for:320, macro_rules:327, mod:334, extern:342, struct:346, where:364, union:379, enum:382, type:390, default:395, fn:396, trait:412, use:420, static:438, dyn:476};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$2xQ]Q_OOP$wOWOOO&sQWO'#CnO)WQWO'#I`OOQP'#I`'#I`OOQQ'#Ie'#IeO)hO`O'#C}OOQR'#Ih'#IhO)sQWO'#IuOOQO'#Hk'#HkO)xQWO'#DpOOQR'#Iw'#IwO)xQWO'#DpO*ZQWO'#DpOOQO'#Iv'#IvO,SQWO'#J`O,ZQWO'#EiOOQV'#Hp'#HpO,cQYO'#F{OOQV'#El'#ElOOQV'#Em'#EmOOQV'#En'#EnO.YQ_O'#EkO0_Q_O'#EoO2gQWOOO4QQ_O'#FPO7hQWO'#J`OOQV'#FY'#FYO7{Q_O'#F^O:WQ_O'#FaOOQO'#F`'#F`O=sQ_O'#FcO=}Q_O'#FbO@VQWO'#FgOOQO'#J`'#J`OOQV'#Io'#IoOA]Q_O'#InOEPQWO'#InOOQV'#Fw'#FwOF[QWO'#JuOFcQWO'#F|OOQO'#IO'#IOOGrQWO'#GhOOQV'#Im'#ImOOQV'#Il'#IlOOQV'#Hj'#HjQGyQ_OOOKeQ_O'#DUOKlQYO'#CqOOQP'#I_'#I_OOQV'#Hg'#HgQ]Q_OOOLuQWO'#I`ONsQYO'#DXO!!eQWO'#JuO!!lQWO'#JuO!!vQ_O'#DfO!%]Q_O'#E}O!(sQ_O'#FWO!,ZQWO'#FZO!.^QXO'#FbO!.cQ_O'#EeO!!vQ_O'#FmO!0uQWO'#FoO!0zQWO'#FoO!1PQ^O'#FqO!1WQWO'#JuO!1_QWO'#FtO!1dQWO'#FxO!2WQWO'#JjO!2_QWO'#GOO!2_QWO'#G`O!2_QWO'#GbO!2_QWO'#GsOOQO'#Ju'#JuO!2dQWO'#GhO!2lQYO'#GpO!2_QWO'#GqO!3uQ^O'#GtO!3|QWO'#GuO!4hQWO'#HOP!4sOpO'#CcPOOO)CC})CC}OOOO'#Hi'#HiO!5OO`O,59iOOQV,59i,59iO!5ZQYO,5?aOOQO-E;i-E;iOOQO,5:[,5:[OOQP,59Z,59ZO)xQWO,5:[O)xQWO,5:[O!5oQWO,5?kO!5zQYO,5;qO!6PQYO,5;TO!6hQWO,59QO!7kQXO'#CnO!7xQXO'#I`O!9SQWO'#CoO,^QWO'#EiOOQV-E;n-E;nO!9eQWO'#FsOOQV,5<g,5<gO!9SQWO'#CoO!9jQWO'#CoO!9oQWO'#I`O! yQWO'#JuO!9yQWO'#J`O!:aQWO,5;VOOQO'#In'#InO!0zQWO'#DaO!<aQWO'#DcO!<iQWO,5;ZO.YQ_O,5;ZOOQO,5;[,5;[OOQV'#Er'#ErOOQV'#Es'#EsOOQV'#Et'#EtOOQV'#Eu'#EuOOQV'#Ev'#EvOOQV'#Ew'#EwOOQV'#Ex'#ExOOQV'#Ey'#EyO.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;]O.YQ_O,5;fO!=PQ_O,5;kO!@gQ_O'#FROOQO,5;l,5;lO!BrQWO,5;pO.YQ_O,5;wOKlQYO,5;gO!D_QWO,5;kO!EOQWO,5;xOOQO,5;x,5;xO!E]QWO,5;xO!EbQ_O,5;xO!GmQWO'#CfO!GrQWO,5<QO!G|Q_O,5<QOOQO,5;{,5;{O!JjQXO'#CnO!K{QXO'#I`OOQS'#Dk'#DkOOQP'#Ir'#IrO!LuQ[O'#IrO!L}QXO'#DjO!M{QWO'#DnO!M{QWO'#DnO!N^QWO'#DnOOQP'#It'#ItO!NcQXO'#ItO# ^Q^O'#DoO# hQWO'#DrO# pQ^O'#DzO# zQ^O'#D|O#!RQWO'#EPO#!^QXO'#FdOOQP'#ES'#ESOOQP'#Iq'#IqO#!lQXO'#JfOOQP'#Je'#JeO#!tQXO,5;}O#!yQXO'#I`O!1PQ^O'#DyO!1PQ^O'#FdO##sQWO,5;|OOQO,5;|,5;|OKlQYO,5;|O#$ZQWO'#FhOOQO,5<R,5<ROOQV,5=l,5=lO#&`QYO'#FzOOQV,5<h,5<hO#&gQWO,5<hO#&nQWO,5=SO!1WQWO,59rO!1dQWO,5<dO#&uQWO,5=iO!2_QWO,5<jO!2_QWO,5<zO!2_QWO,5<|O!2_QWO,5=QO#&|QWO,5=]O#'TQWO,5=SO!2_QWO,5=]O!3|QWO,5=aO#']QWO,5=jOOQO-E;|-E;|O#'hQWO'#JjOOQV-E;h-E;hO#(PQWO'#HRO#(WQ_O,59pOOQV,59p,59pO#(_QWO,59pO#(dQ_O,59pO#)SQZO'#CuO#+[QZO'#CvOOQV'#C|'#C|O#-wQWO'#HTO#.OQYO'#IdOOQO'#Hh'#HhO#.WQWO'#CwO#.WQWO'#CwO#.iQWO'#CwOOQR'#Ic'#IcO#.nQZO'#IbO#1TQYO'#HTO#1qQYO'#H[O#2}QYO'#H_OKlQYO'#H`OOQR'#Hb'#HbO#4ZQWO'#HeO#4`QYO,59]OOQR'#Ib'#IbO#5PQZO'#CtO#7[QYO'#HUO#7aQWO'#HTO#7fQYO'#CrO#8VQWO'#H]O#7fQYO'#HcOOQV-E;e-E;eO#8_QWO,59sOOQV,59{,59{O#8mQYO,5=[OOQV,59},59}O!0zQWO,59}O#;aQWO'#IpOOQO'#Ip'#IpO!1PQ^O'#DhO!0zQWO,5:QO#;hQWO,5;iO#<OQWO,5;rO#<fQ_O,5;rOOQO,5;u,5;uO#@PQ_O,5;|O#BXQWO,5;PO!0zQWO,5<XO#B`QWO,5<ZOOQV,5<Z,5<ZO#BkQWO,5<]O!1PQ^O'#EOOOQQ'#D_'#D_O#BsQWO,59rO#BxQWO,5<`O#B}QWO,5<dOOQO,5@U,5@UO#CVQWO,5=iOOQQ'#Cv'#CvO#C[QYO,5<jO#CmQYO,5<zO#CxQYO,5<|O#DTQYO,5=_O#DcQYO,5=SO#E{QYO'#GQO#FYQYO,5=[O#FmQWO,5=[O#F{QYO,5=[O#HUQYO,5=]O#HdQWO,5=`O!1PQ^O,5=`O#HrQWO'#CnO#ITQWO'#I`OOQO'#Jy'#JyO#IfQWO'#IQO#IkQWO'#GwOOQO'#Jz'#JzO#JSQWO'#GzOOQO'#G|'#G|OOQO'#Jx'#JxO#IkQWO'#GwO#JZQWO'#GxO#J`QWO,5=aO#JeQWO,5=jO!1dQWO,5=jO#'`QWO,5=jPOOO'#Hf'#HfP#JjOpO,58}POOO,58},58}OOOO-E;g-E;gOOQV1G/T1G/TO#JuQWO1G4{O#JzQ^O'#CyPOQQ'#Cx'#CxOOQO1G/v1G/vOOQP1G.u1G.uO)xQWO1G/vO#NTQ!fO'#ETO#N[Q!fO'#EaO#NcQ!fO'#EbO$ kQWO1G1yO$!_Q_O1G1yOOQP1G5V1G5VOOQO1G1]1G1]O$&RQWO1G0oO$&WQWO'#CiO!7xQXO'#I`O!6PQYO1G.lO!5oQWO,5<_O!9SQWO,59ZO!9SQWO,59ZO!5oQWO,5?kO$&iQWO1G0uO$(vQWO1G0wO$*nQWO1G0wO$+UQWO1G0wO$-YQWO1G0wO$-aQWO1G0wO$/bQWO1G0wO$/iQWO1G0wO$1jQWO1G0wO$1qQWO1G0wO$3YQWO1G1QO$5ZQWO1G1VO$5zQ_O'#JcO$8SQWO'#JcOOQO'#Jb'#JbO$8^QWO,5;mOOQO'#Dw'#DwOOQO1G1[1G1[OOQO1G1Y1G1YO$8cQWO1G1cOOQO1G1R1G1RO$8jQ_O'#HrO$:xQWO,5@OO.YQ_O1G1dOOQO1G1d1G1dO$;QQWO1G1dO$;_QWO1G1dO$;dQWO1G1eOOQO1G1l1G1lO$;lQWO1G1lOOQP,5?^,5?^O$;vQ^O,5:kO$<aQXO,5:YO!M{QWO,5:YO!M{QWO,5:YO!1PQ^O,5:gO$=bQWO'#IyOOQO'#Ix'#IxO$=pQWO,5:ZO# ^Q^O,5:ZO$=uQWO'#DsOOQP,5:^,5:^O$>WQWO,5:fOOQP,5:h,5:hO!1PQ^O,5:hO!1PQ^O,5:mO$>]QYO,5<OO$>gQ_O'#HsO$>tQXO,5@QOOQV1G1i1G1iOOQP,5:e,5:eO$>|QXO,5<OO$?[QWO1G1hO$?dQWO'#CnO$?oQWO'#FiOOQO'#Fi'#FiO$?wQWO'#FjO.YQ_O'#FkOOQO'#Ji'#JiO$?|QWO'#JhOOQO'#Jg'#JgO$@UQWO,5<SOOQQ'#Hv'#HvO$@ZQYO,5<fOOQV,5<f,5<fO$@bQYO,5<fOOQV1G2S1G2SO$@iQWO1G2nO$@qQWO1G/^O$@vQWO1G2OO#CVQWO1G3TO$AOQYO1G2UO#CmQYO1G2fO#CxQYO1G2hO$AaQYO1G2lO!2_QWO1G2wO#DcQYO1G2nO#HUQYO1G2wO$AiQWO1G2{O$AnQWO1G3UO!1dQWO1G3UO$AsQWO1G3UOOQV1G/[1G/[O$A{QWO1G/[O$BQQ_O1G/[O#7aQWO,5=oO$BXQYO,5?OO$BmQWO,5?OO$BrQZO'#IeOOQO-E;f-E;fOOQR,59c,59cO#.WQWO,59cO#.WQWO,59cOOQR,5=n,5=nO$E_QYO'#HVO$FwQZO,5=oO!5oQWO,5={O$IZQWO,5=oO$IbQZO,5=vO$KqQYO,5=vO$>]QYO,5=vO$LRQWO'#KRO$L^QWO,5=xOOQR,5=y,5=yO$LcQWO,5=zO$>]QYO,5>PO$>]QYO,5>POOQO1G.w1G.wO$>]QYO1G.wO$LnQYO,5=pO$LvQZO,59^OOQR,59^,59^O$>]QYO,5=wO% YQZO,5=}OOQR,5=},5=}O%#lQWO1G/_O!6PQYO1G/_O#FYQYO1G2vO%#qQWO1G2vO%$PQYO1G2vOOQV1G/i1G/iO%%YQWO,5:SO%%bQ_O1G/lO%*kQWO1G1^O%+RQWO1G1hOOQO1G1h1G1hO$>]QYO1G1hO%+iQ^O'#EgOOQV1G0k1G0kOOQV1G1s1G1sO!!vQ_O1G1sO!0zQWO1G1uO!1PQ^O1G1wO!.cQ_O1G1wOOQP,5:j,5:jO$>]QYO1G/^OOQO'#Cn'#CnO%+vQWO1G1zOOQV1G2O1G2OO%,OQWO'#CnO%,WQWO1G3TO%,]QWO1G3TO%,bQYO'#GQO%,sQWO'#G]O%-UQYO'#G_O%.hQYO'#GXOOQV1G2U1G2UO%/wQWO1G2UO%/|QWO1G2UO$ARQWO1G2UOOQV1G2f1G2fO%/wQWO1G2fO#CpQWO1G2fO%0UQWO'#GdOOQV1G2h1G2hO%0gQWO1G2hO#C{QWO1G2hO%0lQYO'#GSO$>]QYO1G2lO$AdQWO1G2lOOQV1G2y1G2yO%1xQWO1G2yO%3hQ^O'#GkO%3rQWO1G2nO#DfQWO1G2nO%4QQYO,5<lO%4[QYO,5<lO%4jQYO,5<lO%5XQYO,5<lOOQQ,5<l,5<lO!1WQWO'#JuO%5dQYO,5<lO%5lQWO1G2vOOQV1G2v1G2vO%5tQWO1G2vO$>]QYO1G2vOOQV1G2w1G2wO%5tQWO1G2wO%5yQWO1G2wO#HXQWO1G2wOOQV1G2z1G2zO.YQ_O1G2zO$>]QYO1G2zO%6RQWO1G2zOOQO,5>l,5>lOOQO-E<O-E<OOOQO,5=c,5=cOOQO,5=e,5=eOOQO,5=g,5=gOOQO,5=h,5=hO%6aQWO'#J|OOQO'#J{'#J{O%6iQWO,5=fO%6nQWO,5=cO!1dQWO,5=dOOQV1G2{1G2{O$>]QYO1G3UPOOO-E;d-E;dPOOO1G.i1G.iOOQO7+*g7+*gO%7VQYO'#IcO%7nQYO'#IfO%7yQYO'#IfO%8RQYO'#IfO%8^QYO,59eOOQO7+%b7+%bOOQP7+$a7+$aO%8cQ!fO'#JTOOQS'#EX'#EXOOQS'#EY'#EYOOQS'#EZ'#EZOOQS'#JT'#JTO%;UQWO'#EWOOQS'#E`'#E`OOQS'#JR'#JROOQS'#Hn'#HnO%;ZQ!fO,5:oOOQV,5:o,5:oOOQV'#JQ'#JQO%;bQ!fO,5:{OOQV,5:{,5:{O%;iQ!fO,5:|OOQV,5:|,5:|OOQV7+'e7+'eOOQV7+&Z7+&ZO%;pQ!fO,59TOOQO,59T,59TO%>YQWO7+$WO%>_QWO1G1yOOQV1G1y1G1yO!9SQWO1G.uO%>dQWO,5?}O%>nQ_O'#HqO%@|QWO,5?}OOQO1G1X1G1XOOQO7+&}7+&}O%AUQWO,5>^OOQO-E;p-E;pO%AcQWO7+'OO.YQ_O7+'OOOQO7+'O7+'OOOQO7+'P7+'PO%AjQWO7+'POOQO7+'W7+'WOOQP1G0V1G0VO%ArQXO1G/tO!M{QWO1G/tO%BsQXO1G0RO%CkQ^O'#HlO%C{QWO,5?eOOQP1G/u1G/uO%DWQWO1G/uO%D]QWO'#D_OOQO'#Dt'#DtO%DhQWO'#DtO%DmQWO'#I{OOQO'#Iz'#IzO%DuQWO,5:_O%DzQWO'#DtO%EPQWO'#DtOOQP1G0Q1G0QOOQP1G0S1G0SOOQP1G0X1G0XO%EXQXO1G1jO%EdQXO'#FeOOQP,5>_,5>_O!1PQ^O'#FeOOQP-E;q-E;qO$>]QYO1G1jOOQO7+'S7+'SOOQO,5<T,5<TO%ErQWO,5<UO.YQ_O,5<UO%EwQWO,5<VO%FRQWO'#HtO%FdQWO,5@SOOQO1G1n1G1nOOQQ-E;t-E;tOOQV1G2Q1G2QO%FlQYO1G2QO#DcQYO7+(YO$>]QYO7+$xOOQV7+'j7+'jO%FsQWO7+(oO%FxQWO7+(oOOQV7+'p7+'pO%/wQWO7+'pO%F}QWO7+'pO%GVQWO7+'pOOQV7+(Q7+(QO%/wQWO7+(QO#CpQWO7+(QOOQV7+(S7+(SO%0gQWO7+(SO#C{QWO7+(SO$>]QYO7+(WO%GeQWO7+(WO#HUQYO7+(cO%GjQWO7+(YO#DfQWO7+(YOOQV7+(c7+(cO%5tQWO7+(cO%5yQWO7+(cO#HXQWO7+(cOOQV7+(g7+(gO$>]QYO7+(pO%GxQWO7+(pO!1dQWO7+(pOOQV7+$v7+$vO%G}QWO7+$vO%HSQZO1G3ZO%JfQWO1G4jOOQO1G4j1G4jOOQR1G.}1G.}O#.WQWO1G.}O%JkQWO'#KQOOQO'#HW'#HWO%J|QWO'#HXO%KXQWO'#KQOOQO'#KP'#KPO%KaQWO,5=qO%KfQYO'#H[O%LrQWO'#GmO%L}QYO'#CtO%MXQWO'#GmO$>]QYO1G3ZOOQR1G3g1G3gO#7aQWO1G3ZO%M^QZO1G3bO$>]QYO1G3bO& mQYO'#IVO& }QWO,5@mOOQR1G3d1G3dOOQR1G3f1G3fO.YQ_O1G3fOOQR1G3k1G3kO&!VQYO7+$cO&!_QYO'#KOOOQQ'#J}'#J}O&!gQYO1G3[O&!lQZO1G3cOOQQ7+$y7+$yO&${QWO7+$yO&%QQWO7+(bOOQV7+(b7+(bO%5tQWO7+(bO$>]QYO7+(bO#FYQYO7+(bO&%YQWO7+(bO!.cQ_O1G/nO&%hQWO7+%WO$?[QWO7+'SO&%pQWO'#EhO&%{Q^O'#EhOOQU'#Ho'#HoO&%{Q^O,5;ROOQV,5;R,5;RO&&VQWO,5;RO&&[Q^O,5;RO!0zQWO7+'_OOQV7+'a7+'aO&&iQWO7+'cO&&qQWO7+'cO&&xQWO7+$xO&'TQ!fO7+'fO&'[Q!fO7+'fOOQV7+(o7+(oO!1dQWO7+(oO&'cQYO,5<lO&'nQYO,5<lO!1dQWO'#GWO&'|QWO'#JpO&([QWO'#G^O!BxQWO'#G^O&(aQWO'#JpOOQO'#Jo'#JoO&(iQWO,5<wOOQO'#DX'#DXO&(nQYO'#JrO&)}QWO'#JrO$>]QYO'#JrOOQO'#Jq'#JqO&*YQWO,5<yO&*_QWO'#GZO#D^QWO'#G[O&*gQWO'#G[O&*oQWO'#JmOOQO'#Jl'#JlO&*zQYO'#GTOOQO,5<s,5<sO&+PQWO7+'pO&+UQWO'#JtO&+dQWO'#GeO#BxQWO'#GeO&+uQWO'#JtOOQO'#Js'#JsO&+}QWO,5=OO$>]QYO'#GUO&,SQYO'#JkOOQQ,5<n,5<nO&,kQWO7+(WOOQV7+(e7+(eO&.TQ^O'#D|O&._QWO'#GlO&.gQ^O'#JwOOQO'#Gn'#GnO&.nQWO'#JwOOQO'#Jv'#JvO&.vQWO,5=VO&.{QWO'#I`O&/]Q^O'#GmO&/dQWO'#IqO&/rQWO'#GmOOQV7+(Y7+(YO&/zQWO7+(YO$>]QYO7+(YO&0SQYO'#HxO&0hQYO1G2WOOQQ1G2W1G2WOOQQ,5<m,5<mO$>]QYO,5<qO&0pQWO,5<rO&0uQWO7+(bO&1QQWO7+(fO&1XQWO7+(fOOQV7+(f7+(fO.YQ_O7+(fO$>]QYO7+(fO&1dQWO'#IRO&1nQWO,5@hOOQO1G3Q1G3QOOQO1G2}1G2}OOQO1G3P1G3POOQO1G3R1G3ROOQO1G3S1G3SOOQO1G3O1G3OO&1vQWO7+(pO$>]QYO,59fO&2RQ^O'#ISO&2xQYO,5?QOOQR1G/P1G/PO&3QQ!bO,5:pO&3VQ!fO,5:rOOQS-E;l-E;lOOQV1G0Z1G0ZOOQV1G0g1G0gOOQV1G0h1G0hO&3^QWO'#JTOOQO1G.o1G.oOOQV<<Gr<<GrO&3iQWO1G5iO$5zQ_O,5>]O&3qQWO,5>]OOQO-E;o-E;oOOQO<<Jj<<JjO&3{QWO<<JjOOQO<<Jk<<JkO&4SQXO7+%`O&5TQWO,5>WOOQO-E;j-E;jOOQP7+%a7+%aO!1PQ^O,5:`O&5cQWO'#HmO&5wQWO,5?gOOQP1G/y1G/yOOQO,5:`,5:`O&6PQWO,5:`O%DzQWO,5:`O$>]QYO,5<PO&6UQXO,5<PO&6dQXO7+'UO.YQ_O1G1pO&6oQWO1G1pOOQO,5>`,5>`OOQO-E;r-E;rOOQV7+'l7+'lO&6yQWO<<KtO#DfQWO<<KtO&7XQWO<<HdOOQV<<LZ<<LZO!1dQWO<<LZOOQV<<K[<<K[O&7dQWO<<K[O%/wQWO<<K[O&7iQWO<<K[OOQV<<Kl<<KlO%/wQWO<<KlOOQV<<Kn<<KnO%0gQWO<<KnO&7qQWO<<KrO$>]QYO<<KrOOQV<<K}<<K}O%5tQWO<<K}O%5yQWO<<K}O#HXQWO<<K}OOQV<<Kt<<KtO&7yQWO<<KtO$>]QYO<<KtO&8RQWO<<L[O$>]QYO<<L[O&8^QWO<<L[OOQV<<Hb<<HbO$>]QYO7+(uOOQO7+*U7+*UOOQR7+$i7+$iO&8cQWO,5@lOOQO'#Gm'#GmO&8kQWO'#GmO&8vQYO'#IUO&8cQWO,5@lOOQR1G3]1G3]O&:cQYO,5=vO&;rQYO,5=XO&;|QWO,5=XOOQO,5=X,5=XOOQR7+(u7+(uO&<RQZO7+(uO&>eQZO7+(|O&@tQWO,5>qOOQO-E<T-E<TO&APQWO7+)QOOQO<<G}<<G}O&AWQYO'#ITO&AcQYO,5@jOOQQ7+(v7+(vOOQQ<<He<<HeO$>]QYO<<K|OOQV<<K|<<K|O&0uQWO<<K|O&AkQWO<<K|O%5tQWO<<K|O&AsQWO7+%YOOQV<<Hr<<HrOOQO<<Jn<<JnO.YQ_O,5;SO&AzQWO,5;SO.YQ_O'#EjO&BPQWO,5;SOOQU-E;m-E;mO&B[QWO1G0mOOQV1G0m1G0mO&%{Q^O1G0mOOQV<<Jy<<JyO!.cQ_O<<J}OOQV<<J}<<J}OOQV<<Hd<<HdO.YQ_O<<HdO&BaQWO'#FvO&BfQWO<<KQO&BnQ!fO<<KQO&BuQWO<<KQO&BzQWO<<KQO&CSQ!fO<<KQOOQV<<KQ<<KQO&CZQWO<<LZO&C`QWO,5@[O$>]QYO,5<xO&ChQWO,5<xO&CmQWO'#H{O&C`QWO,5@[OOQV1G2c1G2cO&DRQWO,5@^O$>]QYO,5@^O&D^QYO'#H|O&EsQWO,5@^OOQO1G2e1G2eO%,nQWO,5<uOOQO,5<v,5<vO&E{QYO'#HzO&G_QWO,5@XO%,bQYO,5=pO$>]QYO,5<oO&GjQWO,5@`O.YQ_O,5=PO&GrQWO,5=PO&G}QWO,5=PO&H`QWO'#H}O&GjQWO,5@`OOQV1G2j1G2jO&HtQYO,5<pO%0lQYO,5>PO&I]QYO,5@VOOQV<<Kr<<KrO&ItQWO,5=XO&KfQ^O,5:hO&KmQWO,5=XO$>]QYO,5=WO&KuQWO,5@cO&K}QWO,5@cO&MvQ^O'#IPO&KuQWO,5@cOOQO1G2q1G2qO&NTQWO,5=WO&N]QWO<<KtO&NkQYO,5>oO&NvQYO,5>dO' UQYO,5>dOOQQ,5>d,5>dOOQQ-E;v-E;vOOQQ7+'r7+'rO' aQYO1G2]O$>]QYO1G2^OOQV<<LQ<<LQO.YQ_O<<LQO' lQWO<<LQO' sQWO<<LQOOQO,5>m,5>mOOQO-E<P-E<POOQV<<L[<<L[O.YQ_O<<L[O'!OQYO1G/QO'!ZQYO,5>nOOQQ,5>n,5>nO'!fQYO,5>nOOQQ-E<Q-E<QOOQS1G0[1G0[O'$tQ!fO1G0^O'%RQ!fO1G0^O'%YQWO1G3wOOQOAN@UAN@UO'%dQWO1G/zOOQO,5>X,5>XOOQO-E;k-E;kO!1PQ^O1G/zOOQO1G/z1G/zO'%oQWO1G/zO'%tQXO1G1kO$>]QYO1G1kO'&PQWO7+'[OOQVANA`ANA`O'&ZQWOANA`O$>]QYOANA`O'&cQWOANA`OOQVAN>OAN>OO.YQ_OAN>OO'&qQWOANAuOOQVAN@vAN@vO'&vQWOAN@vOOQVANAWANAWOOQVANAYANAYOOQVANA^ANA^O'&{QWOANA^OOQVANAiANAiO%5tQWOANAiO%5yQWOANAiO''TQWOANA`OOQVANAvANAvO.YQ_OANAvO''cQWOANAvO$>]QYOANAvOOQR<<La<<LaO''nQWO1G6WO%JkQWO,5>pOOQO'#HY'#HYO''vQWO'#HZOOQO,5>p,5>pOOQO-E<S-E<SO'(RQYO1G2sO'(]QWO1G2sOOQO1G2s1G2sO$>]QYO<<LaOOQR<<Ll<<LlOOQQ,5>o,5>oOOQQ-E<R-E<RO&0uQWOANAhOOQVANAhANAhO%5tQWOANAhO$>]QYOANAhO'(bQWO1G1rO')UQ^O1G0nO.YQ_O1G0nO'*zQWO,5;UO'+RQWO1G0nP'+WQWO'#ERP&%{Q^O'#HpOOQV7+&X7+&XO'+cQWO7+&XO&&qQWOAN@iO'+hQWOAN>OO!5oQWO,5<bOOQS,5>a,5>aO'+oQWOAN@lO'+tQWOAN@lOOQS-E;s-E;sOOQVAN@lAN@lO'+|QWOAN@lOOQVANAuANAuO',UQWO1G5vO',^QWO1G2dO$>]QYO1G2dO&'|QWO,5>gOOQO,5>g,5>gOOQO-E;y-E;yO',iQWO1G5xO',qQWO1G5xO&(nQYO,5>hO',|QWO,5>hO$>]QYO,5>hOOQO-E;z-E;zO'-XQWO'#JnOOQO1G2a1G2aOOQO,5>f,5>fOOQO-E;x-E;xO&'cQYO,5<lO'-gQYO1G2ZO'.RQWO1G5zO'.ZQWO1G2kO.YQ_O1G2kO'.eQWO1G2kO&+UQWO,5>iOOQO,5>i,5>iOOQO-E;{-E;{OOQQ,5>c,5>cOOQQ-E;u-E;uO'.pQWO1G2sO'/QQWO1G2rO'/]QWO1G5}O'/eQ^O,5>kOOQO'#Go'#GoOOQO,5>k,5>kO'/lQWO,5>kOOQO-E;}-E;}O$>]QYO1G2rO'/zQYO7+'xO'0VQWOANAlOOQVANAlANAlO.YQ_OANAlO'0^QWOANAvOOQS7+%x7+%xO'0eQWO7+%xO'0pQ!fO7+%xO'0}QWO7+%fO!1PQ^O7+%fO'1YQXO7+'VOOQVG26zG26zO'1eQWOG26zO'1sQWOG26zO$>]QYOG26zO'1{QWOG23jOOQVG27aG27aOOQVG26bG26bOOQVG26xG26xOOQVG27TG27TO%5tQWOG27TO'2SQWOG27bOOQVG27bG27bO.YQ_OG27bO'2ZQWOG27bOOQO1G4[1G4[OOQO7+(_7+(_OOQRANA{ANA{OOQVG27SG27SO%5tQWOG27SO&0uQWOG27SO'2fQ^O7+&YO'4PQWO7+'^O'4sQ^O7+&YO.YQ_O7+&YP.YQ_O,5;SP'6PQWO,5;SP'6UQWO,5;SOOQV<<Is<<IsOOQVG26TG26TOOQVG23jG23jOOQO1G1|1G1|OOQVG26WG26WO'6aQWOG26WP&B}QWO'#HuO'6fQWO7+(OOOQO1G4R1G4RO'6qQWO7++dO'6yQWO1G4SO$>]QYO1G4SO%,nQWO'#HyO'7UQWO,5@YO'7dQWO7+(VO.YQ_O7+(VOOQO1G4T1G4TOOQO1G4V1G4VO'7nQWO1G4VO'7|QWO7+(^OOQVG27WG27WO'8XQWOG27WOOQS<<Id<<IdO'8`QWO<<IdO'8kQWO<<IQOOQVLD,fLD,fO'8vQWOLD,fO'9OQWOLD,fOOQVLD)ULD)UOOQVLD,oLD,oOOQVLD,|LD,|O'9^QWOLD,|O.YQ_OLD,|OOQVLD,nLD,nO%5tQWOLD,nO'9eQ^O<<ItO';OQWO<<JxO';rQ^O<<ItP'=OQWO1G0nP'=oQ^O1G0nP.YQ_O1G0nP'?bQWO1G0nOOQVLD+rLD+rO'?gQWO7+)nOOQO,5>e,5>eOOQO-E;w-E;wO'?rQWO<<KqOOQVLD,rLD,rOOQSAN?OAN?OOOQV!$(!Q!$(!QO'?|QWO!$(!QOOQV!$(!h!$(!hO'@UQWO!$(!hOOQV!$(!Y!$(!YO'@]Q^OAN?`POQU7+&Y7+&YP'AvQWO7+&YP'BgQ^O7+&YP.YQ_O7+&YOOQV!)9El!)9ElOOQV!)9FS!)9FSPOQU<<It<<ItP'DYQWO<<ItP'DyQ^O<<ItPOQUAN?`AN?`O'FlQWO'#CnO'FsQXO'#CnO'GlQWO'#I`O'IRQXO'#I`O'IxQWO'#DpO'IxQWO'#DpO!.cQ_O'#EkO'JZQ_O'#EoO'JbQ_O'#FPO'MfQ_O'#FbO'MmQXO'#I`O'NdQ_O'#E}O( gQ_O'#FWO'IxQWO,5:[O'IxQWO,5:[O!.cQ_O,5;ZO!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;]O!.cQ_O,5;fO(!jQ_O,5;kO(%nQWO,5;kO(&OQWO,5;|O(&VQYO'#CuO(&bQYO'#CvO(&mQWO'#CwO(&mQWO'#CwO('OQYO'#CtO('ZQWO,5;iO('bQWO,5;rO('iQ_O,5;rO((oQ_O,5;|O'IxQWO1G/vO((vQWO1G0uO(*eQWO1G0wO(*oQWO1G0wO(,dQWO1G0wO(,kQWO1G0wO(.]QWO1G0wO(.dQWO1G0wO(0UQWO1G0wO(0]QWO1G0wO(0dQWO1G1QO(0tQWO1G1VO(1UQYO'#IeO(&mQWO,59cO(&mQWO,59cO(1aQWO1G1^O(1hQWO1G1hO(&mQWO1G.}O(1oQWO'#DpO!.^QXO'#FbO(1tQWO,5;ZO(1{QWO'#Cw\",\n stateData: \"(2_~O&|OSUOS&}PQ~OPoOQ!QOSVOTVOZeO[lO^RO_RO`ROa!UOd[Og!nOsVOtVOuVOw!POyvO|!VO}mO!Q!dO!U!WO!W!XO!X!^O!Z!YO!]!pO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO$i!eO$m!fO$q!gO$s!hO%T!iO%V!jO%Z!kO%]!lO%^!mO%f!oO%j!qO%s!rO'Q`O'TQO'ZkO'^UO'gcO'qiO(QdO~O&}!sO~OZbX[bXdbXdlXobXwjX}bX!lbX!qbX!tbX#ObX#PbX#pbX'gbX'qbX'rbX'xbX'ybX'zbX'{bX'|bX'}bX(ObX(PbX(QbX(RbX(TbX~OybXXbX!ebX!PbXvbX#RbX~P$|OZ'SX['SXd'SXd'XXo'SXw'kXy'SX}'SX!l'SX!q'SX!t'SX#O'SX#P'SX#p'SX'g'SX'q'SX'r'SX'x'SX'y'SX'z'SX'{'SX'|'SX'}'SX(O'SX(P'SX(Q'SX(R'SX(T'SXv'SX~OX'SX!e'SX!P'SX#R'SX~P'ZOr!uO']!wO'_!uO~Od!xO~O^RO_RO`ROaRO'TQO~Od!}O~Od#PO[(SXo(SXy(SX}(SX!l(SX!q(SX!t(SX#O(SX#P(SX#p(SX'g(SX'q(SX'r(SX'x(SX'y(SX'z(SX'{(SX'|(SX'}(SX(O(SX(P(SX(Q(SX(R(SX(T(SXv(SX~OZ#OO~P*`OZ#RO[#QO~OQ!QO^#TO_#TO`#TOa#]Od#ZOg!nOyvO|!VO!Q!dO!U#^O!W!lO!]!pO$i!eO$m!fO$q!gO$s!hO%T!iO%V!jO%Z!kO%]!lO%^!mO%f!oO%j!qO%s!rO'Q#VO'T#SO~OPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdO~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!j#eO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdO~P)xO[#}Oo#xO}#zO!l#yO!q#jO!t#yO#O#xO#P#uO#p$OO'g#gO'q#yO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO~OPoOQ!QOSVOTVOZeOd[OsVOtVOuVOw!PO!U#bO!W#cO!X!^O!Z!YO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO[#sXo#sXy#sX}#sX!l#sX!q#sX!t#sX#O#sX#P#sX#p#sX'g#sX'q#sX'r#sX'x#sX'y#sX'z#sX'{#sX'|#sX'}#sX(O#sX(P#sX(Q#sX(R#sX(T#sXX#sX!e#sX!P#sXv#sX#R#sX~P)xOX(SX!e(SX!P(SXw(SX#R(SX~P*`OPoOQ!QOSVOTVOX$ROZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q$UO'ZkO'^UO'gcO'qiO(QdO~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!P$XO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q$UO'ZkO'^UO'gcO'qiO(QdO~P)xOQ!QOSVOTVO[$gO^$pO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!l$lO!q$hO#V$lO'T$YO'^UO'g$[O~O!j$rOP(XP~P<cOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Q$uO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdO~P)xOw$vO~Oo'bX#O'bX#P'bX#p'bX'r'bX'x'bX'y'bX'z'bX'{'bX'|'bX'}'bX(O'bX(P'bX(R'bX(T'bX~OP%tXQ%tXS%tXT%tXZ%tX[%tX^%tX_%tX`%tXa%tXd%tXg%tXs%tXt%tXu%tXw%tXy%tX|%tX}%tX!Q%tX!U%tX!W%tX!X%tX!Z%tX!]%tX!l%tX!q%tX!t%tX#Y%tX#r%tX#{%tX$O%tX$b%tX$d%tX$f%tX$i%tX$m%tX$q%tX$s%tX%T%tX%V%tX%Z%tX%]%tX%^%tX%f%tX%j%tX%s%tX&z%tX'Q%tX'T%tX'Z%tX'^%tX'g%tX'q%tX(Q%tXv%tX~P@[Oy$xO['bX}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bXv'bX~P@[Ow$yO!Q(iX!U(iX!W(iX$q(iX%](iX%^(iX~Oy$zO~PEsO!Q$}O!U%UO!W!lO$m%OO$q%PO$s%QO%T%RO%V%SO%Z%TO%]!lO%^%VO%f%WO%j%XO%s%YO~O!Q!lO!U!lO!W!lO$q%[O%]!lO~O%^%VO~PGaOPoOQ!QOSVOTVOZeO[lO^RO_RO`ROa!UOd[Og!nOsVOtVOuVOw!POyvO|!VO}mO!Q!dO!U!WO!W!XO!X!^O!Z!YO!]!pO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO$i!eO$m!fO$q!gO$s!hO%T!iO%V!jO%Z!kO%]!lO%^!mO%f!oO%j!qO%s!rO'Q#VO'TQO'ZkO'^UO'gcO'qiO(QdO~Ov%`O~P]OQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO!Q{X!U{X!W{X$m{X$q{X$s{X%T{X%V{X%Z{X%]{X%^{X%f{X%j{X%s{X~P'ZO!Q{X!U{X!W{X$m{X$q{X$s{X%T{X%V{X%Z{X%]{X%^{X%f{X%j{X%s{X~O}%}O'T{XQ{XZ{X[{X^{X_{X`{Xa{Xd{Xg{X!q{X$f{X&W{X'Z{X(Q{X~PMuOg&PO%f%WO!Q(iX!U(iX!W(iX$q(iX%](iX%^(iX~Ow!PO~P! yOw!PO!X&RO~PEvOPoOQ!QOSVOTVOZeO[lO^9qO_9qO`9qOa9qOd9tOsVOtVOuVOw!PO}mO!U#bO!W#cO!X:zO!Z!YO!]&UO!l9wO!q9vO!t9wO#Y!_O#r9zO#{9{O$O!]O$b!`O$d!bO$f!cO'T9oO'ZkO'^UO'gcO'q9wO(QdO~OPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdOo#qXy#qX#O#qX#P#qX#p#qX'r#qX'x#qX'y#qX'z#qX'{#qX'|#qX'}#qX(O#qX(P#qX(R#qX(T#qXX#qX!e#qX!P#qXv#qX#R#qX~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdOo#zXy#zX#O#zX#P#zX#p#zX'r#zX'x#zX'y#zX'z#zX'{#zX'|#zX'}#zX(O#zX(P#zX(R#zX(T#zXX#zX!e#zX!P#zXv#zX#R#zX~P)xO'ZkO[#}Xo#}Xy#}X}#}X!l#}X!q#}X!t#}X#O#}X#P#}X#p#}X'g#}X'q#}X'r#}X'x#}X'y#}X'z#}X'{#}X'|#}X'}#}X(O#}X(P#}X(Q#}X(R#}X(T#}XX#}X!e#}X!P#}Xv#}Xw#}X#R#}X~OPoO~OPoOQ!QOSVOTVOZeO[lO^9qO_9qO`9qOa9qOd9tOsVOtVOuVOw!PO}mO!U#bO!W#cO!X:zO!Z!YO!l9wO!q9vO!t9wO#Y!_O#r9zO#{9{O$O!]O$b!`O$d!bO$f!cO'T9oO'ZkO'^UO'gcO'q9wO(QdO~O!S&_O~Ow!PO~O!j&bO~P<cO'T&cO~PEvOZ&eO~O'T&cO~O'^UOw(^Xy(^X!Q(^X!U(^X!W(^X$q(^X%](^X%^(^X~Oa&hO~P!1iO'T&iO~O_&nO'T&cO~OQ&oOZ&pO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO!j&uO~P<cO^&wO_&wO`&wOa&wOd'POw&|O'T&vO(Q&}O~O!i'UO!j'TO'T&cO~O&}!sO'O'VO'P'XO~Or!uO']'ZO'_!uO~OQ']O^'ia_'ia`'iaa'ia'T'ia~O['cOw'dO}'bO~OQ']O~OQ!QO^#TO_#TO`#TOa'kOd#ZO'T#SO~O['lO~OZbXdlXXbXobXPbX!SbX!ebX'rbX!PbX!ObXybX!ZbX#RbXvbX~O[bXwbX}bX~P!6mOZ'SXd'XXX'SX['SXo'SXw'SX}'SX#p'SXP'SX!S'SX!e'SX'r'SX!P'SX!O'SXy'SX!Z'SX#R'SXv'SX~O^#TO_#TO`#TOa'kO'T#SO~OZ'mO~Od'oO~OZ'SXd'XX~PMuOZ'pOX(SX!e(SX!P(SXw(SX#R(SX~P*`O[#}O}#zO(O#|O(R#fOo#_ay#_a!l#_a!q#_a!t#_a#O#_a#P#_a#p#_a'g#_a'q#_a'r#_a'x#_a'y#_a'z#_a'{#_a'|#_a'}#_a(P#_a(Q#_a(T#_aX#_a!e#_a!P#_av#_aw#_a#R#_a~Ow!PO!X&RO~Oy#caX#ca!e#ca!P#cav#ca#R#ca~P2gOPoOQ!QOSVOTVOZeOd[OsVOtVOuVOw!PO!U#bO!W#cO!X!^O!Z!YO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO[#sao#say#sa}#sa!l#sa!q#sa!t#sa#O#sa#P#sa#p#sa'g#sa'q#sa'r#sa'x#sa'y#sa'z#sa'{#sa'|#sa'}#sa(O#sa(P#sa(Q#sa(R#sa(T#saX#sa!e#sa!P#sav#sa#R#sa~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q#VO'ZkO'^UO'gcO'qiO(QdO!P(UP~P)xOu(SO#w(TO'T(RO~O[#}O}#zO!q#jO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO!l#sa!t#sa#p#sa'q#sa~Oo#xO#O#xO#P#uOy#saX#sa!e#sa!P#sav#sa#R#sa~P!B}Oy(YO!e(WOX(WX~P2gOX(ZO~OPoOQ!QOSVOTVOX(ZOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q$UO'ZkO'^UO'gcO'qiO(QdO~P)xOZ#RO~O!P(_O!e(WO~P2gOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q$UO'ZkO'^UO'gcO'qiO(QdO~P)xOZbXdlXwjX}jX!tbX'qbX~OP!RX!S!RX!e!RX'p!RX'r!RX!O!RXo!RXy!RX!P!RXX!RX!Z!RX#R!RXv!RX~P!JUOZ'SXd'XXw'kX}'kX!t'SX'q'SX~OP!`X!S!`X!e!`X'r!`X!O!`Xo!`Xy!`X!P!`XX!`X!Z!`X#R!`Xv!`X~P!KgOT(aOu(aO~O!t(bO'q(bOP!^X!S!^X!e!^X'r!^X!O!^Xo!^Xy!^X!P!^XX!^X!Z!^X#R!^Xv!^X~O^9rO_9rO`9yOa9yO'T9pO~Od(eO~O'p(fOP'hX!S'hX!e'hX'r'hX!O'hXo'hXy'hX!P'hXX'hX!Z'hX#R'hXv'hX~O!j&bO!P'lP~P<cOw(kO}(jO~O!j&bOX'lP~P<cO!j(oO~P<cOZ'pO!t(bO'q(bO~O!S(qO'r(pOP$WX!e$WX~O!e(rOP(YX~OP(tO~OP!aX!S!aX!e!aX'r!aX!O!aXo!aXy!aX!P!aXX!aX!Z!aX#R!aXv!aX~P!KgOy$UaX$Ua!e$Ua!P$Uav$Ua#R$Ua~P2gO!l(|O'Q#VO'T(xOv(ZP~OQ!QO^#TO_#TO`#TOa#]Od#ZOg!nOyvO|!VO!Q!dO!U#^O!W!lO!]!pO$i!eO$m!fO$q!gO$s!hO%T!iO%V!jO%Z!kO%]!lO%^!mO%f!oO%j!qO%s!rO'Q`O'T#SO~Ov)TO~P#$iOy)VO~PEsO%^)WO~PGaOa)ZO~P!1iO%f)`O~PEvO_)aO'T&cO~O!i)fO!j)eO'T&cO~O'^UO!Q(^X!U(^X!W(^X$q(^X%](^X%^(^X~Ov%uX~P2gOv)gO~PGyOv)gO~Ov)gO~P]OQiXQ'XXZiXd'XX}iX#piX(PiX~ORiXwiX$fiX$|iX[iXoiXyiX!liX!qiX!tiX#OiX#PiX'giX'qiX'riX'xiX'yiX'ziX'{iX'|iX'}iX(OiX(QiX(RiX(TiX!PiX!eiXXiXPiXviX!SiX#RiX~P#(kOQjXQlXRjXZjXdlX}jX#pjX(PjXwjX$fjX$|jX[jXojXyjX!ljX!qjX!tjX#OjX#PjX'gjX'qjX'rjX'xjX'yjX'zjX'{jX'|jX'}jX(OjX(QjX(RjX(TjX!PjX!ejXXjX!SjXPjXvjX#RjX~O%^)jO~PGaOQ']Od)kO~O^)mO_)mO`)mOa)mO'T%dO~Od)qO~OQ']OZ)uO})sOR'UX#p'UX(P'UXw'UX$f'UX$|'UX['UXo'UXy'UX!l'UX!q'UX!t'UX#O'UX#P'UX'g'UX'q'UX'r'UX'x'UX'y'UX'z'UX'{'UX'|'UX'}'UX(O'UX(Q'UX(R'UX(T'UX!P'UX!e'UXX'UXP'UXv'UX!S'UX#R'UX~OQ!QO^:bO_:^O`TOaTOd:aO%^)jO'T:_O~PGaOQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!j)yO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaOQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!P)|O!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO(P*OO~OR*QO#p*RO(P*PO~OQhXQ'XXZhXd'XX}hX(PhX~ORhX#phXwhX$fhX$|hX[hXohXyhX!lhX!qhX!thX#OhX#PhX'ghX'qhX'rhX'xhX'yhX'zhX'{hX'|hX'}hX(OhX(QhX(RhX(ThX!PhX!ehXXhXPhXvhX!ShX#RhX~P#4kOQ*SO~O})sO~OQ!QO^%vO_%cO`TOaTOd%jO$f%wO%^%xO'T%dO~PGaO!Q*VO!j*VO~O^*YO`*YOa*YO!O*ZO~OQ&oOZ*[O[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO[#}Oo:YO}#zO!l:ZO!q#jO!t:ZO#O:YO#P:VO#p$OO'g#gO'q:ZO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO~Ow'dX~P#9vOy#qaX#qa!e#qa!P#qav#qa#R#qa~P2gOy#zaX#za!e#za!P#zav#za#R#za~P2gOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!S&_O!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdOo#zay#za#O#za#P#za#p#za'r#za'x#za'y#za'z#za'{#za'|#za'}#za(O#za(P#za(R#za(T#zaX#za!e#za!P#zav#za#R#za~P)xOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Q*eO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdO~P)xOw*fO~P#9vO$b*iO$d*jO$f*kO~O!O*lO'r(pO~O!S*nO~O'T*oO~Ow$yOy*qO~O'T*rO~OQ*uOw*vOy*yO}*wO$|*xO~OQ*uOw*vO$|*xO~OQ*uOw+QO$|*xO~OQ*uOo+VOy+XO!S+UO~OQ*uO}+ZO~OQ!QOZ%rO[%qO^%vO`TOaTOd%jOg%yO}%pO!U!lO!W!lO!q%oO$f%wO$q%[O%]!lO%^%xO&W%{O'T%dO'Z%eO(Q%zO~OR+bO_+^O!Q+cO~P#DkO_%cO!Q!lOw&UX$|&UX(P&UX~P#DkOw$yO$f+hO$|*xO(P*PO~OQ!QOZ*[O[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaOQ*uOw$yO!S+UO$|*xO~Oo+nOy+mO!S+oO'r(pO~OdlXy!RX#pbXv!RX!e!RX~Od'XXy(mX#p'SXv(mX!e(mX~Od+qO~O^#TO_#TO`#TOa'kOw&|O'T&vO(Q+vO~Ov(oP~P!3|O#p+{O~Oy+|O~O!S+}O~O&}!sO'O'VO'P,PO~Od,QO~OSVOTVO_%cOsVOtVOuVOw!PO!Q!lO'^UO~P#DkOS,^OT,^OZ,^O['cO_,YOd,^Oo,^Os,^Ou,^Ow'dOy,^O}'bO!S,^O!e,^O!l,^O!q,[O!t,^O!y,^O#O,^O#P,^O#Q,^O#R,^O'Q,^O'Z%eO'^UO'g,ZO'r,[O'v,_O'x,ZO'y,[O'z,[O'{,[O'|,]O'},]O(O,^O(P,`O(Q,`O(R,aO~O!P,dO~P#KkOX,gO~P#KkOv,iO~P#KkOo'tX#O'tX#P'tX#p'tX'r'tX'x'tX'y'tX'z'tX'{'tX'|'tX'}'tX(O'tX(P'tX(R'tX(T'tX~Oy,jO['tX}'tX!l'tX!q'tX!t'tX'g'tX'q'tX(Q'tXv'tX~P#NjOP$giQ$giS$giT$giZ$gi[$gi^$gi_$gi`$gia$gid$gig$gis$git$giu$giw$giy$gi|$gi}$gi!Q$gi!U$gi!W$gi!X$gi!Z$gi!]$gi!l$gi!q$gi!t$gi#Y$gi#r$gi#{$gi$O$gi$b$gi$d$gi$f$gi$i$gi$m$gi$q$gi$s$gi%T$gi%V$gi%Z$gi%]$gi%^$gi%f$gi%j$gi%s$gi&z$gi'Q$gi'T$gi'Z$gi'^$gi'g$gi'q$gi(Q$giv$gi~P#NjOX,kO~O['cOo,lOw'dO}'bOX]X~Oy#ciX#ci!e#ci!P#civ#ci#R#ci~P2gO[#}O}#zO'x#hO(O#|O(Q#hO(R#fO(T#hOo#eiy#ei!l#ei!q#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'y#ei'z#ei'{#ei'|#ei'}#eiX#ei!e#ei!P#eiv#ei#R#ei~O'g#ei(P#ei~P$'PO[#}O}#zO(O#|O(R#fOo#eiy#ei!l#ei!q#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'y#ei'z#ei'{#ei'|#ei'}#eiX#ei!e#ei!P#eiv#ei#R#ei~O'g#ei'x#ei(P#ei(Q#ei(T#eiw#ei~P$)QO'g#gO(P#gO~P$'PO[#}O}#zO'g#gO'x#hO'y#iO'z#iO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiy#ei!l#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'{#ei'|#ei'}#eiX#ei!e#ei!P#eiv#ei#R#ei~O!q#ei~P$+`O!q#jO~P$+`O[#}O}#zO!q#jO'g#gO'x#hO'y#iO'z#iO'{#kO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiy#ei!l#ei!t#ei#O#ei#P#ei#p#ei'q#ei'|#ei'}#eiX#ei!e#ei!P#eiv#ei#R#ei~O'r#ei~P$-hO'r#lO~P$-hO[#}O}#zO!q#jO#P#uO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiy#ei!l#ei!t#ei#O#ei#p#ei'q#ei'|#eiX#ei!e#ei!P#eiv#ei#R#ei~O'}#ei~P$/pO'}#mO~P$/pO[#}O}#zO!q#jO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO!l#ni!t#ni#p#ni'q#ni~Oo#xO#O#xO#P#uOy#niX#ni!e#ni!P#niv#ni#R#ni~P$1xO[#}O}#zO!q#jO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO'|#nO'}#mO(O#|O(P#gO(Q#hO(R#fO(T#hO!l#si!t#si#p#si'q#si~Oo#xO#O#xO#P#uOy#siX#si!e#si!P#siv#si#R#si~P$3yOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q#VO'ZkO'^UO'gcO'qiO(QdO~P)xO!e,sO!P(VX~P2gO!P,uO~OX,vO~P2gOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO'gcO'qiO(QdOX&fX!e&fX!P&fX~P)xO!e(WOX(Wa~Oy,zO!e(WOX(WX~P2gOX,{O~O!P,|O!e(WO~O!P-OO!e(WO~P2gOSVOTVOsVOtVOuVO'^UO'g$[O~P!6POP!baZca!S!ba!e!ba!tca'qca'r!ba!O!bao!bay!ba!P!baX!ba!Z!ba#R!bav!ba~O!e-TO'r(pO!P'mXX'mX~O!P-VO~O!i-`O!j-_O!l-[O'T-XOv'nP~OX-aO~O_%cO!Q!lO~P#DkO!j-gOP&gX!e&gX~P<cO!e(rOP(Ya~O!S-iO'r(pOP$Wa!e$Wa~Ow!PO(P*PO~OvbX!S!kX!ebX~O'Q#VO'T(xO~O!S-mO~O!e-oOv([X~Ov-qO~Ov-sO~P,cOv-sO~P#$iO_-uO'T&cO~O!S-vO~Ow$yOy-wO~OQ*uOw*vOy-zO}*wO$|*xO~OQ*uOo.UO~Oy._O~O!S.`O~O!j.bO'T&cO~Ov.cO~Ov.cO~PGyOQ']O^'Wa_'Wa`'Waa'Wa'T'Wa~Od.gO~OQ'XXQ'kXR'kXZ'kXd'XX}'kX#p'kX(P'kXw'kX$f'kX$|'kX['kXo'kXy'kX!l'kX!q'kX!t'kX#O'kX#P'kX'g'kX'q'kX'r'kX'x'kX'y'kX'z'kX'{'kX'|'kX'}'kX(O'kX(Q'kX(R'kX(T'kX!P'kX!e'kXX'kXP'kXv'kX!S'kX#R'kX~OQ!QOZ%rO[%qO^.rO_%cO`TOaTOd%jOg%yO}%pO!j.sO!q.pO!t.kO#V.mO$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO!P(sP~PGaO#Q.tOR%wa#p%wa(P%waw%wa$f%wa$|%wa[%wao%way%wa}%wa!l%wa!q%wa!t%wa#O%wa#P%wa'g%wa'q%wa'r%wa'x%wa'y%wa'z%wa'{%wa'|%wa'}%wa(O%wa(Q%wa(R%wa(T%wa!P%wa!e%waX%waP%wav%wa!S%wa#R%wa~O%^.vO~PGaO(P*POR&Oa#p&Oaw&Oa$f&Oa$|&Oa[&Oao&Oay&Oa}&Oa!l&Oa!q&Oa!t&Oa#O&Oa#P&Oa'g&Oa'q&Oa'r&Oa'x&Oa'y&Oa'z&Oa'{&Oa'|&Oa'}&Oa(O&Oa(Q&Oa(R&Oa(T&Oa!P&Oa!e&OaX&OaP&Oav&Oa!S&Oa#R&Oa~O_%cO!Q!lO!j.xO(P*OO~P#DkO!e.yO(P*PO!P(uX~O!P.{O~OX.|Oy.}O(P*PO~O'Z%eOR(qP~OQ']O})sORfa#pfa(Pfawfa$ffa$|fa[faofayfa!lfa!qfa!tfa#Ofa#Pfa'gfa'qfa'rfa'xfa'yfa'zfa'{fa'|fa'}fa(Ofa(Qfa(Rfa(Tfa!Pfa!efaXfaPfavfa!Sfa#Rfa~OQ']O})sOR&Va#p&Va(P&Vaw&Va$f&Va$|&Va[&Vao&Vay&Va!l&Va!q&Va!t&Va#O&Va#P&Va'g&Va'q&Va'r&Va'x&Va'y&Va'z&Va'{&Va'|&Va'}&Va(O&Va(Q&Va(R&Va(T&Va!P&Va!e&VaX&VaP&Vav&Va!S&Va#R&Va~O!P/UO~Ow$yO$f/ZO$|*xO(P*PO~OQ!QOZ/[O[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaOo/^O'r(pO~O#W/_OP!YiQ!YiS!YiT!YiZ!Yi[!Yi^!Yi_!Yi`!Yia!Yid!Yig!Yio!Yis!Yit!Yiu!Yiw!Yiy!Yi|!Yi}!Yi!Q!Yi!U!Yi!W!Yi!X!Yi!Z!Yi!]!Yi!l!Yi!q!Yi!t!Yi#O!Yi#P!Yi#Y!Yi#p!Yi#r!Yi#{!Yi$O!Yi$b!Yi$d!Yi$f!Yi$i!Yi$m!Yi$q!Yi$s!Yi%T!Yi%V!Yi%Z!Yi%]!Yi%^!Yi%f!Yi%j!Yi%s!Yi&z!Yi'Q!Yi'T!Yi'Z!Yi'^!Yi'g!Yi'q!Yi'r!Yi'x!Yi'y!Yi'z!Yi'{!Yi'|!Yi'}!Yi(O!Yi(P!Yi(Q!Yi(R!Yi(T!YiX!Yi!e!Yi!P!Yiv!Yi!i!Yi!j!Yi#V!Yi#R!Yi~Oy#ziX#zi!e#zi!P#ziv#zi#R#zi~P2gOy$UiX$Ui!e$Ui!P$Uiv$Ui#R$Ui~P2gOv/eO!j&bO'Q`O~P<cOw/nO}/mO~Oy!RX#pbX~Oy/oO~O#p/pO~OR+bO_+dO!Q/sO'T&iO'Z%eO~Oa/zO|!VO'Q#VO'T(ROv(cP~OQ!QOZ%rO[%qO^%vO_%cO`TOa/zOd%jOg%yO|!VO}%pO!q%oO$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO!P(eP~PGaOQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f0VO%^%xO&W%{O'T%dO'Z%eO(Q%zOw(`Py(`P~PGaOw*vO~Oy-zO$|*xO~Oa/zO|!VO'Q#VO'T*oOv(gP~Ow+QO~OQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f0VO%^%xO&W%{O'T%dO'Z%eO(Q%zO(R0`O~PGaOy0dO~OQ!QOSVOTVO[$gO^0lO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!j0mO!l$lO!q0eO!t0hO'Q#VO'T$YO'Z%eO'^UO'g$[O~O#V0nO!P(jP~P%1}Ow!POy0pO#Q0rO$|*xO~OR0uO!e0sO~P#(kOR0uO!S+UO!e0sO(P*OO~OR0uOo0wO!S+UO!e0sOQ'VXZ'VX}'VX#p'VX(P'VX~OR0uOo0wO!e0sO~OR0uO!e0sO~O$f/ZO(P*PO~Ow$yO~Ow$yO$|*xO~Oo0}Oy0|O!S1OO'r(pO~O!e1POv(pX~Ov1RO~O^#TO_#TO`#TOa'kOw&|O'T&vO(Q1VO~Oo1YOQ'VXR'VXZ'VX}'VX!e'VX(P'VX~O!e1ZO(P*POR'YX~O!e1ZOR'YX~O!e1ZO(P*OOR'YX~OR1]O~O!S1^OS'wXT'wXZ'wX['wX_'wXd'wXo'wXs'wXu'wXw'wXy'wX}'wX!P'wX!e'wX!l'wX!q'wX!t'wX!y'wX#O'wX#P'wX#Q'wX#R'wX'Q'wX'Z'wX'^'wX'g'wX'r'wX'v'wX'x'wX'y'wX'z'wX'{'wX'|'wX'}'wX(O'wX(P'wX(Q'wX(R'wXX'wXv'wX~O}1_O~O!P1aO~P#KkOX1bO~P#KkOv1cO~P#KkOS,^OT,^OZ,^O['cO_1dOd,^Oo,^Os,^Ou,^Ow'dOy,^O}'bO!S,^O!e,^O!l,^O!q,[O!t,^O!y,^O#O,^O#P,^O#Q,^O#R,^O'Q,^O'Z%eO'^UO'g,ZO'r,[O'v,_O'x,ZO'y,[O'z,[O'{,[O'|,]O'},]O(O,^O(P,`O(Q,`O(R,aO~OX1fO~Oy,jO~O!e,sO!P(Va~P2gOPoOQ!QOSVOTVOZeO[lOd[OsVOtVOuVOw!PO}mO!U#bO!W#cO!X!^O!Z!YO!liO!qgO!tiO#Y!_O#r!ZO#{![O$O!]O$b!`O$d!bO$f!cO'Q#VO'ZkO'^UO'gcO'qiO(QdO!P&eX!e&eX~P)xO!e,sO!P(Va~OX&fa!e&fa!P&fa~P2gOX1kO~P2gO!P1mO!e(WO~OP!biZci!S!bi!e!bi!tci'qci'r!bi!O!bio!biy!bi!P!biX!bi!Z!bi#R!biv!bi~O'r(pOP!oi!S!oi!e!oi!O!oio!oiy!oi!P!oiX!oi!Z!oi#R!oiv!oi~O!j&bO!P&`X!e&`XX&`X~P<cO!e-TO!P'maX'ma~O!P1qO~Ov!RX!S!kX!e!RX~O!S1rO~O!e1sOv'oX~Ov1uO~O'T-XO~O!j1xO'T-XO~O(P*POP$Wi!e$Wi~O!S1yO'r(pOP$XX!e$XX~O!S1|O~Ov$_a!e$_a~P2gO!l(|O'Q#VO'T(xOv&hX!e&hX~O!e-oOv([a~Ov2QO~P,cOy2UO~O#p2VO~Oy2WO$|*xO~Ow*vOy2WO}*wO$|*xO~Oo2aO~Ow!POy2fO#Q2hO$|*xO~O!S2jO~Ov2lO~O#Q2mOR%wi#p%wi(P%wiw%wi$f%wi$|%wi[%wio%wiy%wi}%wi!l%wi!q%wi!t%wi#O%wi#P%wi'g%wi'q%wi'r%wi'x%wi'y%wi'z%wi'{%wi'|%wi'}%wi(O%wi(Q%wi(R%wi(T%wi!P%wi!e%wiX%wiP%wiv%wi!S%wi#R%wi~Od2nO~O^2qO!j.sO!q2rO'Q#VO'Z%eO~O(P*PO!P%{X!e%{X~O!e2sO!P(tX~O!P2uO~OQ!QOZ%rO[%qO^2wO_%cO`TOaTOd%jOg%yO}%pO!j2xO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(Q%zO~PGaO^2yO!j2xO(P*OO~O!P%aX!e%aX~P#4kO^2yO~O(P*POR&Oi#p&Oiw&Oi$f&Oi$|&Oi[&Oio&Oiy&Oi}&Oi!l&Oi!q&Oi!t&Oi#O&Oi#P&Oi'g&Oi'q&Oi'r&Oi'x&Oi'y&Oi'z&Oi'{&Oi'|&Oi'}&Oi(O&Oi(Q&Oi(R&Oi(T&Oi!P&Oi!e&OiX&OiP&Oiv&Oi!S&Oi#R&Oi~O_%cO!Q!lO!P&yX!e&yX~P#DkO!e.yO!P(ua~OR3QO(P*PO~O!e3ROR(rX~OR3TO~O(P*POR&Pi#p&Piw&Pi$f&Pi$|&Pi[&Pio&Piy&Pi}&Pi!l&Pi!q&Pi!t&Pi#O&Pi#P&Pi'g&Pi'q&Pi'r&Pi'x&Pi'y&Pi'z&Pi'{&Pi'|&Pi'}&Pi(O&Pi(Q&Pi(R&Pi(T&Pi!P&Pi!e&PiX&PiP&Piv&Pi!S&Pi#R&Pi~O!P3UO~O$f3VO(P*PO~Ow$yO$f3VO$|*xO(P*PO~Ow!PO!Z!YO~O!Z3aO#R3_O'r(pO~O!j&bO'Q#VO~P<cOv3eO~Ov3eO!j&bO'Q`O~P<cO!O3hO'r(pO~Ow!PO~P#9vOo3kOy3jO(P*PO~O!P3oO~P%;pOv3rO~P%;pOR0uO!S+UO!e0sO~OR0uOo0wO!S+UO!e0sO~Oa/zO|!VO'Q#VO'T(RO~O!S3uO~O!e3wOv(dX~Ov3yO~OQ!QOZ%rO[%qO^%vO_%cO`TOa/zOd%jOg%yO|!VO}%pO!q%oO$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO~PGaO!e3|O(P*PO!P(fX~O!P4OO~O!S4PO(P*OO~O!S+UO(P*PO~O!e4ROw(aXy(aX~OQ4TO~Oy2WO~Oa/zO|!VO'Q#VO'T*oO~Oo4WOw*vO}*wOv%XX!e%XX~O!e4ZOv(hX~Ov4]O~O(P4_Oy(_Xw(_X$|(_XR(_Xo(_X!e(_X~Oy4aO(P*PO~OQ!QOSVOTVO[$gO^4bO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!l$lO!q$hO#V$lO'T$YO'^UO'g$[O~O!j4cO'Z%eO~P&,sO!S4eO'r(pO~O#V4gO~P%1}O!e4hO!P(kX~O!P4jO~O!P%aX!S!aX!e%aX'r!aX~P!KgO!j&bO~P&,sO!e4hO!P(kX!S'eX'r'eX~O^2yO!j2xO~Ow!POy2fO~O_4pO!Q/sO'T&iO'Z%eOR&lX!e&lX~OR4rO!e0sO~O!S4tO~Ow$yO$|*xO(P*PO~Oy4uO~P2gOo4vOy4uO(P*PO~Ov&uX!e&uX~P!3|O!e1POv(pa~Oo4|Oy4{O(P*PO~OSVOTVO_%cOsVOtVOuVOw!PO!Q!lO'^UOR&vX!e&vX~P#DkO!e1ZOR'Ya~O!y5SO~O!P5TO~P#KkO!S1^OX'wX#R'wX~O!e,sO!P(Vi~O!P&ea!e&ea~P2gOX5WO~P2gOP!bqZcq!S!bq!e!bq!tcq'qcq'r!bq!O!bqo!bqy!bq!P!bqX!bq!Z!bq#R!bqv!bq~O'r(pO!P&`a!e&`aX&`a~O!i-`O!j-_O!l5YO'T-XOv&aX!e&aX~O!e1sOv'oa~O!S5[O~O!S5`O'r(pOP$Xa!e$Xa~O(P*POP$Wq!e$Wq~Ov$^i!e$^i~P2gOw!POy5bO#Q5dO$|*xO~Oo5gOy5fO(P*PO~Oy5iO~Oy5iO$|*xO~Oy5mO(P*PO~Ow!POy5bO~Oo5tOy5sO(P*PO~O!S5vO~O!e2sO!P(ta~O^2yO!j2xO'Z%eO~OQ!QOZ%rO[%qO^.rO_%cO`TOaTOd%jOg%yO}%pO!j.sO!q.pO!t5zO#V5|O$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO!P&xX!e&xX~PGaOQ!QOZ%rO[%qO^6OO_%cO`TOaTOd%jOg%yO}%pO!j6PO!q%oO$f%wO%^%xO&W%{O'T%dO'Z%eO(P*OO(Q%zO~PGaO!P%aa!e%aa~P#4kO^6QO~O#Q6ROR%wq#p%wq(P%wqw%wq$f%wq$|%wq[%wqo%wqy%wq}%wq!l%wq!q%wq!t%wq#O%wq#P%wq'g%wq'q%wq'r%wq'x%wq'y%wq'z%wq'{%wq'|%wq'}%wq(O%wq(Q%wq(R%wq(T%wq!P%wq!e%wqX%wqP%wqv%wq!S%wq#R%wq~O(P*POR&Oq#p&Oqw&Oq$f&Oq$|&Oq[&Oqo&Oqy&Oq}&Oq!l&Oq!q&Oq!t&Oq#O&Oq#P&Oq'g&Oq'q&Oq'r&Oq'x&Oq'y&Oq'z&Oq'{&Oq'|&Oq'}&Oq(O&Oq(Q&Oq(R&Oq(T&Oq!P&Oq!e&OqX&OqP&Oqv&Oq!S&Oq#R&Oq~O(P*PO!P&ya!e&ya~OX6SO~P2gO'Z%eOR&wX!e&wX~O!e3ROR(ra~O$f6YO(P*PO~Ow![q~P#9vO#R6]O~O!Z3aO#R6]O'r(pO~Ov6bO~O#R6fO~Oy6gO!P6hO~O!P6hO~P%;pOy6kO~Ov6kOy6gO~Ov6kO~P%;pOy6mO~O!e3wOv(da~O!S6pO~Oa/zO|!VO'Q#VO'T(ROv&oX!e&oX~O!e3|O(P*PO!P(fa~OQ!QOZ%rO[%qO^%vO_%cO`TOa/zOd%jOg%yO|!VO}%pO!q%oO$f%wO%^%xO&W%{O'Q#VO'T%dO'Z%eO(Q%zO!P&pX!e&pX~PGaO!e3|O!P(fa~OQ!QOZ%rO[%qO^%vO_%cO`TOaTOd%jOg%yO}%pO!q%oO$f0VO%^%xO&W%{O'T%dO'Z%eO(Q%zOw&nX!e&nXy&nX~PGaO!e4ROw(aay(aa~O!e4ZOv(ha~Oo7SOv%Xa!e%Xa~Oo7SOw*vO}*wOv%Xa!e%Xa~Oa/zO|!VO'Q#VO'T*oOv&qX!e&qX~O(P*POy$xaw$xa$|$xaR$xao$xa!e$xa~O(P4_Oy(_aw(_a$|(_aR(_ao(_a!e(_a~O!P%aa!S!aX!e%aa'r!aX~P!KgOQ!QOSVOTVO[$gO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!j&bO!l$lO!q$hO#V$lO'T$YO'^UO'g$[O~O^7ZO~P&JUO^6QO!j6PO~O!e4hO!P(ka~O!e4hO!P(ka!S'eX'r'eX~OQ!QOSVOTVO[$gO^0lO_$ZO`9yOa9yOd$aOsVOtVOuVO}$eO!i$qO!j0mO!l$lO!q0eO!t7_O'Q#VO'T$YO'Z%eO'^UO'g$[O~O#V7aO!P&sX!e&sX~P&L]O!S7cO'r(pO~Ow!POy5bO$|*xO(P*PO~O!S+UOR&la!e&la~Oo0wO!S+UOR&la!e&la~Oo0wOR&la!e&la~O(P*POR$yi!e$yi~Oy7fO~P2gOo7gOy7fO(P*PO~O(P*PORni!eni~O(P*POR&va!e&va~O(P*OOR&va!e&va~OS,^OT,^OZ,^O_,^Od,^Oo,^Os,^Ou,^Oy,^O!S,^O!e,^O!l,^O!q,[O!t,^O!y,^O#O,^O#P,^O#Q,^O#R,^O'Q,^O'Z%eO'^UO'g,ZO'r,[O'x,ZO'y,[O'z,[O'{,[O'|,]O'},]O(O,^O~O(P7iO(Q7iO(R7iO~P'!qO!P7kO~P#KkO!P&ei!e&ei~P2gO'r(pOv!hi!e!hi~O!S7mO~O(P*POP$Xi!e$Xi~Ov$^q!e$^q~P2gOw!POy7oO~Ow!POy7oO#Q7rO$|*xO~Oy7tO~Oy7uO~Oy7vO(P*PO~Ow!POy7oO$|*xO(P*PO~Oo7{Oy7zO(P*PO~O!e2sO!P(ti~O(P*PO!P%}X!e%}X~O!P%ai!e%ai~P#4kO^8OO~O!e8TO['bXv$`i}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[OQ#[iS#[iT#[i[#[i^#[i_#[i`#[ia#[id#[is#[it#[iu#[iv$`i}#[i!i#[i!j#[i!l#[i!q#[i!t'bX#V#[i'Q#[i'T#[i'^#[i'g#[i'q'bX(Q'bX~P@[O#R#^a~P2gO#R8WO~O!Z3aO#R8XO'r(pO~Ov8[O~Oy8^O~P2gOy8`O~Oy6gO!P8aO~Ov8`Oy6gO~O!e3wOv(di~O(P*POv%Qi!e%Qi~O!e3|O!P(fi~O!e3|O(P*PO!P(fi~O(P*PO!P&pa!e&pa~O(P8hOw(bX!e(bXy(bX~O(P*PO!S$wiy$wiw$wi$|$wiR$wio$wi!e$wi~O!e4ZOv(hi~Ov%Xi!e%Xi~P2gOo8kOv%Xi!e%Xi~O!P%ai!S!aX!e%ai'r!aX~P!KgO(P*PO!P%`i!e%`i~O!e4hO!P(ki~O#V8nO~P&L]O!P&sa!S'eX!e&sa'r'eX~O(P*POR$zq!e$zq~Oy8pO~P2gOy7zO~P2gO(P8rO(Q8rO(R8rO~O(P8rO(Q8rO(R8rO~P'!qO'r(pOv!hq!e!hq~O(P*POP$Xq!e$Xq~Ow!POy8uO$|*xO(P*PO~Ow!POy8uO~Oy8xO~P2gOy8zO~P2gOo8|Oy8zO(P*PO~OQ#[qS#[qT#[q[#[q^#[q_#[q`#[qa#[qd#[qs#[qt#[qu#[qv$`q}#[q!i#[q!j#[q!l#[q!q#[q#V#[q'Q#[q'T#[q'^#[q'g#[q~O!e9PO['bXv$`q}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[Oo'bX!t'bX#O'bX#P'bX#p'bX'q'bX'r'bX'x'bX'y'bX'z'bX'{'bX'|'bX'}'bX(O'bX(P'bX(Q'bX(R'bX(T'bX~P'2fO#R9UO~O!Z3aO#R9UO'r(pO~Oy9WO~O(P*POv%Qq!e%Qq~O!e3|O!P(fq~O(P*PO!P&pi!e&pi~O(P8hOw(ba!e(bay(ba~Ov%Xq!e%Xq~P2gO!P&si!S'eX!e&si'r'eX~O(P*PO!P%`q!e%`q~Oy9]O~P2gO(P9^O(Q9^O(R9^O~O'r(pOv!hy!e!hy~Ow!POy9_O~Ow!POy9_O$|*xO(P*PO~Oy9aO~P2gOQ#[yS#[yT#[y[#[y^#[y_#[y`#[ya#[yd#[ys#[yt#[yu#[yv$`y}#[y!i#[y!j#[y!l#[y!q#[y#V#[y'Q#[y'T#[y'^#[y'g#[y~O!e9dO['bXv$`y}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[Oo'bX!t'bX#O'bX#P'bX#p'bX'q'bX'r'bX'x'bX'y'bX'z'bX'{'bX'|'bX'}'bX(O'bX(P'bX(Q'bX(R'bX(T'bX~P'9eO!e9eO['bX}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[OQ#[iS#[iT#[i[#[i^#[i_#[i`#[ia#[id#[is#[it#[iu#[i}#[i!i#[i!j#[i!l#[i!q#[i!t'bX#V#[i'Q#[i'T#[i'^#[i'g#[i'q'bX(Q'bX~P@[O#R9hO~O(P*PO!P&pq!e&pq~Ov%Xy!e%Xy~P2gOw!POy9iO~Oy9jO~P2gOQ#[!RS#[!RT#[!R[#[!R^#[!R_#[!R`#[!Ra#[!Rd#[!Rs#[!Rt#[!Ru#[!Rv$`!R}#[!R!i#[!R!j#[!R!l#[!R!q#[!R#V#[!R'Q#[!R'T#[!R'^#[!R'g#[!R~O!e9kO['bX}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[OQ#[qS#[qT#[q[#[q^#[q_#[q`#[qa#[qd#[qs#[qt#[qu#[q}#[q!i#[q!j#[q!l#[q!q#[q!t'bX#V#[q'Q#[q'T#[q'^#[q'g#[q'q'bX(Q'bX~P@[O!e9nO['bX}'bX!l'bX!q'bX!t'bX'g'bX'q'bX(Q'bX~P@[OQ#[yS#[yT#[y[#[y^#[y_#[y`#[ya#[yd#[ys#[yt#[yu#[y}#[y!i#[y!j#[y!l#[y!q#[y!t'bX#V#[y'Q#[y'T#[y'^#[y'g#[y'q'bX(Q'bX~P@[OwbX~P$|OwjX}jX!tbX'qbX~P!6mOZ'SXd'XXo'SXw'kX!t'SX'q'SX'r'SX~O['SXd'SXw'SX}'SX!l'SX!q'SX#O'SX#P'SX#p'SX'g'SX'x'SX'y'SX'z'SX'{'SX'|'SX'}'SX(O'SX(P'SX(Q'SX(R'SX(T'SX~P'GTOP'SX}'kX!S'SX!e'SX!O'SXy'SX!P'SXX'SX!Z'SX#R'SXv'SX~P'GTO^9qO_9qO`9qOa9qO'T9oO~O!j:OO~P!.cOPoOQ!QOSVOTVOZeOd9tOsVOtVOuVO!U#bO!W#cO!X:zO!Z!YO#Y!_O#r9zO#{9{O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO[#sXo#sXw#sX}#sX!l#sX!q#sX!t#sX#O#sX#P#sX#p#sX'g#sX'q#sX'r#sX'x#sX'y#sX'z#sX'{#sX'|#sX'}#sX(O#sX(P#sX(Q#sX(R#sX(T#sX~P'IxO#Q$uO~P!.cO}'kXP'SX!S'SX!e'SX!O'SXy'SX!P'SXX'SX!Z'SX#R'SXv'SX~P'GTOo#qX#O#qX#P#qX#p#qX'r#qX'x#qX'y#qX'z#qX'{#qX'|#qX'}#qX(O#qX(P#qX(R#qX(T#qX~P!.cOo#zX#O#zX#P#zX#p#zX'r#zX'x#zX'y#zX'z#zX'{#zX'|#zX'}#zX(O#zX(P#zX(R#zX(T#zX~P!.cOPoOQ!QOSVOTVOZeOd9tOsVOtVOuVO!U#bO!W#cO!X:zO!Z!YO#Y!_O#r9zO#{9{O$O!]O$b!`O$d!bO$f!cO'ZkO'^UO[#sao#saw#sa}#sa!l#sa!q#sa!t#sa#O#sa#P#sa#p#sa'g#sa'q#sa'r#sa'x#sa'y#sa'z#sa'{#sa'|#sa'}#sa(O#sa(P#sa(Q#sa(R#sa(T#sa~P'IxOo:YO#O:YO#P:VOw#sa~P!B}Ow$Ua~P#9vOQ'XXd'XX}iX~OQlXdlX}jX~O^:sO_:sO`:sOa:sO'T:_O~OQ'XXd'XX}hX~Ow#qa~P#9vOw#za~P#9vO!S&_Oo#za#O#za#P#za#p#za'r#za'x#za'y#za'z#za'{#za'|#za'}#za(O#za(P#za(R#za(T#za~P!.cO#Q*eO~P!.cOw#ci~P#9vO[#}O}#zO'x#hO(O#|O(Q#hO(R#fO(T#hOo#eiw#ei!l#ei!q#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'y#ei'z#ei'{#ei'|#ei'}#ei~O'g#ei(P#ei~P((}O'g#gO(P#gO~P((}O[#}O}#zO'g#gO'x#hO'y#iO'z#iO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiw#ei!l#ei!t#ei#O#ei#P#ei#p#ei'q#ei'r#ei'{#ei'|#ei'}#ei~O!q#ei~P(*yO!q#jO~P(*yO[#}O}#zO!q#jO'g#gO'x#hO'y#iO'z#iO'{#kO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiw#ei!l#ei!t#ei#O#ei#P#ei#p#ei'q#ei'|#ei'}#ei~O'r#ei~P(,rO'r#lO~P(,rO[#}O}#zO!q#jO#P:VO'g#gO'r#lO'x#hO'y#iO'z#iO'{#kO(O#|O(P#gO(Q#hO(R#fO(T#hOo#eiw#ei!l#ei!t#ei#O#ei#p#ei'q#ei'|#ei~O'}#ei~P(.kO'}#mO~P(.kOo:YO#O:YO#P:VOw#ni~P$1xOo:YO#O:YO#P:VOw#si~P$3yOQ'XXd'XX}'kX~Ow#zi~P#9vOw$Ui~P#9vOd9}O~Ow#ca~P#9vOd:uO~OU'x_'v'P'O'^s!y'^'T'Z~\",\n goto: \"$Ku(vPPPPPPP(wPP)OPP)^PPPP)d-hP0f5aP7R7R8v7R>wD_DpPDvHQPPPPPPK`P! P! _PPPPP!!VP!$oP!$oPP!&oP!(rP!(w!)n!*f!*f!*f!(w!+]P!(w!.Q!.TPP!.ZP!(w!(w!(w!(wP!(w!(wP!(w!(w!.y!/dP!/dJ}J}J}PPPP!/d!.y!/sPP!$oP!0^!0a!0g!1h!1t!3t!3t!5r!7t!1t!1t!9p!;_!=O!>k!@U!Am!CS!De!1t!1tP!1tP!1t!1t!Et!1tP!Ge!1t!1tP!Ie!1tP!1t!7t!7t!1t!7t!1t!Kl!Mt!Mw!7t!1t!Mz!M}!M}!M}!NR!$oP!$oP!$oP! P! PP!N]! P! PP!Ni# }! PP! PP#!^##c##k#$Z#$_#$e#$e#$mP#&s#&s#&y#'o#'{! PP! PP#(]#(l! PP! PPP#(x#)W#)d#)|#)^! P! PP! P! P! PP#*S#*S#*Y#*`#*S#*S! P! PP#*m#*v#+Q#+Q#,x#.l#.x#.x#.{#.{5a5a5a5a5a5a5a5aP5a#/O#/U#/p#1{#2R#2b#6^#6d#6j#6|#7W#8w#9R#9b#9h#9n#9x#:S#:Y#:g#:m#:s#:}#;]#;g#=u#>R#>`#>f#>n#>u#?PPPPPPPP#?V#BaP#F^#Jx#Ls#Nr$&^P$&aPPP$)_$)h$)z$/U$1d$1m$3fP!(w$4`$7r$:i$>T$>^$>c$>fPPP$>i$A`$A|P$BaPPPPPPPPPP$BvP$EU$EX$E[$Eb$Ee$Eh$Ek$En$Et$HO$HR$HU$HX$H[$H_$Hb$He$Hh$Hk$Hn$Jt$Jw$Jz#*S$KW$K^$Ka$Kd$Kh$Kl$Ko$KrQ!tPT'V!s'Wi!SOlm!P!T$T$W$y%b)U*f/gQ'i#QR,n'l(OSOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%X%_%b&U&Y&[&b&u&z&|'P'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n+z,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1P1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:gS(z$v-oQ*p&eQ*t&hQ-k(yQ-y)ZW0Z+Q0Y4Z7UR4Y0[&w!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#r]Ofgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hb#[b#Q$y'l(b)S)U*Z-t!h$bo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m$b%k!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g!W:y!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:|%n$_%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g$e%l!Q!n$O$u%n%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g'hZOY[fgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r%_%b%i%j&U&Y&[&b&u'a'}(W(Y(d(e(f(j(o(p(r(|)i)p)q*f*i*k*l+Z+n,s,z-R-T-g-m.i.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:x$^%l!Q!n$O$u%n%o%p%q%y%{&P&p&r(q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ&j!hQ&k!iQ&l!jQ&m!kQ&s!oQ)[%QQ)]%RQ)^%SQ)_%TQ)b%WQ+`&oS,R']1ZQ.W)`S/r*u4TR4n0s+yTOY[bfgilmop!O!P!Q!T!Y!Z![!_!`!c!n!p!q!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$O$T$W$`$a$e$g$h$q$r$u$y%X%_%b%i%j%n%o%p%q%y%{&P&U&Y&[&b&o&p&r&u&z&|'P']'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(q(r(|)S)U)i)p)q)s)x)y*O*P*R*V*Z*[*^*e*f*i*k*l*n*w*x+U+V+Z+h+n+o+z+},q,s,z-R-T-g-i-m-t-v.U.`.i.p.t.x.y.}/Z/[/^/b/d/g/{/}0`0e0g0m0r0w0}1O1P1Y1Z1h1r1y1|2a2h2j2m2s2v3V3_3a3f3h3k3u3{3|4R4U4W4_4c4e4h4t4v4|5[5`5d5g5t5v6R6Y6]6a6p6v6x7S7^7c7g7m7r7{8W8X8g8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:`:a:e:f:g:t:u:xQ'[!xQ'h#PQ)l%gU)r%m*T*WR.f)kQ,T']R5P1Z#t%s!Q!n$O$u%p%q&P&p&r(q)x)y*O*R*V*[*^*e*n*w+V+h+o+}-i-v.U.`.t.x.y/Z/[/{/}0`0r0w1O1Y1y2a2h2j2m2v3V3u3{3|4U4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)x%oQ+_&oQ,U']n,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7kS.q)s2sQ/O*PQ/Q*SQ/q*uS0Q*x4RQ0a+U[0o+Z.j0g4h5y7^Q2v.pS4d0e2rQ4m0sQ5Q1ZQ6T3RQ6z4PQ7O4TQ7X4_R9Y8h&jVOfgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u']'}(W(Y(b(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1Z1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fU&g!g%P%[o,^'b'c'd,c,f,h,l/m/n1_3n3q5T5U7k$nsOfgilm!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y'}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9z9{:O:P:Q:R:S:T:U:V:W:X:Y:eS$tp9xS&O!W#bS&Q!X#cQ&`!bQ*_&RQ*a&VS*d&[:fQ*h&^Q,T']Q-j(wQ/i*jQ0p+[S2f.X0qQ3]/_Q3^/`Q3g/hQ3i/kQ5P1ZU5b2R2g4lU7o5c5e5rQ8]6dS8u7p7qS9_8v8wR9i9`i{Ob!O!P!T$y%_%b)S)U)i-thxOb!O!P!T$y%_%b)S)U)i-tW/v*v/t3w6qQ/}*wW0[+Q0Y4Z7UQ3{/{Q6x3|R8g6v!h$do!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ&d!dQ&f!fQ&n!mW&x!q%X&|1PQ'S!rQ)X$}Q)Y%OQ)a%VU)d%Y'T'UQ*s&hS+s&z'PS-Y(k1sQ-u)WQ-x)ZS.a)e)fS0x+c/sQ1S+zQ1W+{S1v-_-`Q2k.bQ3s/pQ5]1xR5h2V${sOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$zsOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR3]/_V&T!Y!`*i!i$lo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!k$^o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m!i$co!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&e^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR(l$fQ-[(kR5Y1sQ(S#|S({$v-oS-Z(k1sQ-l(yW/u*v/t3w6qS1w-_-`Q3v/vR5^1xQ'e#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,o'mk,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ'f#Or,e'b'c'd'j'p)u,c,f,h,l/m/n1_3n3q5U6fR,p'mR*g&]X/c*f/d/g3f!}aOb!O!P!T#z$v$y%_%b'}(y)S)U)i)s*f*v*w+Q+Z,s-o-t.j/b/d/g/t/{0Y0g1h2s3f3w3|4Z4h5y6a6q6v7U7^Q3`/aQ6_3bQ8Y6`R9V8Z${rOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f#nfOfglmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!T9u!Y!_!`*i*l/^3h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#rfOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h!X9u!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$srOfglmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:e:f#U#oh#d$P$Q$V$s%^&W&X'q't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b}:P&S&]/k3[6d:[:]:c:d:h:j:k:l:m:n:o:p:q:r:v:w:{#W#ph#d$P$Q$V$s%^&W&X'q'r't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b!P:Q&S&]/k3[6d:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{#S#qh#d$P$Q$V$s%^&W&X'q'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9b{:R&S&]/k3[6d:[:]:c:d:h:k:l:m:n:o:p:q:r:v:w:{#Q#rh#d$P$Q$V$s%^&W&X'q'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9by:S&S&]/k3[6d:[:]:c:d:h:l:m:n:o:p:q:r:v:w:{#O#sh#d$P$Q$V$s%^&W&X'q'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bw:T&S&]/k3[6d:[:]:c:d:h:m:n:o:p:q:r:v:w:{!|#th#d$P$Q$V$s%^&W&X'q'x'y'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bu:U&S&]/k3[6d:[:]:c:d:h:n:o:p:q:r:v:w:{!x#vh#d$P$Q$V$s%^&W&X'q'z'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bq:W&S&]/k3[6d:[:]:c:d:h:p:q:r:v:w:{!v#wh#d$P$Q$V$s%^&W&X'q'{'|(O(U([(`*b*c,r,w,y-n0z1i1l1}3P4w5V5a6^6e7R7e7h7s7y8j8q8{9[9bo:X&S&]/k3[6d:[:]:c:d:h:q:r:v:w:{$]#{h#`#d$P$Q$V$s%^&S&W&X&]'q'r's't'u'v'w'x'y'z'{'|(O(U([(`*b*c,r,w,y-n/k0z1i1l1}3P3[4w5V5a6^6d6e7R7e7h7s7y8j8q8{9[9b:[:]:c:d:h:i:j:k:l:m:n:o:p:q:r:v:w:{${jOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f$v!aOfgilmp!O!P!T!Y!Z!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ&Y![Q&Z!]R:e9{#rpOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hQ&[!^!W9x!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fR:f:zR$moR-f(rR$wqT(}$v-oQ/f*fS3d/d/gR6c3fQ3m/mQ3p/nQ6i3nR6l3qQ$zwQ)V${Q*q&fQ+f&qQ+i&sQ-w)YW.Z)b+j+k+lS/X*]+gW2b.W.[.].^U3W/Y/]0yU5o2c2d2eS6W3X3ZS7w5p5qS8Q6V6XQ8y7xS8}8R8SR9c9O^|O!O!P!T%_%b)iX)R$y)S)U-tQ&r!nQ*^&PQ*|&jQ+P&kQ+T&lQ+W&mQ+]&nQ+l&sQ-})[Q.Q)]Q.T)^Q.V)_Q.Y)aQ.^)bQ2S-uQ2e.WR4U0VU+a&o*u4TR4o0sQ+Y&mQ+k&sS.])b+l^0v+_+`/q/r4m4n7OS2d.W.^S4Q0R0SR5q2eS0R*x4RQ0a+UR7X4_U+d&o*u4TR4p0sQ*z&jQ+O&kQ+S&lQ+g&qQ+j&sS-{)[*|S.P)]+PS.S)^+TU.[)b+k+lQ/Y*]Q0X*{Q0q+[Q2X-|Q2Y-}Q2].QQ2_.TU2c.W.].^Q2g.XS3Z/]0yS5c2R4lQ5j2ZS5p2d2eQ6X3XS7q5e5rQ7x5qQ8R6VQ8v7pQ9O8SR9`8wQ0T*xR6|4RQ*y&jQ*}&kU-z)[*z*|U.O)]+O+PS2W-{-}S2[.P.QQ4X0ZQ5i2YQ5k2]R7T4YQ/w*vQ3t/tQ6r3wR8d6qQ*{&jS-|)[*|Q2Z-}Q4X0ZR7T4YQ+R&lU.R)^+S+TS2^.S.TR5l2_Q0]+QQ4V0YQ7V4ZR8l7UQ+[&nS.X)a+]S2R-u.YR5e2SQ0i+ZQ4f0gQ7`4hR8m7^Q.m)sQ0i+ZQ2p.jQ4f0gQ5|2sQ7`4hQ7}5yR8m7^Q0i+ZR4f0gX'O!q%X&|1PX&{!q%X&|1PW'O!q%X&|1PS+u&z'PR1U+z_|O!O!P!T%_%b)iQ%a!PS)h%_%bR.d)i$^%u!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ*U%yR*X%{$c%n!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gW)t%m%x*T*WQ.e)jR2{.vR.m)sR5|2sQ'W!sR,O'WQ!TOQ$TlQ$WmQ%b!P[%|!T$T$W%b)U/gQ)U$yR/g*f$b%i!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g[)n%i)p.i:`:t:xQ)p%jQ.i)qQ:`%nQ:t:aR:x:uQ!vUR'Y!vS!OO!TU%]!O%_)iQ%_!PR)i%b#rYOfgilmp!O!P!T!Z![#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i+n,s,z-m.}0}1h1|3_3a3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9hh!yY!|#U$`'a'n(d,q-R9s9|:gQ!|[b#Ub#Q$y'l(b)S)U*Z-t!h$`o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ'a!}Q'n#ZQ(d$aQ,q'oQ-R(e!W9s!Y!_!`*i*l/^3h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ9|9tR:g9}Q-U(gR1p-UQ1t-[R5Z1tQ,c'bQ,f'cQ,h'dW1`,c,f,h5UR5U1_Q/d*fS3c/d3fR3f/gfbO!O!P!T$y%_%b)S)U)i-tp#Wb'}(y.j/b/t/{0Y0g1h5y6a6q6v7U7^Q'}#zS(y$v-oQ.j)sW/b*f/d/g3fQ/t*vQ/{*wQ0Y+QQ0g+ZQ1h,sQ5y2sQ6q3wQ6v3|Q7U4ZR7^4hQ,t(OQ1g,rT1j,t1gS(X$Q([Q(^$VU,x(X(^,}R,}(`Q(s$mR-h(sQ-p)OR2P-pQ3n/mQ3q/nT6j3n3qQ)S$yS-r)S-tR-t)UQ4`0aR7Y4``0t+^+_+`+a+d/q/r7OR4q0tQ8i6zR9Z8iQ4S0TR6}4SQ3x/wQ6n3tT6s3x6nQ3}/|Q6t3zU6y3}6t8eR8e6uQ4[0]Q7Q4VT7W4[7QhzOb!O!P!T$y%_%b)S)U)i-tQ$|xW%Zz$|%f)v$b%f!Q!n$O$u%o%p%q%y%{&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR)v%nS4i0i0nS7]4f4gT7b4i7]W&z!q%X&|1PS+r&z+zR+z'PQ1Q+wR4z1QU1[,S,T,UR5R1[S3S/Q7OR6U3SQ2t.mQ5x2pT5}2t5xQ.z)zR3O.z^_O!O!P!T%_%b)iY#Xb$y)S)U-t$l#_fgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!h$io!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'j#Q'lQ-P(bR/V*Z&v!RObfgilmop!O!P!T!Y!Z![!_!`!c!p#Q#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r$y%_%b&U&Y&[&b&u'l'}(W(Y(b(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,s,z-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!{Y[#U#Z9s9tW&{!q%X&|1P['`!|!}'n'o9|9}S(c$`$aS+t&z'PU,X'a,q:gS-Q(d(eQ1T+zR1n-RS%t!Q&oQ&q!nQ(V$OQ(w$uS)w%o.pQ)z%pQ)}%qS*]&P&rQ+e&pQ,S']Q-d(qQ.l)sU.w)x)y2vS/O*O*PQ/P*RQ/T*VQ/W*[Q/]*^Q/`*eQ/l*nQ/|*wS0S*x4RQ0a+UQ0c+VQ0y+hQ0{+oQ1X+}Q1{-iQ2T-vQ2`.UQ2i.`Q2z.tQ2|.xQ2}.yQ3X/ZQ3Y/[S3z/{/}Q4^0`Q4l0rQ4s0wQ4x1OQ4}1YQ5O1ZQ5_1yQ5n2aQ5r2hQ5u2jQ5w2mQ5{2sQ6V3VQ6o3uQ6u3{Q6w3|Q7P4UQ7X4_Q7[4eQ7d4tQ7n5`Q7p5dQ7|5vQ8P6RQ8S6YQ8c6pS8f6v6xQ8o7cQ8w7rR9X8g$^%m!Q!n$O$u%o%p%q&P&o&p&r'](q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gQ)j%nQ*T%yR*W%{$y%h!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x'pWOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$x%g!Q!n$O$u%i%j%n%o%p%q%y%{&P&o&p&r'](q)p)q)s)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.i.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8g:`:a:t:u:x_&y!q%X&z&|'P+z1PR,V']$zrOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!j$]o!c!p$e$g$h$q$r&U&b&u(b(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mQ,T']R5P1Z_}O!O!P!T%_%b)i^|O!O!P!T%_%b)iQ#YbX)R$y)S)U-tbhO!O!T3_6]8W8X9U9hS#`f9uQ#dgQ$PiQ$QlQ$VmQ$spW%^!P%_%b)iU&S!Y!`*iQ&W!ZQ&X![Q&]!_Q'q#eQ'r#oS's#p:QQ't#qQ'u#rQ'v#sQ'w#tQ'x#uQ'y#vQ'z#wQ'{#xQ'|#yQ(O#zQ(U#}Q([$TQ(`$WQ*b&YQ*c&[Q,r'}Q,w(WQ,y(YQ-n(|Q/k*lQ0z+nQ1i,sQ1l,zQ1}-mQ3P.}Q3[/^Q4w0}Q5V1hQ5a1|Q6^3aQ6d3hQ6e3kQ7R4WQ7e4vQ7h4|Q7s5gQ7y5tQ8j7SQ8q7gQ8{7{Q9[8kQ9b8|Q:[9wQ:]9xQ:c9zQ:d9{Q:h:OQ:i:PQ:j:RQ:k:SQ:l:TQ:m:UQ:n:VQ:o:WQ:p:XQ:q:YQ:r:ZQ:v:eQ:w:fR:{9v^tO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6[3_Q8V6]Q9R8WQ9T8XQ9g9UR9m9hQ&V!YQ&^!`R/h*iQ$joQ&a!cQ&t!pU(g$e$g(jS(n$h0eQ(u$qQ(v$rQ*`&UQ*m&bQ+p&uQ-S(fS-b(o4cQ-c(pQ-e(rW/a*f/d/g3fQ/j*kW0f+Z0g4h7^Q1o-TQ1z-gQ3b/bQ4k0mQ5X1rQ7l5[Q8Z6aR8t7m!h$_o!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mR-P(b'qXOY[bfgilmop!O!P!T!Y!Z![!_!`!c!p!|!}#Q#U#Z#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$`$a$e$g$h$q$r$y%_%b&U&Y&[&b&u'a'l'n'o'}(W(Y(b(d(e(f(j(o(p(r(|)S)U)i*Z*f*i*k*l+Z+n,q,s,z-R-T-g-m-t.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9s9t9u9v9w9x9z9{9|9}:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f:g$zqOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$fo!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7m&d^Ofgilmop!O!P!T!Y!Z![!_!`!c!p#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W$e$g$h$q$r%_%b&U&Y&[&b&u'}(W(Y(f(j(o(p(r(|)i*f*i*k*l+Z+n,s,z-T-g-m.}/^/b/d/g0e0g0m0}1h1r1|3_3a3f3h3k4W4c4h4v4|5[5g5t6]6a7S7^7g7m7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f[!zY[$`$a9s9t['_!|!}(d(e9|9}W)o%i%j:`:aU,W'a-R:gW.h)p)q:t:uT2o.i:xQ(i$eQ(m$gR-W(jV(h$e$g(jR-^(kR-](k$znOfgilmp!O!P!T!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W%_%b&Y&['}(W(Y(|)i*i*l+n,s,z-m.}/^0}1h1|3_3a3h3k4W4v4|5g5t6]7S7g7{8W8X8k8|9U9h9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:f!i$ko!c!p$e$g$h$q$r&U&b&u(f(j(o(p(r*f*k+Z-T-g/b/d/g0e0g0m1r3f4c4h5[6a7^7mS'g#O'pj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ,m'jQ.u)uR8_6f`,b'b'c'd,c,f,h1_5UQ1e,lX3l/m/n3n3qj,a'b'c'd,c,f,h,l/m/n1_3n3q5UQ7j5TR8s7k^uO!O!P!T%_%b)i$`#afgilmp!Y!Z![!_!`#e#o#p#q#r#s#t#u#v#w#x#y#z#}$T$W&Y&['}(W(Y(|*i*l+n,s,z-m.}/^0}1h1|3a3h3k4W4v4|5g5t7S7g7{8k8|9u9v9w9x9z9{:O:P:Q:R:S:T:U:V:W:X:Y:Z:e:fQ6Z3_Q8U6]Q9Q8WQ9S8XQ9f9UR9l9hR(Q#zR(P#zQ$SlR(]$TR$ooR$noR)Q$vR)P$vQ)O$vR2O-ohwOb!O!P!T$y%_%b)S)U)i-t$l!lz!Q!n$O$u$|%f%n%o%p%q%y%{&P&o&p&r'](q)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR${xR0b+UR0W*xR0U*xR6{4PR/y*vR/x*vR0P*wR0O*wR0_+QR0^+Q%XyObxz!O!P!Q!T!n$O$u$y$|%_%b%f%n%o%p%q%y%{&P&o&p&r'](q)S)U)i)s)v)x)y*O*P*R*V*[*^*e*n*w*x+U+V+h+o+}-i-t-v.U.`.p.t.x.y/Z/[/{/}0`0r0w1O1Y1Z1y2a2h2j2m2s2v3V3u3{3|4R4U4_4e4t5`5d5v6R6Y6p6v6x7c7r8gR0k+ZR0j+ZQ'R!qQ)c%XQ+w&|R4y1PX'Q!q%X&|1PR+y&|R+x&|T/S*S4TT/R*S4TR.o)sR.n)sR){%p\",\n nodeNames: \"⚠ | < > RawString Float LineComment BlockComment SourceFile ] InnerAttribute ! [ MetaItem self Metavariable super crate Identifier ScopedIdentifier :: QualifiedScope AbstractType impl SelfType MetaType TypeIdentifier ScopedTypeIdentifier ScopeIdentifier TypeArgList TypeBinding = Lifetime String Escape Char Boolean Integer } { Block ; ConstItem Vis pub ( in ) const BoundIdentifier : UnsafeBlock unsafe AsyncBlock async move IfExpression if LetDeclaration let LiteralPattern ArithOp MetaPattern SelfPattern ScopedIdentifier TuplePattern ScopedTypeIdentifier , StructPattern FieldPatternList FieldPattern ref mut FieldIdentifier .. RefPattern SlicePattern CapturedPattern ReferencePattern & MutPattern RangePattern ... OrPattern MacroPattern ParenthesizedTokens TokenBinding Identifier TokenRepetition ArithOp BitOp LogicOp UpdateOp CompareOp -> => ArithOp BracketedTokens BracedTokens _ else MatchExpression match MatchBlock MatchArm Attribute Guard UnaryExpression ArithOp DerefOp LogicOp ReferenceExpression TryExpression BinaryExpression ArithOp ArithOp BitOp BitOp BitOp BitOp LogicOp LogicOp AssignmentExpression TypeCastExpression as ReturnExpression return RangeExpression CallExpression ArgList AwaitExpression await FieldExpression GenericFunction BreakExpression break LoopLabel ContinueExpression continue IndexExpression ArrayExpression TupleExpression MacroInvocation UnitExpression ClosureExpression ParamList Parameter Parameter ParenthesizedExpression StructExpression FieldInitializerList ShorthandFieldInitializer FieldInitializer BaseFieldInitializer MatchArm WhileExpression while LoopExpression loop ForExpression for MacroInvocation MacroDefinition macro_rules MacroRule EmptyStatement ModItem mod DeclarationList AttributeItem ForeignModItem extern StructItem struct TypeParamList ConstrainedTypeParameter TraitBounds HigherRankedTraitBound RemovedTraitBound OptionalTypeParameter ConstParameter WhereClause where LifetimeClause TypeBoundClause FieldDeclarationList FieldDeclaration OrderedFieldDeclarationList UnionItem union EnumItem enum EnumVariantList EnumVariant TypeItem type FunctionItem default fn ParamList Parameter SelfParameter VariadicParameter VariadicParameter ImplItem TraitItem trait AssociatedType LetDeclaration UseDeclaration use ScopedIdentifier UseAsClause ScopedIdentifier UseList ScopedUseList UseWildcard ExternCrateDeclaration StaticItem static ExpressionStatement ExpressionStatement GenericType FunctionType ForLifetimes ParamList VariadicParameter Parameter VariadicParameter Parameter ReferenceType PointerType TupleType UnitType ArrayType MacroInvocation EmptyType DynamicType dyn BoundedType\",\n maxTerm: 359,\n nodeProps: [\n [\"isolate\", -4,4,6,7,33,\"\"],\n [\"group\", -42,4,5,14,15,16,17,18,19,33,35,36,37,40,51,53,56,101,107,111,112,113,122,123,125,127,128,130,132,133,134,137,139,140,141,142,143,144,148,149,155,157,159,\"Expression\",-16,22,24,25,26,27,222,223,230,231,232,233,234,235,236,237,239,\"Type\",-20,42,161,162,165,166,169,170,172,188,190,194,196,204,205,207,208,209,217,218,220,\"Statement\",-17,49,60,62,63,64,65,68,74,75,76,77,78,80,81,83,84,99,\"Pattern\"],\n [\"openedBy\", 9,\"[\",38,\"{\",47,\"(\"],\n [\"closedBy\", 12,\"]\",39,\"}\",45,\")\"]\n ],\n propSources: [rustHighlighting],\n skippedNodes: [0,6,7,240],\n repeatNodeCount: 32,\n tokenData: \"$%h_R!XOX$nXY5gYZ6iZ]$n]^5g^p$npq5gqr7Xrs9cst:Rtu;Tuv>vvwAQwxCbxy!+Tyz!,Vz{!-X{|!/_|}!0g}!O!1i!O!P!3v!P!Q!8[!Q!R!Bw!R![!Dr![!]#+q!]!^#-{!^!_#.}!_!`#1b!`!a#3o!a!b#6S!b!c#7U!c!}#8W!}#O#:T#O#P#;V#P#Q#Cb#Q#R#Dd#R#S#8W#S#T$n#T#U#8W#U#V#El#V#f#8W#f#g#Ic#g#o#8W#o#p$ S#p#q$!U#q#r$$f#r${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nU$u]'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU%uV'_Q'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&aV'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S&yVOz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`S'cVOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[S'{UOz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`S(bUOz(t{!P(t!P!Q(_!Q;'S(t;'S;=`*a<%lO(tS(wVOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)eV'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^S)}UOz(tz{)z{!P(t!Q;'S(t;'S;=`*a<%lO(tS*dP;=`<%l(tS*jP;=`<%l)^S*pP;=`<%l'`S*vP;=`<%l&[S+OO'PSU+T]'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U,R]'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU-P]'_QOY+|YZ-xZr+|rs'`sz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|U-}V'_QOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[Q.iV'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.dQ/TO'_QQ/WP;=`<%l.dU/`]'_QOY0XYZ3uZr0Xrs(tsz0Xz{.d{!P0X!P!Q/Z!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU0^]'_QOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU1`]'_Q'PS'OSOY1VYZ2XZr1Vrs)^sz1Vz{2w{!P1V!P!Q/Z!Q#O1V#O#P)^#P;'S1V;'S;=`4g<%lO1VU2bV'_Q'PS'OSOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U2|]'_QOY0XYZ3uZr0Xrs(tsz0Xz{2w{!P0X!P!Q.d!Q#O0X#O#P(t#P;'S0X;'S;=`4a<%lO0XU3zV'_QOz)^z{)z{!P)^!P!Q(_!Q;'S)^;'S;=`*g<%lO)^U4dP;=`<%l0XU4jP;=`<%l1VU4pP;=`<%l+|U4vP;=`<%l$nU5QV'_Q'PSOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_5p]'_Q&|X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_6rV'_Q&|X'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_7b_ZX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_8j]#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_9lV']Q'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_:[]'QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_;^i'_Q'vW'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_=Uj'_Q_X'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![<{![!c$n!c!}<{!}#O$n#O#P&[#P#R$n#R#S<{#S#T$n#T#o<{#o${$n${$|<{$|4w$n4w5b<{5b5i$n5i6S<{6S;'S$n;'S;=`4s<%lO$n_?P_(TP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_@X]#OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_AZa!qX'_Q'OSOY$nYZ%nZr$nrs&[sv$nvwB`wz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Bi]'}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Cik'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q!cE^!c!}Lp!}#OE^#O#P!!l#P#RE^#R#SLp#S#TE^#T#oLp#o${E^${$|Lp$|4wE^4w5bLp5b5iE^5i6SLp6S;'SE^;'S;=`!*}<%lOE^_Ee_'_Q'OSOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Fm]'_Q'OSsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_GmX'_Q'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]HaV'OSsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]H{X'OSOw&[wxHYxz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_Im_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{+O{!P+|!P!Q4y!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Js]'_QsXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_Kq_'_QOY+|YZ-xZr+|rs'`sw+|wxJlxz+|z{.d{!P+|!P!Q/Z!Q#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_Lyl'_Q'OS'ZXOY$nYZ%nZr$nrs&[sw$nwxFdxz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n_Nzj'_Q'OS'ZXOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![Nq![!c$n!c!}Nq!}#O$n#O#P&[#P#R$n#R#SNq#S#T$n#T#oNq#o${$n${$|Nq$|4w$n4w5bNq5b5i$n5i6SNq6S;'S$n;'S;=`4s<%lO$n]!!qZ'OSOzHvz{!#d{!PHv!P!Q!$n!Q#iHv#i#j!%Z#j#lHv#l#m!'V#m;'SHv;'S;=`!*w<%lOHv]!#gXOw'`wx!$Sxz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`]!$XVsXOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[]!$qWOw'`wx!$Sxz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`]!%`^'OSOz&[z{&v{!P&[!P!Q'x!Q![!&[![!c&[!c!i!&[!i#T&[#T#Z!&[#Z#o&[#o#p!({#p;'S&[;'S;=`*s<%lO&[]!&a['OSOz&[z{&v{!P&[!P!Q'x!Q![!'V![!c&[!c!i!'V!i#T&[#T#Z!'V#Z;'S&[;'S;=`*s<%lO&[]!'[['OSOz&[z{&v{!P&[!P!Q'x!Q![!(Q![!c&[!c!i!(Q!i#T&[#T#Z!(Q#Z;'S&[;'S;=`*s<%lO&[]!(V['OSOz&[z{&v{!P&[!P!Q'x!Q![Hv![!c&[!c!iHv!i#T&[#T#ZHv#Z;'S&[;'S;=`*s<%lO&[]!)Q['OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z;'S&[;'S;=`*s<%lO&[]!){^'OSOz&[z{&v{!P&[!P!Q'x!Q![!)v![!c&[!c!i!)v!i#T&[#T#Z!)v#Z#q&[#q#rHv#r;'S&[;'S;=`*s<%lO&[]!*zP;=`<%lHv_!+QP;=`<%lE^_!+^]}X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!,`]!PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!-`_(QX'_QOY+|YZ-xZr+|rs'`sz+|z{+O{!P+|!P!Q4y!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!.f]#OX'_QOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!/h_(PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!0p]!eX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!1r`'gX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`!a!2t!a#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!2}]#QX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!4P^(OX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!4{!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!5U`!lX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!O$n!O!P!6W!P!Q,z!Q!_$n!_!`!7Y!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!6a]!tX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nV!7c]'qP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!8c_'_Q'xXOY+|YZ-xZr+|rs'`sz+|z{!9b{!P+|!P!Q!:O!Q!_+|!_!`!._!`#O+|#O#P'`#P;'S+|;'S;=`4m<%lO+|_!9iV&}]'_QOY.dYZ/OZr.ds#O.d#P;'S.d;'S;=`/T<%lO.d_!:V]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!Aq{!P!;O!P!Q!:O!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;O_!;V]'_QUXOY!<OYZ2XZr!<Ors!=Ssz!<Oz{!@q{!P!<O!P!Q!:O!Q#O!<O#O#P!=S#P;'S!<O;'S;=`!Bq<%lO!<O_!<Z]'_QUX'PS'OSOY!<OYZ2XZr!<Ors!=Ssz!<Oz{!@q{!P!<O!P!Q!:O!Q#O!<O#O#P!=S#P;'S!<O;'S;=`!Bq<%lO!<O]!=]XUX'PS'OSOY!=SYZ)^Zz!=Sz{!=x{!P!=S!P!Q!?[!Q;'S!=S;'S;=`!@k<%lO!=S]!=}XUXOY!>jYZ(tZz!>jz{!=x{!P!>j!P!Q!?|!Q;'S!>j;'S;=`!@e<%lO!>j]!>oXUXOY!=SYZ)^Zz!=Sz{!=x{!P!=S!P!Q!?[!Q;'S!=S;'S;=`!@k<%lO!=S]!?aXUXOY!>jYZ(tZz!>jz{!?|{!P!>j!P!Q!?[!Q;'S!>j;'S;=`!@e<%lO!>jX!@RSUXOY!?|Z;'S!?|;'S;=`!@_<%lO!?|X!@bP;=`<%l!?|]!@hP;=`<%l!>j]!@nP;=`<%l!=S_!@x]'_QUXOY!;OYZ3uZr!;Ors!>jsz!;Oz{!@q{!P!;O!P!Q!Aq!Q#O!;O#O#P!>j#P;'S!;O;'S;=`!Bk<%lO!;OZ!AxX'_QUXOY!AqYZ/OZr!Aqrs!?|s#O!Aq#O#P!?|#P;'S!Aq;'S;=`!Be<%lO!AqZ!BhP;=`<%l!Aq_!BnP;=`<%l!;O_!BtP;=`<%l!<O_!CQjuX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![!Dr![#O$n#O#P&[#P#R$n#R#S!Dr#S#U$n#U#V#!}#V#]$n#]#^!FZ#^#c$n#c#d#%u#d#i$n#i#j!FZ#j#l$n#l#m#(g#m;'S$n;'S;=`4s<%lO$n_!D{duX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![!Dr![#O$n#O#P&[#P#R$n#R#S!Dr#S#]$n#]#^!FZ#^#i$n#i#j!FZ#j;'S$n;'S;=`4s<%lO$n_!Fbg'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!R$n!R!S!Gy!S!T$n!T!U!K_!U!W$n!W!X!Le!X!Y$n!Y!Z!J]!Z#O$n#O#P&[#P#g$n#g#h!Mk#h;'S$n;'S;=`4s<%lO$n_!HQa'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!S$n!S!T!IV!T!W$n!W!X!J]!X#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!I^_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!Y$n!Y!Z!J]!Z#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!Jf]uX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!Kf_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!S$n!S!T!J]!T#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!Ll_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!U$n!U!V!J]!V#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_!Mr_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P#]$n#]#^!Nq#^;'S$n;'S;=`4s<%lO$n_!Nx_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P#n$n#n#o# w#o;'S$n;'S;=`4s<%lO$n_#!O_'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P#X$n#X#Y!J]#Y;'S$n;'S;=`4s<%lO$n_##Ua'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!R#$Z!R!S#$Z!S#O$n#O#P&[#P#R$n#R#S#$Z#S;'S$n;'S;=`4s<%lO$n_#$deuX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!R#$Z!R!S#$Z!S#O$n#O#P&[#P#R$n#R#S#$Z#S#]$n#]#^!FZ#^#i$n#i#j!FZ#j;'S$n;'S;=`4s<%lO$n_#%|`'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!Y#'O!Y#O$n#O#P&[#P#R$n#R#S#'O#S;'S$n;'S;=`4s<%lO$n_#'XduX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!Y#'O!Y#O$n#O#P&[#P#R$n#R#S#'O#S#]$n#]#^!FZ#^#i$n#i#j!FZ#j;'S$n;'S;=`4s<%lO$n_#(nd'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#)|![!c$n!c!i#)|!i#O$n#O#P&[#P#R$n#R#S#)|#S#T$n#T#Z#)|#Z;'S$n;'S;=`4s<%lO$n_#*VhuX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#)|![!c$n!c!i#)|!i#O$n#O#P&[#P#R$n#R#S#)|#S#T$n#T#Z#)|#Z#]$n#]#^!FZ#^#i$n#i#j!FZ#j;'S$n;'S;=`4s<%lO$n_#+z_!SX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![$n![!]#,y!]#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#-S]dX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#.U]yX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#/W`#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!^$n!^!_#0Y!_!`8a!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#0c_'yX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#1k`oX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`!a#2m!a#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#2v]#RX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#3x`#PX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`8a!`!a#4z!a#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#5T_'zX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#6]](RX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nV#7_]'pP'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#8cj'_Q'OS!yW'TPOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$n_#:^][X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$nU#;[Z'OSOz#;}z{#<k{!P#;}!P!Q#=V!Q#i#;}#i#j#=n#j#l#;}#l#m#?j#m;'S#;};'S;=`#C[<%lO#;}U#<UVrQ'OSOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[U#<pVrQOz'`z{&v{!P'`!P!Q*y!Q;'S'`;'S;=`*m<%lO'`U#=[UrQOz'`{!P'`!P!Q(_!Q;'S'`;'S;=`*m<%lO'`U#=s^'OSOz&[z{&v{!P&[!P!Q'x!Q![#>o![!c&[!c!i#>o!i#T&[#T#Z#>o#Z#o&[#o#p#A`#p;'S&[;'S;=`*s<%lO&[U#>t['OSOz&[z{&v{!P&[!P!Q'x!Q![#?j![!c&[!c!i#?j!i#T&[#T#Z#?j#Z;'S&[;'S;=`*s<%lO&[U#?o['OSOz&[z{&v{!P&[!P!Q'x!Q![#@e![!c&[!c!i#@e!i#T&[#T#Z#@e#Z;'S&[;'S;=`*s<%lO&[U#@j['OSOz&[z{&v{!P&[!P!Q'x!Q![#;}![!c&[!c!i#;}!i#T&[#T#Z#;}#Z;'S&[;'S;=`*s<%lO&[U#Ae['OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z;'S&[;'S;=`*s<%lO&[U#B`^'OSOz&[z{&v{!P&[!P!Q'x!Q![#BZ![!c&[!c!i#BZ!i#T&[#T#Z#BZ#Z#q&[#q#r#;}#r;'S&[;'S;=`*s<%lO&[U#C_P;=`<%l#;}_#Ck]XX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Dm_'{X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_#Ewl'_Q'OS!yW'TPOY$nYZ%nZr$nrs#Gosw$nwx#H]xz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$n]#GvV'OS'^XOz&[z{&v{!P&[!P!Q'x!Q;'S&[;'S;=`*s<%lO&[_#Hd_'_Q'OSOYE^YZGfZrE^rsHvswE^wxFdxzE^z{Ih{!PE^!P!QKl!Q#OE^#O#P!!l#P;'SE^;'S;=`!*}<%lOE^_#Ink'_Q'OS!yW'TPOY$nYZ%nZr$nrs&[st#Kctz$nz{+O{!P$n!P!Q,z!Q![#8W![!c$n!c!}#8W!}#O$n#O#P&[#P#R$n#R#S#8W#S#T$n#T#o#8W#o${$n${$|#8W$|4w$n4w5b#8W5b5i$n5i6S#8W6S;'S$n;'S;=`4s<%lO$nV#Kji'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$nV#Mbj'_Q'OS'TPOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q![#MX![!c$n!c!}#MX!}#O$n#O#P&[#P#R$n#R#S#MX#S#T$n#T#o#MX#o${$n${$|#MX$|4w$n4w5b#MX5b5i$n5i6S#MX6S;'S$n;'S;=`4s<%lO$n_$ ]]wX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$!_a'rX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q!_$n!_!`@O!`#O$n#O#P&[#P#p$n#p#q$#d#q;'S$n;'S;=`4s<%lO$n_$#m]'|X'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n_$$o]vX'_Q'OSOY$nYZ%nZr$nrs&[sz$nz{+O{!P$n!P!Q,z!Q#O$n#O#P&[#P;'S$n;'S;=`4s<%lO$n\",\n tokenizers: [closureParam, tpDelim, literalTokens, 0, 1, 2, 3],\n topRules: {\"SourceFile\":[0,8]},\n specialized: [{term: 281, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 15596\n});\n\nexport { parser };\n","import { parser } from '@lezer/rust';\nimport { LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nA syntax provider based on the [Lezer Rust\nparser](https://github.com/lezer-parser/rust), extended with\nhighlighting and indentation information.\n*/\nconst rustLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"rust\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n IfExpression: /*@__PURE__*/continuedIndent({ except: /^\\s*({|else\\b)/ }),\n \"String BlockComment\": () => null,\n \"AttributeItem\": cx => cx.continue(),\n \"Statement MatchArm\": /*@__PURE__*/continuedIndent()\n }),\n /*@__PURE__*/foldNodeProp.add(type => {\n if (/(Block|edTokens|List)$/.test(type.name))\n return foldInside;\n if (type.name == \"BlockComment\")\n return tree => ({ from: tree.from + 2, to: tree.to - 2 });\n return undefined;\n })\n ]\n }),\n languageData: {\n commentTokens: { line: \"//\", block: { open: \"/*\", close: \"*/\" } },\n indentOnInput: /^\\s*(?:\\{|\\})$/,\n closeBrackets: { stringPrefixes: [\"b\", \"r\", \"br\"] }\n }\n});\n/**\nRust language support\n*/\nfunction rust() {\n return new LanguageSupport(rustLanguage);\n}\n\nexport { rust, rustLanguage };\n","import { ExternalTokenizer, LRParser, LocalTokenGroup } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst RawString = 1,\n templateArgsEndFallback = 2,\n MacroName = 3;\n\nconst R = 82, L = 76, u = 117, U = 85,\n a = 97, z = 122, A = 65, Z = 90, Underscore = 95,\n Zero = 48,\n Quote = 34,\n ParenL = 40, ParenR = 41,\n Space = 32, GreaterThan = 62;\n\nconst rawString = new ExternalTokenizer(input => {\n // Raw string literals can start with: R, LR, uR, UR, u8R\n if (input.next == L || input.next == U) {\n input.advance();\n } else if (input.next == u) {\n input.advance();\n if (input.next == Zero + 8) input.advance();\n }\n if (input.next != R) return\n input.advance();\n if (input.next != Quote) return\n input.advance();\n\n let marker = \"\";\n while (input.next != ParenL) {\n if (input.next == Space || input.next <= 13 || input.next == ParenR) return\n marker += String.fromCharCode(input.next);\n input.advance();\n }\n input.advance();\n\n for (;;) {\n if (input.next < 0)\n return input.acceptToken(RawString)\n if (input.next == ParenR) {\n let match = true;\n for (let i = 0; match && i < marker.length; i++)\n if (input.peek(i + 1) != marker.charCodeAt(i)) match = false;\n if (match && input.peek(marker.length + 1) == Quote)\n return input.acceptToken(RawString, 2 + marker.length)\n }\n input.advance();\n }\n});\n\nconst fallback = new ExternalTokenizer(input => {\n if (input.next == GreaterThan) {\n // Provide a template-args-closing token when the next characters\n // are \">>\", in which case the regular tokenizer will only see a\n // bit shift op.\n if (input.peek(1) == GreaterThan)\n input.acceptToken(templateArgsEndFallback, 1);\n } else {\n // Notice all-uppercase identifiers\n let sawLetter = false, i = 0;\n for (;; i++) {\n if (input.next >= A && input.next <= Z) sawLetter = true;\n else if (input.next >= a && input.next <= z) return\n else if (input.next != Underscore && !(input.next >= Zero && input.next <= Zero + 9)) break\n input.advance();\n }\n if (sawLetter && i > 1) input.acceptToken(MacroName);\n }\n}, {extend: true});\n\nconst cppHighlighting = styleTags({\n \"typedef struct union enum class typename decltype auto template operator friend noexcept namespace using requires concept import export module __attribute__ __declspec __based\": tags.definitionKeyword,\n \"extern MsCallModifier MsPointerModifier extern static register thread_local inline const volatile restrict _Atomic mutable constexpr constinit consteval virtual explicit VirtualSpecifier Access\": tags.modifier,\n \"if else switch for while do case default return break continue goto throw try catch\": tags.controlKeyword,\n \"co_return co_yield co_await\": tags.controlKeyword,\n \"new sizeof delete static_assert\": tags.operatorKeyword,\n \"NULL nullptr\": tags.null,\n this: tags.self,\n \"True False\": tags.bool,\n \"TypeSize PrimitiveType\": tags.standard(tags.typeName),\n TypeIdentifier: tags.typeName,\n FieldIdentifier: tags.propertyName,\n \"CallExpression/FieldExpression/FieldIdentifier\": tags.function(tags.propertyName),\n \"ModuleName/Identifier\": tags.namespace,\n \"PartitionName\": tags.labelName,\n StatementIdentifier: tags.labelName,\n \"Identifier DestructorName\": tags.variableName,\n \"CallExpression/Identifier\": tags.function(tags.variableName),\n \"CallExpression/ScopedIdentifier/Identifier\": tags.function(tags.variableName),\n \"FunctionDeclarator/Identifier FunctionDeclarator/DestructorName\": tags.function(tags.definition(tags.variableName)),\n NamespaceIdentifier: tags.namespace,\n OperatorName: tags.operator,\n ArithOp: tags.arithmeticOperator,\n LogicOp: tags.logicOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n AssignOp: tags.definitionOperator,\n UpdateOp: tags.updateOperator,\n LineComment: tags.lineComment,\n BlockComment: tags.blockComment,\n Number: tags.number,\n String: tags.string,\n \"RawString SystemLibString\": tags.special(tags.string),\n CharLiteral: tags.character,\n EscapeSequence: tags.escape,\n \"UserDefinedLiteral/Identifier\": tags.literal,\n PreProcArg: tags.meta,\n \"PreprocDirectiveName #include #ifdef #ifndef #if #define #else #endif #elif\": tags.processingInstruction,\n MacroName: tags.special(tags.name),\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \"< >\": tags.angleBracket,\n \". ->\": tags.derefOperator,\n \", ;\": tags.separator\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,bool:36, char:36, int:36, float:36, double:36, void:36, size_t:36, ssize_t:36, intptr_t:36, uintptr_t:36, charptr_t:36, int8_t:36, int16_t:36, int32_t:36, int64_t:36, uint8_t:36, uint16_t:36, uint32_t:36, uint64_t:36, char8_t:36, char16_t:36, char32_t:36, char64_t:36, const:70, volatile:72, restrict:74, _Atomic:76, mutable:78, constexpr:80, constinit:82, consteval:84, struct:88, __declspec:92, final:148, override:148, public:152, private:152, protected:152, virtual:154, extern:160, static:162, register:164, inline:166, thread_local:168, __attribute__:172, __based:178, __restrict:180, __uptr:180, __sptr:180, _unaligned:180, __unaligned:180, noexcept:194, requires:198, TRUE:796, true:796, FALSE:798, false:798, typename:218, class:220, template:234, throw:248, __cdecl:256, __clrcall:256, __stdcall:256, __fastcall:256, __thiscall:256, __vectorcall:256, try:260, catch:264, export:282, import:286, case:296, default:298, if:308, else:314, switch:318, do:322, while:324, for:330, return:334, break:338, continue:342, goto:346, co_return:350, co_yield:354, using:362, typedef:366, namespace:380, new:398, delete:400, co_await:402, concept:406, enum:410, static_assert:414, friend:422, union:424, explicit:430, operator:444, module:456, signed:518, unsigned:518, long:518, short:518, decltype:528, auto:530, sizeof:566, NULL:572, nullptr:586, this:588};\nconst spec_ = {__proto__:null,\"<\":765};\nconst spec_templateArgsEnd = {__proto__:null,\">\":135};\nconst spec_scopedIdentifier = {__proto__:null,operator:388, new:576, delete:582};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$;xQ!QQVOOP'gOUOOO([OWO'#CdO,UQUO'#CgO,`QUO'#FjO-vQbO'#CxO.XQUO'#CxO0WQUO'#K`O0_QUO'#CwO0jOpO'#DvO0rQ!dO'#D]OOQR'#JP'#JPO5[QVO'#GUO5iQUO'#JWOOQQ'#JW'#JWO8}QUO'#KsO<hQUO'#KsO?OQVO'#E^O?`QUO'#E^OOQQ'#Ed'#EdOOQQ'#Ee'#EeO?eQVO'#EfO@[QVO'#EiOBXQUO'#FPOByQUO'#FhOOQR'#Fj'#FjOCOQUO'#FjOOQR'#LW'#LWOOQR'#LV'#LVOEWQVO'#KVOF{QUO'#L]OGYQUO'#KwOGnQUO'#L]OH`QUO'#L_OOQR'#HU'#HUOOQR'#HV'#HVOOQR'#HW'#HWOOQR'#LS'#LSOOQR'#J`'#J`Q!QQVOOOHnQVO'#FOOIZQUO'#EhOIbQUOOOK^QVO'#HgOKnQUO'#HgONYQUO'#KwONdQUO'#KwOOQQ'#Kw'#KwO!!bQUO'#KwOOQQ'#Jr'#JrO!!oQUO'#HxOOQQ'#K`'#K`O!&aQUO'#K`O!&}QUO'#KVO!(}QVO'#I]O!(}QVO'#I`OCTQUO'#KVOOQQ'#Ip'#IpOOQQ'#KV'#KVO!-QQUO'#K`OOQR'#K_'#K_O!-XQUO'#DZO!/pQUO'#KtOOQQ'#Kt'#KtO!/wQUO'#KtO!0OQUO'#ETO!0TQUO'#EWO!0YQUO'#FRO8}QUO'#FPO!QQVO'#F^O!0_Q#vO'#F`O!0jQUO'#FkO!0rQUO'#FpO!0wQVO'#FrO!0rQUO'#FuO!3vQUO'#FvO!3{QVO'#FxO!4VQUO'#FzO!4[QUO'#F|O!4aQUO'#GOO!4fQVO'#GQO!(}QVO'#GSO!4mQUO'#GpO!4{QUO'#GYO!(}QVO'#FeO!6YQUO'#FeO!6_QVO'#G`O!6fQUO'#GaO!6qQUO'#GnO!6vQUO'#GrO!6{QUO'#GzO!7mQ&lO'#HiO!:pQUO'#GuO!;QQUO'#HXO!;]QUO'#HZO!;eQUO'#DXO!;eQUO'#HuO!;eQUO'#HvO!;|QUO'#HwO!<_QUO'#H|O!=SQUO'#H}O!>xQVO'#IbO!(}QVO'#IdO!?SQUO'#IgO!?ZQVO'#IjP!AQO!LQO'#CaP!A]{,UO'#CbP!6q{,UO'#CbP!Ah{7[O'#CbP!6q{,UO'#CbP!Am{,UO'#CbP!AxOSO'#IzPOOO)CEo)CEoOOOO'#I}'#I}O!BSOWO,59OOOQR,59O,59OO!(}QVO,59VOOQQ,59X,59XOOQR'#Do'#DoO!(}QVO,5;ROOQR,5<U,5<UO!B_QUO,59ZO!(}QVO,5>qOOQR'#IX'#IXOOQR'#IY'#IYOOQR'#IZ'#IZOOQR'#I['#I[O!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!(}QVO,5>rO!D^QVO,5>zOOQQ,5?W,5?WO!FPQVO'#CjO!IxQUO'#CzOOQQ,59d,59dOOQQ,59c,59cOOQQ,5<},5<}O!JVQ&lO,5=mO!?SQUO,5?RO!LyQVO,5?UO!MQQbO,59dO!M]QVO'#FYOOQQ,5?P,5?PO!MmQVO,59WO!MtO`O,5:bO!MyQbO'#D^O!N[QbO'#KdO!NjQbO,59wO!NrQbO'#CxO# TQUO'#CxO# YQUO'#K`O# dQUO'#CwOOQR-E<}-E<}O# oQUO,5AuO# vQVO'#EfO@[QVO'#EiOBXQUO,5;kOOQR,5<p,5<pO#$oQUO'#KVO#$vQUO'#KVO!(}QVO'#IUO8}QUO,5;kO#%ZQ&lO'#HiO#(bQUO'#CtO#+VQbO'#CxO#+[QUO'#CwO#.xQUO'#K`OOQQ-E=U-E=UO#1]QUO,5A_O#1gQUO'#K`O#1qQUO,5A_OOQR,5Au,5AuOOQQ,5>l,5>lO#3uQUO'#CgO#4kQUO,5>pO#6^QUO'#IeOOQR'#JO'#JOO#6fQUO,5:xO#7SQUO,5:xO#7sQUO,5:xO#8hQUO'#CuO!0TQUO'#CmOOQQ'#JX'#JXO#7SQUO,5:xO#8pQUO,5;QO!4{QUO'#DOO#9yQUO,5;QO#:OQUO,5>QO#;[QUO'#DOO#;rQUO,5>{O#;wQUO'#K}O#=QQUO,5;TO#=YQVO,5;TO#=dQUO,5;TOOQQ,5;T,5;TO#?]QUO'#LbO#?dQUO,5>UO#?iQbO'#CxO#?tQUO'#GcO#?yQUO'#E^O#@jQUO,5;kO#ARQUO'#LTO#AZQUO,5;rOKnQUO'#HfOBXQUO'#HgO#A`QUO'#KwO!6qQUO'#HjO#BWQUO'#CuO!0wQVO,5<SOOQQ'#Cg'#CgOOQR'#Ji'#JiO#B]QVO,5=`OOQQ,5?Z,5?ZO#DfQbO'#CxO#DqQUO'#GcOOQQ'#Jj'#JjOOQQ-E=h-E=hOGYQUO,5AwOGnQUO,5AwO#DvQUO,5AyO#ERQUO'#G|OOQR,5Aw,5AwO#DvQUO,5AwO#E^QUO'#HOO#EfQUO,5AyOOQR,5Ay,5AyOOQR,5Az,5AzO#EtQVO,5AzOOQR-E=^-E=^O#GnQVO,5;jOOQR,5;j,5;jO#IoQUO'#EjO#JtQUO'#EwO#KkQVO'#ExO#M}QUO'#EvO#NVQUO'#EyO$ UQUO'#EzOOQQ'#LQ'#LQO$ {QUO,5;SO$#RQUO'#EvOOQQ,5;S,5;SO$$OQUO,5;SO$%qQUO,5:yO$([QVO,5>PO$(fQUO'#E[O$(sQUO,5>ROOQQ,5>S,5>SO$,aQVO'#C|OOQQ-E=p-E=pOOQQ,5>d,5>dOOQQ,59a,59aO$,kQUO,5>wO$.kQUO,5>zO!6qQUO,59uO$/OQUO,5;qO$/]QUO,5<{O!0TQUO,5:oOOQQ,5:r,5:rO$/hQUO,5;mO$/mQUO'#KsOBXQUO,5;kOOQR,5;x,5;xO$0^QUO'#FbO$0lQUO'#FbO$0qQUO,5;zO$4[QVO'#FmO!0wQVO,5<VO!0rQUO,5<VO!0YQUO,5<[O$4cQVO'#GUO$7_QUO,5<^O!0wQVO,5<aO$:uQVO,5<bO$;SQUO,5<dOOQR,5<d,5<dO$<]QUO,5<dOOQR,5<f,5<fOOQR,5<h,5<hOOQQ'#Fi'#FiO$<bQUO,5<jO$<gQUO,5<lOOQR,5<l,5<lO$=mQUO,5<nO$>sQUO,5<rO$?OQUO,5=[O$?TQUO,5=[O!4{QUO,5<tO$?]QUO,5<tO$?qQUO,5<PO$@wQVO,5<PO$CYQUO,5<zOOQR,5<z,5<zOOQR,5<{,5<{O$?TQUO,5<{O$D`QUO,5<{O$DkQUO,5=YO!(}QVO,5=^O!(}QVO,5=fO#NsQUO,5=mOOQQ,5>T,5>TO$FpQUO,5>TO$FzQUO,5>TO$GPQUO,5>TO$GUQUO,5>TO!6qQUO,5>TO$ISQUO'#K`O$IZQUO,5=oO$IfQUO,5=aOKnQUO,5=oO$J`QUO,5=sOOQR,5=s,5=sO$JhQUO,5=sO$LsQVO'#H[OOQQ,5=u,5=uO!;`QUO,5=uO%#nQUO'#KpO%#uQUO'#KaO%$ZQUO'#KpO%$eQUO'#DyO%$vQUO'#D|O%'sQUO'#KaOOQQ'#Ka'#KaO%)fQUO'#KaO%#uQUO'#KaO%)kQUO'#KaOOQQ,59s,59sOOQQ,5>a,5>aOOQQ,5>b,5>bO%)sQUO'#HzO%){QUO,5>cOOQQ,5>c,5>cO%-gQUO,5>cO%-rQUO,5>hO%1^QVO,5>iO%1eQUO,5>|O# vQVO'#EfO%4kQUO,5>|OOQQ,5>|,5>|O%5[QUO,5?OO%7`QUO,5?RO!<_QUO,5?RO%9[QUO,5?UO%<wQVO,5?UPOOO'#I|'#I|P%=OO!LQO,58{POOO,58{,58{P!Am{,UO,58|P%=Z{,UO,58|P%=i{7[O,58|P%=o{,UO,58|PO{O'#Jv'#JvP%=t{,UO'#LiPOOO'#Li'#LiP%=z{,UO'#LiPOOO,58|,58|POOO,5?f,5?fP%>POSO,5?fOOOO-E<{-E<{OOQR1G.j1G.jO%>WQUO1G.qO%?^QUO1G0mOOQQ1G0m1G0mO%@jQUO'#CpO%ByQbO'#CxO%CUQUO'#CsO%CZQUO'#CsO%C`QUO1G.uO#BWQUO'#CrOOQQ1G.u1G.uO%EcQUO1G4]O%FiQUO1G4^O%H[QUO1G4^O%I}QUO1G4^O%KpQUO1G4^O%McQUO1G4^O& UQUO1G4^O&!wQUO1G4^O&$jQUO1G4^O&&]QUO1G4^O&(OQUO1G4^O&)qQUO1G4^O&+dQUO'#KUO&,mQUO'#KUO&,uQUO,59UOOQQ,5=P,5=PO&.}QUO,5=PO&/XQUO,5=PO&/^QUO,5=PO&/cQUO,5=PO!6qQUO,5=PO#NsQUO1G3XO&/mQUO1G4mO!<_QUO1G4mO&1iQUO1G4pO&3[QVO1G4pOOQQ1G/O1G/OOOQQ1G.}1G.}OOQQ1G2i1G2iO!JVQ&lO1G3XO&3cQUO'#LUO@[QVO'#EiO&4lQUO'#F]OOQQ'#Jb'#JbO&4qQUO'#FZO&4|QUO'#LUO&5UQUO,5;tO&5ZQUO1G.rOOQQ1G.r1G.rOOQR1G/|1G/|O&6|Q!dO'#JQO&7RQbO,59xO&9dQ!eO'#D`O&9kQ!dO'#JSO&9pQbO,5AOO&9pQbO,5AOOOQR1G/c1G/cO&9{QbO1G/cO&:QQ&lO'#GeO&;OQbO,59dOOQR1G7a1G7aO#@jQUO1G1VO&;ZQUO1G1^OBXQUO1G1VO&=lQUO'#CzO#+VQbO,59dO&A_QUO1G6yOOQR-E<|-E<|O&BqQUO1G0dO#6fQUO1G0dOOQQ-E=V-E=VO#7SQUO1G0dOOQQ1G0l1G0lO&CfQUO,59jOOQQ1G3l1G3lO&C|QUO,59jO&DdQUO,59jO!MmQVO1G4gO!(}QVO'#JZO&EOQUO,5AiOOQQ1G0o1G0oO!(}QVO1G0oO!6qQUO'#JoO&EWQUO,5A|OOQQ1G3p1G3pOOQR1G1V1G1VO&ITQVO'#FOO!MmQVO,5;sOOQQ,5;s,5;sOBXQUO'#JdO&KPQUO,5AoO&KXQVO'#E[OOQR1G1^1G1^O&MvQUO'#LbOOQR1G1n1G1nOOQR-E=g-E=gOOQR1G7c1G7cO#DvQUO1G7cOGYQUO1G7cO#DvQUO1G7eOOQR1G7e1G7eO&NOQUO'#G}O&NWQUO'#L^OOQQ,5=h,5=hO&NfQUO,5=jO&NkQUO,5=kOOQR1G7f1G7fO#EtQVO1G7fO&NpQUO1G7fO' vQVO,5=kOOQR1G1U1G1UO$/UQUO'#E]O'!lQUO'#E]OOQQ'#LP'#LPO'#VQUO'#LOO'#bQUO,5;UO'#jQUO'#ElO'#}QUO'#ElO'$bQUO'#EtOOQQ'#J]'#J]O'$gQUO,5;cO'%^QUO,5;cO'&XQUO,5;dO''_QVO,5;dOOQQ,5;d,5;dO''iQVO,5;dO''_QVO,5;dO''pQUO,5;bO'(mQUO,5;eO'(xQUO'#KvO')QQUO,5:vO')VQUO,5;fOOQQ1G0n1G0nOOQQ'#J^'#J^O''pQUO,5;bO!4{QUO'#E}OOQQ,5;b,5;bO'*QQUO'#E`O'+zQUO'#E{OHuQUO1G0nO',PQUO'#EbOOQQ'#JY'#JYO'-iQUO'#KxOOQQ'#Kx'#KxO'.cQUO1G0eO'/ZQUO1G3kO'0aQVO1G3kOOQQ1G3k1G3kO'0kQVO1G3kO'0rQUO'#LeO'2OQUO'#K^O'2^QUO'#K]O'2iQUO,59hO'2qQUO1G/aO'2vQUO'#FPOOQR1G1]1G1]OOQR1G2g1G2gO$?TQUO1G2gO'3QQUO1G2gO'3]QUO1G0ZOOQR'#Ja'#JaO'3bQVO1G1XO'9ZQUO'#FTO'9`QUO1G1VO!6qQUO'#JeO'9nQUO,5;|O$0lQUO,5;|OOQQ'#Fc'#FcOOQQ,5;|,5;|O'9|QUO1G1fOOQR1G1f1G1fO':UQUO,5<XO$/UQUO'#FWOBXQUO'#FWO':]QUO,5<XO!(}QVO,5<XO':eQUO,5<XO':jQVO1G1qO!0wQVO1G1qOOQR1G1v1G1vO'@YQUO1G1xOOQR1G1{1G1{O'@_QUO1G1|OBXQUO1G2]O'AhQVO1G1|O'C|QUO1G1|O'DRQUO'#GWO8}QUO1G2]OOQR1G2O1G2OOOQR1G2U1G2UOOQR1G2W1G2WOOQR1G2Y1G2YO'DWQUO1G2^O!4{QUO1G2^OOQR1G2v1G2vO'D`QUO1G2vO$?]QUO1G2`OOQQ'#Cv'#CvO'DeQUO'#G[O'E`QUO'#G[O'EeQUO'#LXO'EsQUO'#G_OOQQ'#LY'#LYO'FRQUO1G2`O'FWQVO1G1kO'HiQVO'#GUOBXQUO'#FWOOQR'#Jf'#JfO'FWQVO1G1kO'HsQUO'#FvOOQR1G2f1G2fO'HxQUO1G2gO'H}QUO'#JhO'3QQUO1G2gO!(}QVO1G2tO'IVQUO1G2xO'J`QUO1G3QO'KfQUO1G3XOOQQ1G3o1G3oO'KzQUO1G3oOOQR1G3Z1G3ZO'LPQUO'#K`O'2vQUO'#LZOGnQUO'#L]OOQR'#Gy'#GyO#DvQUO'#L_OOQR'#HQ'#HQO'LZQUO'#GvO'$bQUO'#GuOOQR1G2{1G2{O'MWQUO1G2{O'M}QUO1G3ZO'NYQUO1G3_O'N_QUO1G3_OOQR1G3_1G3_O'NgQUO'#H]OOQR'#H]'#H]O( pQUO'#H]O!(}QVO'#H`O!(}QVO'#H_OOQR'#La'#LaO( uQUO'#LaOOQR'#Jl'#JlO( zQVO,5=vOOQQ,5=v,5=vO(!RQUO'#H^O(!ZQUO'#HZOOQQ1G3a1G3aO(!eQUO,5@{OOQQ,5@{,5@{O%)fQUO,5@{O%)kQUO,5@{O%$eQUO,5:eO(&SQUO'#KqO(&bQUO'#KqOOQQ,5:e,5:eOOQQ'#JT'#JTO(&mQUO'#D}O(&wQUO'#KwOGnQUO'#L]O('sQUO'#D}OOQQ'#Hp'#HpOOQQ'#Hr'#HrOOQQ'#Hs'#HsOOQQ'#Kr'#KrOOQQ'#JV'#JVO('}QUO,5:hOOQQ,5:h,5:hO((zQUO'#L]O()XQUO'#HtO()oQUO,5@{O()vQUO'#H{O(*RQUO'#LdO(*ZQUO,5>fO(*`QUO'#LcOOQQ1G3}1G3}O(.VQUO1G3}O(.^QUO1G3}O(.eQUO1G4TO(/kQUO1G4TO(/pQUO,5BSO!6qQUO1G4hO!(}QVO'#IiOOQQ1G4m1G4mO(/uQUO1G4mO(1xQVO1G4pPOOO-E<z-E<zPOOO1G.g1G.gPOOO1G.h1G.hP!Am{,UO1G.hP(3xQUO'#LkP(4T{,UO1G.hP(4Y{7[O1G.hPO{O-E=t-E=tPOOO,5BT,5BTP(4b{,UO,5BTPOOO1G5Q1G5QO!(}QVO7+$]O(4gQUO'#CzOOQQ,59_,59_O(4rQbO,59dO(4}QbO,59_OOQQ,59^,59^OOQQ7+)w7+)wO!MmQVO'#JuO(5YQUO,5@pOOQQ1G.p1G.pOOQQ1G2k1G2kO(5bQUO1G2kO(5gQUO7+(sOOQQ7+*X7+*XO(7{QUO7+*XO(8SQUO7+*XO(1xQVO7+*[O#NsQUO7+(sO(8aQVO'#JcO(8tQUO,5ApO(8|QUO,5;vOOQQ'#Cp'#CpOOQQ,5;w,5;wO!(}QVO'#F[OOQQ-E=`-E=`O!MmQVO,5;uOOQQ1G1`1G1`OOQQ,5?l,5?lOOQQ-E=O-E=OOOQR'#Dg'#DgOOQR'#Di'#DiOOQR'#Dl'#DlO(:VQ!eO'#KeO(:^QMkO'#KeO(:eQ!eO'#KeOOQR'#Ke'#KeOOQR'#JR'#JRO(:lQ!eO,59zOOQQ,59z,59zO(:sQbO,5?nOOQQ-E=Q-E=QO(;RQbO1G6jOOQR7+$}7+$}OOQR7+&q7+&qOOQR7+&x7+&xO'9`QUO7+&qO(;^QUO7+&OO#6fQUO7+&OO(<RQUO1G/UO(<iQUO1G/UO(=TQUO7+*ROOQQ7+*V7+*VO(>vQUO,5?uOOQQ-E=X-E=XO(@PQUO7+&ZOOQQ,5@Z,5@ZOOQQ-E=m-E=mO(@UQUO'#LUO@[QVO'#EiO(AbQUO1G1_OOQQ1G1_1G1_O(BkQUO,5@OOOQQ,5@O,5@OOOQQ-E=b-E=bO(CPQUO'#KvOOQR7+,}7+,}O#DvQUO7+,}OOQR7+-P7+-PO(C^QUO,5=iO#ERQUO'#JkO(CoQUO,5AxOOQR1G3U1G3UOOQR1G3V1G3VO(C}QUO7+-QOOQR7+-Q7+-QO(EuQUO,5:wO(GdQUO'#EwO!(}QVO,5;VO(HVQUO,5:wO(HaQUO'#EpO(HrQUO'#EzOOQQ,5;Z,5;ZO#KkQVO'#ExO(IYQUO,5:wO(IaQUO'#EyO#GuQUO'#J[O(JyQUO,5AjOOQQ1G0p1G0pO(KUQUO,5;WO!<_QUO,5;^O(KoQUO,5;_O(K}QUO,5;WO(NaQUO,5;`OOQQ-E=Z-E=ZO(NiQUO1G0}OOQQ1G1O1G1OO) dQUO1G1OO)!jQVO1G1OO)!qQVO1G1OO)!{QUO1G0|OOQQ1G0|1G0|OOQQ1G1P1G1PO)#xQUO'#JpO)$SQUO,5AbOOQQ1G0b1G0bOOQQ-E=[-E=[O)$[QUO,5;iO!<_QUO,5;iO)%XQVO,5:zO)%`QUO,5;gO$ {QUO7+&YOOQQ7+&Y7+&YO!(}QVO'#EfO)%gQUO,5:|OOQQ'#Ky'#KyOOQQ-E=W-E=WOOQQ,5Ad,5AdOOQQ'#Jm'#JmO))[QUO7+&PPOQQ7+&P7+&POOQQ7+)V7+)VO)*SQUO7+)VO)+YQVO7+)VOOQQ,5>m,5>mO$)hQVO'#JtO)+aQUO,5@wOOQQ1G/S1G/SOOQQ7+${7+${O)+lQUO7+(RO)+qQUO7+(ROOQR7+(R7+(RO$?TQUO7+(ROOQQ7+%u7+%uOOQR-E=_-E=_O!0YQUO,5;oOOQQ,5@P,5@POOQQ-E=c-E=cO$0lQUO1G1hOOQQ1G1h1G1hOOQR7+'Q7+'QOOQR1G1s1G1sOBXQUO,5;rO),_QUO,5<YO),fQUO1G1sO)-oQUO1G1sO!0wQVO7+']O)-tQVO7+']O)3dQUO7+'dO)3iQVO7+'hO)5}QUO7+'wO)6XQUO7+'hO)7_QVO7+'hOKnQUO7+'wO$>vQUO,5<rO!4{QUO7+'xO)7fQUO7+'xOOQR7+(b7+(bO)7kQUO7+'zO)7pQUO,5<vO'DeQUO,5<vO)8hQUO,5<vO'DeQUO,5<vOOQQ,5<w,5<wO)8yQVO,5<xO'EsQUO'#JgO)9TQUO,5AsO)9]QUO,5<yOOQR7+'z7+'zO)9hQVO7+'VO)6QQUO'#LTOOQR-E=d-E=dO);yQVO,5<bOOQQ,5@S,5@SO!6qQUO,5@SOOQQ-E=f-E=fO)>bQUO7+(`O)?hQUO7+(dO)?mQVO7+(dOOQQ7+(l7+(lOOQQ7+)Z7+)ZO)?uQUO'#KpO)@PQUO'#KpOOQR,5=b,5=bO)@^QUO,5=bO!;eQUO,5=bO!;eQUO,5=bO!;eQUO,5=bOOQR7+(g7+(gOOQR7+(u7+(uOOQR7+(y7+(yOOQR,5=w,5=wO)@cQUO,5=zO)AiQUO,5=yOOQR,5A{,5A{OOQR-E=j-E=jOOQQ1G3b1G3bO)BoQUO,5=xO)BtQVO'#EfOOQQ1G6g1G6gO%)fQUO1G6gO%)kQUO1G6gOOQQ1G0P1G0POOQQ-E=R-E=RO)E]QUO,5A]O(&SQUO'#JUO)EhQUO,5A]O)EhQUO,5A]O)EpQUO,5:iO8}QUO,5:iOOQQ,5>],5>]O)EzQUO,5AwO)FRQUO'#EVO)G]QUO'#EVO)GvQUO,5:iO)HQQUO'#HlO)HQQUO'#HmOOQQ'#Ku'#KuO)HoQUO'#KuO!(}QVO'#HnOOQQ,5:i,5:iO)IaQUO,5:iO!MmQVO,5:iOOQQ-E=T-E=TOOQQ1G0S1G0SOOQQ,5>`,5>`O)IfQUO1G6gO!(}QVO,5>gO)MTQUO'#JsO)M`QUO,5BOOOQQ1G4Q1G4QO)MhQUO,5A}OOQQ,5A},5A}OOQQ7+)i7+)iO*#VQUO7+)iOOQQ7+)o7+)oO*(UQVO1G7nO**WQUO7+*SO**]QUO,5?TO*+cQUO7+*[POOO7+$S7+$SP*-UQUO'#LlP*-^QUO,5BVP*-c{,UO7+$SPOOO1G7o1G7oO*-hQUO<<GwOOQQ1G.y1G.yOOQQ'#IT'#ITO*/ZQUO,5@aOOQQ,5@a,5@aOOQQ-E=s-E=sOOQQ7+(V7+(VOOQQ<<Ms<<MsO*0dQUO<<MsO*2gQUO<<MvO*4YQUO<<L_O*4nQUO,5?}OOQQ,5?},5?}OOQQ-E=a-E=aOOQQ1G1b1G1bO*5wQUO,5;vO*6}QUO1G1aOOQQ1G1a1G1aOOQR,5AP,5APO*8WQ!eO,5APO*8_QMkO,5APO*8fQ!eO,5APOOQR-E=P-E=POOQQ1G/f1G/fO*8mQ!eO'#DwOOQQ1G5Y1G5YOOQR<<J]<<J]O*8tQUO<<IjO*9iQUO7+$pOOQQ<<Iu<<IuO(8aQVO,5;ROOQR<=!i<=!iOOQQ1G3T1G3TOOQQ,5@V,5@VOOQQ-E=i-E=iOOQR<=!l<=!lO*:fQUO1G0cO*:mQUO'#EzO*:}QUO1G0cO*;UQUO'#JOO*<lQUO1G0qO!(}QVO1G0qOOQQ,5;[,5;[OOQQ,5;],5;]OOQQ,5?v,5?vOOQQ-E=Y-E=YO!<_QUO1G0xO*={QUO1G0xOOQQ1G0y1G0yO*>^QUO'#ElOOQQ1G0z1G0zOOQQ7+&j7+&jO*>rQUO7+&jO*?xQVO7+&jOOQQ7+&h7+&hOOQQ,5@[,5@[OOQQ-E=n-E=nO*@tQUO1G1TO*AOQUO1G1TO*AiQUO1G0fOOQQ1G0f1G0fO*BoQUO'#LRO*BwQUO1G1ROOQQ<<It<<ItOOQQ'#Hb'#HbO',PQUO,5={OOQQ'#Hd'#HdO',PQUO,5=}OOQQ-E=k-E=kPOQQ<<Ik<<IkPOQQ-E=l-E=lOOQQ<<Lq<<LqO*B|QUO'#LgO*DYQUO'#LfOOQQ,5@`,5@`OOQQ-E=r-E=rOOQR<<Km<<KmO$?TQUO<<KmO*DhQUO<<KmOOQR1G1Z1G1ZOOQQ7+'S7+'SO!MmQVO1G1tO*DmQUO1G1tOOQR7+'_7+'_OOQR<<Jw<<JwO!0wQVO<<JwOOQR<<KO<<KOO*DxQUO<<KSO*FOQVO<<KSOKnQUO<<KcO!MmQVO<<KcO*FVQUO<<KSO!0wQVO<<KSO*G`QUO<<KSO*GeQUO<<KcO*GpQUO<<KdOOQR<<Kd<<KdOOQR<<Kf<<KfO*GuQUO1G2bO)7pQUO1G2bO'DeQUO1G2bO*HWQUO1G2dO*I^QVO1G2dOOQQ1G2d1G2dO*IhQVO1G2dO*IoQUO,5@ROOQQ-E=e-E=eOOQQ1G2e1G2eO*I}QUO1G1|O*KWQVO1G1|O*K_QUO1G1|OOQQ1G5n1G5nOOQR<<Kz<<KzOOQR<<LO<<LOO*KdQVO<<LOO*KoQUO<<LOOOQR1G2|1G2|O*KtQUO1G2|O*K{QUO1G3eOOQR1G3d1G3dOOQQ7+,R7+,RO%)fQUO7+,RO*LWQUO1G6wO*LWQUO1G6wO(&SQUO,5?pO*L`QUO,5?pOOQQ-E=S-E=SO*LkQUO1G0TOOQQ1G0T1G0TO*LuQUO1G0TO!MmQVO1G0TO*LzQUO1G0TOOQQ1G3w1G3wO*MUQUO,5:qO)FRQUO,5:qO*MrQUO,5:qO)FRQUO,5:qO$$TQUO,5:uO*NaQVO,5>VO)HQQUO'#JqO*NkQUO1G0TO*N|QVO1G0TOOQQ1G3u1G3uO+ TQUO,5>WO+ `QUO,5>XO+ }QUO,5>YO+#TQUO1G0TO%)kQUO7+,RO+$ZQUO1G4ROOQQ,5@_,5@_OOQQ-E=q-E=qOOQQ<<MT<<MTOOQQ<<Mn<<MnO+%dQUO1G4oP+'gQUO'#JwP+'oQUO,5BWPO{O1G7q1G7qPOOO<<Gn<<GnOOQQANC_ANC_OOQR1G6k1G6kO+'wQ!eO,5:cOOQQ,5:c,5:cO+(OQUO1G0mO+)[QUO7+&]O+*kQUO7+&dO+*|QUO,5;WOOQQ<<JU<<JUO++[QUO7+&oOOQQ7+&Q7+&QO!4{QUO'#J_O+,VQUO,5AmOOQQ7+&m7+&mOOQQ1G3g1G3gO+,_QUO1G3iOOQQ,5>n,5>nO+0SQUOANAXOOQRANAXANAXO+0XQUO7+'`OOQRAN@cAN@cO+1eQVOAN@nO+1lQUOAN@nO!0wQVOAN@nO+2uQUOAN@nO+2zQUOAN@}O+3VQUOAN@}O+4]QUOAN@}OOQRAN@nAN@nO!MmQVOAN@}OOQRANAOANAOO+4bQUO7+'|O)7pQUO7+'|OOQQ7+(O7+(OO+4sQUO7+(OO+5yQVO7+(OO+6QQVO7+'hO+6XQUOANAjOOQR7+(h7+(hOOQR7+)P7+)PO+6^QUO7+)PO+6cQUO7+)POOQQ<= m<= mO+6kQUO7+,cO+6sQUO1G5[OOQQ1G5[1G5[O+7OQUO7+%oOOQQ7+%o7+%oO+7aQUO7+%oO*N|QVO7+%oOOQQ7+)a7+)aO+7fQUO7+%oO+8lQUO7+%oO!MmQVO7+%oO+8vQUO1G0]O*MUQUO1G0]O)FRQUO1G0]OOQQ1G0a1G0aO+9eQUO1G3qO+:kQVO1G3qOOQQ1G3q1G3qO+:uQVO1G3qO+:|QUO,5@]OOQQ-E=o-E=oOOQQ1G3r1G3rO%)fQUO<= mOOQQ7+*Z7+*ZPOQQ,5@c,5@cPOQQ-E=u-E=uOOQQ1G/}1G/}OOQQ,5?y,5?yOOQQ-E=]-E=]OOQRG26sG26sO+;eQUOG26YO!0wQVOG26YO+<nQUOG26YOOQRG26YG26YO!MmQVOG26iO!0wQVOG26iO+<sQUOG26iO+=yQUOG26iO+>OQUO<<KhOOQQ<<Kj<<KjOOQRG27UG27UOOQR<<Lk<<LkO+>aQUO<<LkOOQQ7+*v7+*vOOQQ<<IZ<<IZO+>fQUO<<IZO!MmQVO<<IZO+>kQUO<<IZO+?qQUO<<IZO*N|QVO<<IZOOQQ<<L{<<L{O+@SQUO7+%wO*MUQUO7+%wOOQQ7+)]7+)]O+@qQUO7+)]O+AwQVO7+)]OOQQANEXANEXO!0wQVOLD+tOOQRLD+tLD+tO+BOQUOLD,TO+CUQUOLD,TOOQRLD,TLD,TO!0wQVOLD,TOOQRANBVANBVOOQQAN>uAN>uO+CZQUOAN>uO+DaQUOAN>uO!MmQVOAN>uO+DfQUO<<IcOOQQ<<Lw<<LwOOQR!$( `!$( `O!0wQVO!$( oOOQR!$( o!$( oOOQQG24aG24aO+ETQUOG24aO+FZQUOG24aOOQR!)9EZ!)9EZOOQQLD){LD){O+F`QUO'#CgO(gQUO'#CgO+J]QUO'#CzO+L|QUO'#CzO!FZQUO'#CzO+MuQUO'#CzO+NYQUO'#CzO,#{QUO'#CzO,$]QUO'#CzO,$jQUO'#CzO,$uQbO,59dO,%QQbO,59dO,%]QbO,59dO,%hQbO'#CxO,%yQbO'#CxO,&[QbO'#CxO,&mQUO'#CgO,)QQUO'#CgO,)_QUO'#CgO,,SQUO'#CgO,/VQUO'#CgO,/gQUO'#CgO,3`QUO'#CgO,3gQUO'#CgO,4gQUO'#CgO,6pQUO,5:xO#?yQUO,5:xO#?yQUO,5:xO#=iQUO'#LbO,7^QbO'#CxO,7iQbO'#CxO,7tQbO'#CxO,8PQbO'#CxO#7SQUO'#E^O,8[QUO'#E^O,9iQUO'#HgO,:ZQbO'#CxO,:fQbO'#CxO,:qQUO'#CwO,:vQUO'#CwO,:{QUO'#CpO,;ZQbO,59dO,;fQbO,59dO,;qQbO,59dO,;|QbO,59dO,<XQbO,59dO,<dQbO,59dO,<oQbO,59dO,6pQUO1G0dO,<zQUO1G0dO#?yQUO1G0dO,8[QUO1G0dO,?XQUO'#K`O,?iQUO'#CzO,?wQbO,59dO,6pQUO7+&OO,<zQUO7+&OO,@SQUO'#EwO,@uQUO'#EzO,AfQUO'#E^O,AkQUO'#GcO,ApQUO'#CwO,AuQUO'#CxO,AzQUO'#CxO,BPQUO'#CwO,BUQUO'#GcO,BZQUO'#K`O,BwQUO'#K`O,CRQUO'#CwO,C^QUO'#CwO,CiQUO'#CwO,<zQUO,5:xO,8[QUO,5:xO,8[QUO,5:xO,CtQUO'#K`O,DXQbO'#CxO,DdQUO'#CsO,DiQUO'#E^\",\n stateData: \",E_~O(oOSSOSRPQVPQ'ePQ'gPQ'hPQ'iPQ'jPQ'kPQ'lPQ'mPQ(pPQ~O*aOS~OPmO]eOb!]Oe!POmTOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!TxO!VfO!X!XO!Y!WO!i!YO!opO!r!`O!s!aO!t!aO!u!bO!v!aO!x!cO!{!dO#V#QO#a#VO#b#TO#i#OO#p!xO#t!fO#v!eO$R!gO$T!hO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO${!tO$}!uO%U!yO%_#ZO%`#[O%a#YO%c!zO%e#UO%g!{O%l#SO%o!|O%v!}O%|#PO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(wRO)VYO)YaO)[|O)]{O)_iO)`!ZO)bXO)ncO)odO~OR#cOV#^O'e#_O'g#`O'h#aO'i#aO'j#bO'k#bO'l#`O'm#`O(p#]O~OX#eO(t#gO(v#eO~O]ZX]jXejXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!TjX!VZX!VjX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!eZX!fZX!gZX!hZX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(wjX(zZX({$]X(|ZX(}ZX)YZX)YjX)ZZX)[ZX)[jX)]ZX)]jX)^ZX)_ZX)`ZX)pZX~O)_jX!UZX~P(gO]$PO!V#nO!X#}O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO(|#mO(}#mO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_#lO)`$OO~Oe$TO%Y$UO'[$VO'_$WO)O$QO~Om$XO~O!T$YO])SXe)SXs)SXt)SXu)SXv)SXw)SXx)SXy)SXz)SX!O)SX!V)SX!r)SX!s)SX!t)SX!u)SX!v)SX!x)SX!{)SX%v)SX&r)SX&s)SX(w)SX)Y)SX)[)SX)])SX)_)SX~Om$XO~P.^Om$XO!g$[O)p$[O~OX$]O)c$]O~O!R$^O)U)WP)`)WP~OPmO]$gOb!]Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!TxO!V$hO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO)VYO)Y$mO)]$mO)_iO)`!ZO)bXO)ncO)odO~Om$aO#t$nO(wRO~P0}O](^Xb'zXe(^Xm'zXm(^Xs'zXs(^Xt'zXt(^Xu'zXu(^Xv'zXv(^Xw'zXw(^Xx'zXx(^Xy'zXy(^Xz'zXz(^X|'zX!O'zX!V(^X!o(^X!r'zX!r(^X!s'zX!s(^X!t'zX!t(^X!u'zX!u(^X!v'zX!v(^X!x'zX!x(^X!{(^X#a'zX#b'zX%e'zX%l'zX%o(^X%v(^X&m'zX&r'zX&s'zX(w'zX(w(^X)Y(^X)[(^X)](^X~Ob!TOm$qOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(w$pO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO&r#WO&s$yO])gXe)gXm)gX!V)gX!{)gX%v)gX(w)gX)Y)gX)[)gX)])gX~O)_$xO~P:qOPmO]eOe!POs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!VfO!X!XO!Y!WO!i!YO!{!dO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO)YaO)[|O)]{O)`!ZO)bXO)ncO)odO~Ob%SOm;RO!|%TO(w$zO~P<oO)Y%UO~Ob!]Om$aO|#RO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(w;UO~P<oOPmO]$gOb%SOm;RO!V$hO!W%aO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)Y$mO)]%_O)`!ZO)bXO)ncO)odO)p%^O~O]%jOe!POm%dO!V%mO!{!dO%v$oO(w;VO)Y%fO)[%kO)]%kO~O({%oO~O)_#lO~O(w%pO](yX!V(yX!X(yX!Y(yX^(yX)_(yX)`(yX!g(yX)p(yX[(yX!W(yX({(yX!U(yXQ(yX!d(yX~OP%qO(uQO~PCTO]%jOe!POs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V%mO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO!{!dO%o!|O%v!}O)Y;gO)[|O)]|O~Om%tO!o%yO(w$zO~PEbO!TxO#v!eO({%{O)p&OO])kX!V)kX~O]%jOe!POm%tO!V%mO!{!dO%v!}O(w$zO)Y;gO)[|O)]|O~O!TxO#v!eO)_&RO)p&SO~O!U&VO~P!QO]&[O!TxO!V&YO)Y&XO)[&]O)]&]O~Oq&WO~PHuO]&eO!V&dO~OPmO]eOe!PO!VfO!X!XO!Y!WO!i!YO!{!dO#V#QO%_#ZO%`#[O%a#YO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO)YaO)[|O)]{O)`!ZO)bXO)ncO)odO~Ob%SOm;RO%v$oO(w$zO~PIjO]%jOe!POm;cO!V%mO!{!dO%v$oO(w$zO)Y;gO)[|O)]|O~Oq&hO](yX])kX!V(yX!V)kX!X(yX!Y(yX^(yX)_(yX)`(yX[(yX[)kX!U(yX~O!g$[O)p$[O~PL`O!g(yX)p(yX~PL`O](yX!V(yX!X(yX!Y(yX^(yX)_(yX)`(yX!g(yX)p(yX[(yX!U(yX~O])kX!V)kX[)kX~PNnOb&jO&m!RO]&lXe&lXm&lXs&lXt&lXu&lXv&lXw&lXx&lXy&lXz&lX!O&lX!V&lX!r&lX!s&lX!t&lX!u&lX!v&lX!x&lX!{&lX%v&lX&r&lX&s&lX(w&lX)Y&lX)[&lX)]&lX)_&lX[&lX!T&lX!X&lX!Y&lXY(yX)Z(yX)[(yX)](yX)^(yX)_(yX)`(yX[(yX!W(yX({(yX!U(yXQ(yX!d(yX~OPmO]$gOb%SOm;RO!V$hO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)Y$mO)]$mO)`!ZO)bXO)ncO)odO~O])SXe)SXm)SXs)SXt)SXu)SXv)SXw)SXx)SXy)SXz)SX!O)SX!V)SX!r)SX!s)SX!t)SX!u)SX!v)SX!x)SX!{)SX%v)SX&r)SX&s)SX(w)SX)Y)SX)[)SX)])SX)_)SX[)SXQ)SX!d)SX!h)SX)`)SX)p)SX~O]$PO~P!*tO]&nO~O])hXb)hXe)hXm)hXs)hXt)hXu)hXv)hXw)hXx)hXy)hXz)hX|)hX!O)hX!V)hX!o)hX!r)hX!s)hX!t)hX!u)hX!v)hX!x)hX!{)hX#a)hX#b)hX%e)hX%l)hX%o)hX%v)hX&m)hX&r)hX&s)hX(w)hX)Y)hX)[)hX)])hX~O(uQO~P!-^O%U&pO~P!-^O]&qO~O]$PO~O!TxO~O$W&yO(w%pO({&xO~O]&zOx&|O~O]&zO~OPmO]$gOb%SOm;RO!TxO!V$hO!X!XO!Y!WO!i!YO#V#QO#p!xO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w:tO)VYO)Y$mO)]$mO)_iO)`!ZO)bXO)ncO)odO~O]'RO~O!T$YO)_'TO~P!(}O)_'VO~O)_'WO~O(w'XO~O)_'[O~P!(}Om;eO%U'`O%e'`O(w;WO~Ob!TOm$qOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(w$pO~O({'dO~O)_'fO~P!(}O!TxO(w%pO)p'hO~O(w%pO~O]'kO~O]'lOe%nXm%nX!V%nX!{%nX%v%nX(w%nX)Y%nX)[%nX)]%nX~O]'pO!V'qO!X'nO!g'nO%Z'nO%['nO%]'nO%^'nO%_'rO%`'rO%a'nO(}'oO)p'nO*O'sO~P8}O]%jOb!TOe!POs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!V%mO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO!{!dO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO)Y;gO)[|O)]|O~Om;fOq&WO%v$oO(w;XO~P!8mO(w%pO({'xO)_'yO~O]&eO!T'{O~Om$qO!O!_O!T(SO!l(XO(w$pO({(RO)VYO~Om$qO|(`O!T(]O#b(`O(w$pO~Ob!TOm$qO|#RO#a#VO#b#TO%e#UO%l#SO&m!RO&r#WO&s!TO(w$pO~O](bO~OPmOb%SOm;RO!V$hO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)Y$mO)]$mO)bXO)ncO)odO~O](dO)`(eO~P!=XO]$PO~P!<_OPmO]$gOb%SOm;RO!V(kO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)Y$mO)]$mO)`!ZO)bXO)ncO)odO~O(q(lO(r(lO(s(nO~OY(oO(uQO(w%pO~O'f(rO~OS(vO(p#]O*^(uO~O]$PO(o(yO~Q'nXX#eO(t({O(v#eO~Oe)VOm)QO&r#WO(w)PO~O!Y'Sa!['Sa!^'Sa!_'Sa!a'Sa!b'Sa!e'Sa!f'Sa!h'Sa(z'Sa)Y'Sa)Z'Sa)['Sa)]'Sa)^'Sa)_'Sa)`'Sa!g'Sa)p'Sa['Sa!W'Sa({'Sa!U'SaQ'Sa!d'Sa~OPmOb%SOm;RO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)bXO)ncO)odO]'Sa!V'Sa!X'Sa(|'Sa(}'Sa~P!BmO!T$YO[(xP~P!(}O]oX]%WXeoXmnXqoXq%WXsoXtoXuoXvoXwoXxoXyoXzoX!OoX!ToX!VoX!V%WX!X%WX!Y%WX![%WX!^%WX!_%WX!a%WX!b%WX!e%WX!f%WX!gnX!h%WX!roX!soX!toX!uoX!voX!xoX!{oX%voX&roX&soX(woX(z%WX(|%WX(}%WX)YoX)Y%WX)Z%WX)[oX)[%WX)]oX)]%WX)^%WX)_%WX)`%WX)pnX[%WX~O)_oX[oX!U%WX~P!FZO])iO!V)jO!X)gO!g)gO%Z)gO%[)gO%])gO%^)gO%_)kO%`)kO%a)gO(})hO)p)gO*O)lO~P8}OPmO]$gOb%SOm;RO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)Y$mO)]$mO)`!ZO)bXO)ncO)odO~O!V)qO~P!KVOe)tO%Y)uO)O$QO~O!T$YO!V)wO(|)xO!U)xP~P!KVO!T$YO~P!(}O)a*PO~Om*QO]!QX!h!QX)U!QX)`!QX~O]*SO!h*TO)U)WX)`)WX~O)U*WO)`*XO~Oe$TO%Y*YO'[$VO'_$WO)O$QO~Om*ZO~Om*ZO[)SX~P.^Om*ZO!g$[O)p$[O~O)_*[O~P:qOPmO]$gOb!]Om$aOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!V$hO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w;UO)Y$mO)]$mO)`!ZO)bXO)ncO)odO~Oq&hO~P!&}Oq&hO!W(yX({(yXQ(yX!d(yX~PNnO]'pO!V'qO!X'nO!g'nO%Z'nO%['nO%]'nO%^'nO%_'rO%`'rO%a'nO(}'oO)p'nO*O'sO~O]jXejXmhXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!VjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(wjX)YjX)[jX)]jX!TjX!hjX)`jX)pjX[jX~O!ljX({jX)_jX!XjX!YjX![jX!^jX!_jX!ajX!bjX!ejX!fjX(zjX(|jX(}jX)ZjX)^jX!gjX!WjXQjX!djX!UjX#vjX#TjX#VjX#pjXbjX|jX!ojX#ajX#bjX#ijX#tjX${jX%cjX%ejX%kjX%ljX%ojX&mjX)VjX~P#&XO)O*`O~Om*aO~O])SXe)SXs)SXt)SXu)SXv)SXw)SXx)SXy)SXz)SX!O)SX!V)SX!r)SX!s)SX!t)SX!u)SX!v)SX!x)SX!{)SX%v)SX&r)SX&s)SX(w)SX)Y)SX)[)SX)])SX)_)SX!T)SX!X)SX!Y)SX![)SX!^)SX!_)SX!a)SX!b)SX!e)SX!f)SX!h)SX(z)SX(|)SX(})SX)Z)SX)^)SX)`)SX!g)SX)p)SX[)SX!W)SXQ)SX!d)SX({)SX!U)SX#v)SX~Om*aO~P#+aOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO])gae)gam)ga!V)ga!{)ga%v)ga(w)ga)Y)ga)[)ga)])gaQ)ga!d)ga!h)ga)`)ga)p)ga[)ga!T)ga({)ga)_)ga~O&r#WO&s$yO~P#/POq&hOm)SX~P#+aO&r)ga~P#/PO]ZXmhXqZXqjX!TjX!VZX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!eZX!fZX!gZX!hZX(zZX(|ZX(}ZX)YZX)ZZX)[ZX)]ZX)^ZX)_ZX)`ZX)pZX[ZX~O!WZX({ZX!UZXQZX!dZX~P#1xO]$PO!V#nO!X#}O(|#mO(}#mO~O!Y&xa![&xa!^&xa!_&xa!a&xa!b&xa!e&xa!f&xa!g&xa!h&xa(z&xa)Y&xa)Z&xa)[&xa)]&xa)^&xa)_&xa)`&xa)p&xa[&xa!W&xa({&xa!U&xaQ&xa!d&xa~P#4YOm;oO!T$YO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O~PKnOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!|%TO~PKnO]&eO!V&dO[#Qa!T#Qa!h#Qa#v#Qa)_#Qa)p#QaQ#Qa!d#Qa({#Qa~Oq&hO!T$YO~O[*hO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[*hO~O[*jO]&eO!V&dO~O]&[Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V&YO&r#WO&s$yO)Y&XO)[&]O)]&]O~O[rXQrX!drX!hrX)`rX)_rX~P#:ZO[*mO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h*nO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!W)qX~P#4YO!W*pO!h*qO~O!W*pO!h*qO~P!(}O!W*pO~Oq&hO!g$[O!h*rO)p$[O](yX!V(yX!W(yX!W*UX!X(yX!Y(yX^(yX)`(yX~O!h(yX~P#=iO!W*tO~Oe$TO%Y*YO)O:yO~Om;rO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!|%TO~PBXO]*{O!T*vO!V&dO!h*yO#v!eO)p*wO)_)wX~O!h*yO)_)wX~O)_*|O~Oq&hO])kX!T)kX!V)kX!h)kX#v)kX)_)kX)p)kX[)kXQ)kX!d)kX({)kX~Oq&hO~OP%qO(uQO]%ha!V%ha!X%ha!Y%ha![%ha!^%ha!_%ha!a%ha!b%ha!e%ha!f%ha!h%ha(w%ha(z%ha(|%ha(}%ha)Y%ha)Z%ha)[%ha)]%ha)^%ha)_%ha)`%ha!g%ha)p%ha[%ha!W%ha({%ha!U%haQ%ha!d%ha~Oe$TO%Y$UO)O:vO~Om;OO~O!TxO#v!eO)p&OO~Om<cO&r#WO(w;nO~O$Z+YO%`+ZO~O!TxO#v!eO)_+[O)p+]O~OPmO]$gOb%SOm;RO!V$hO!X!XO!Y!WO!i!YO#V#QO$Z+YO%_#ZO%`+_O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)Y$mO)]$mO)`!ZO)bXO)ncO)odO~O!U+`O~P!QOb!TOm$qOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#a+fO#b+gO#i+hO%e#UO%l#SO&m!RO&r#WO&s!TO(w$pO)VYO~OQ)rP!d)rP~P#GuO]&[Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V&YO)Y&XO)[&]O)]&]O~O[#kX!T#kX#v#kX)_#kX)p#kXQ#kX!d#kX!h#kX)`#kX!x#kX({#kX~P#IyOPmO]$gOb%SOm;ROs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V$hO!W+nO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)Y+oO)]$mO)`!ZO)bXO)ncO)odO~O]&eO!V+pO~O]&[O!V&YO)VYO)Y&XO)[&]O)]&]O)`+sO[)jP~P8}O]&[O!V&YO)Y&XO)[&]O)]&]O~O[#nX!T#nX#v#nX)_#nX)p#nXQ#nX!d#nX!h#nX)`#nX!x#nX({#nX~P#NsO!TxO])tX!V)tX~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O#T+{O#p+|O(}+yO)[+wO)]+wO~O]#jX!T#jX!V#jX[#jX#v#jX)_#jX)p#jXQ#jX!d#jX!h#jX)`#jX!x#jX({#jX~P$!WO#V,OO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!l,PO#T+{O#V,OO#p+|O(}+yO)[,PO)],PO])lP!T)lP!V)lP#v)lP({)lP)p)lP[)lP!h)lP)_)lP~O!x)lPQ)lP!d)lP~P$$TOPmO]$gOb%SOm;ROs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V$hO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)]$mO)`!ZO)bXO)ncO)odO~O!W,VO)Y,WO~P$&OO)VYO)`+sO[)jP~P8}O]&eO!V&dO[&Za!T&Za!h&Za#v&Za)_&Za)p&ZaQ&Za!d&Za({&Za~OPmO]$gOb!]Om;TOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!V$hO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w;YO)Y$mO)]$mO)`!ZO)bXO)ncO)odO~OQ)PP!d)PP~P$)hO]$PO!V#nO(|#mO(}#mO!X'Pa!Y'Pa!['Pa!^'Pa!_'Pa!a'Pa!b'Pa!e'Pa!f'Pa!h'Pa(z'Pa)Y'Pa)Z'Pa)['Pa)]'Pa)^'Pa)_'Pa)`'Pa!g'Pa)p'Pa['Pa!W'Pa({'Pa!U'PaQ'Pa!d'Pa~O]$PO!V#nO!X#}O(|#mO(}#mO~P!BmO!TxO#t!fO)VYO~P8}O!TxO(w%pO)p,aO~O#x,fO~OQ)gX!d)gX!h)gX)`)gX)p)gX[)gX!T)gX({)gX)_)gX~P:qO({,jO(|,hO)V$UX)_$UX~O(w,kO~O)VYO)_,nO~OPmO]$gOb!]Om;SOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!V$hO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO)VYO)Y$mO)]$mO)_iO)`!ZO)bXO)ncO)odO~O(w;ZO~P$0yOPmO]$gOb%SOm;RO!TxO!V$hO!X!XO!Y!WO!i!YO#V#QO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w:tO)VYO)Y$mO)]$mO)_iO)`!ZO)bXO)ncO)odO~O$h,xO~OPmO]$gOb!]Om;SOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!V$hO!X!XO!Y!WO!i!YO!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO#V#QO#a#VO#b#TO$}!uO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO)VYO)Y$mO)]$mO)`!ZO)bXO)ncO)odO~O${-OO(w;UO)_,|O~P$7dO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_-QO)`$OO~P#4YO)_-QO~O)_-RO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_-SO)`$OO~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_-TO)`$OO~P#4YOq&hO)VYO)p-VO~O)_-WO~Om;eO(w;WO~O]-_O!{!dO&r#WO&s$yO(w-ZO)Y-[O~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO({-bO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!TxO$`!iO$e!jO$g!kO$h!lO$k-gO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO$}!uO(w:uOe$Xa!o$Xa!{$Xa#i$Xa#p$Xa#t$Xa#v$Xa$R$Xa$T$Xa$Y$Xa$Z$Xa${$Xa%U$Xa%c$Xa%g$Xa%o$Xa%|$Xa(l$Xa)[$Xa!U$Xa$c$Xa~P$0yO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_-hO)`$OO~P#4YOm-jO!TxO)p,aO~O)p-lO~O]&]a!X&]a!Y&]a![&]a!^&]a!_&]a!a&]a!b&]a!e&]a!f&]a!h&]a(z&]a(|&]a(}&]a)Z&]a)[&]a)]&]a)^&]a)_&]a)`&]a!g&]a)p&]a[&]a!W&]a!T&]a#v&]a({&]a!U&]aQ&]a!d&]a~O)Y-pO!V&]a~P$DpO[-pO~O!W-pO~O!V-qO)Y&]a~P$DpO])SXe)SXs)SXt)SXu)SXv)SXw)SXx)SXy)SXz)SX!O)SX!V)SX!r)SX!s)SX!t)SX!u)SX!v)SX!x)SX!{)SX%v)SX&r)SX&s)SX(w)SX)Y)SX)[)SX)])SX~Om;tO~P$G`O]&eO!V&dO)_-rO~Om;jO!o-uO#V,OO#i-zO#t!fO${-OO%c!zO%k-yO%o!|O%v!}O(w;[O)VYO~P!8mO!n.OO(w,kO~O)VYO)_.QO~OPmO]$gOb%SOm;RO!T.VO!V$hO!X!XO!Y!WO!i!YO#V.^O#a.]O%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO(}.UO)Y$mO)]$mO)_.SO)`!ZO)bXO)ncO)odO~O!U.[O~P$JpO])dXe)dXs)dXt)dXu)dXv)dXw)dXx)dXy)dXz)dX!O)dX!T)dX!V)dX!l)dX!r)dX!s)dX!t)dX!u)dX!v)dX!x)dX!{)dX%v)dX&r)dX&s)dX(w)dX({)dX)Y)dX)[)dX)])dX)_)dX[)dX!h)dX)`)dX!X)dX!Y)dX![)dX!^)dX!_)dX!a)dX!b)dX!e)dX!f)dX(z)dX(|)dX(})dX)Z)dX)^)dX!g)dX)p)dX!W)dXQ)dX!d)dX#T)dX#V)dX#p)dX#v)dXb)dX|)dX!o)dX#a)dX#b)dX#i)dX#t)dX${)dX%c)dX%e)dX%k)dX%l)dX%o)dX&m)dX)V)dX!U)dX~Om*aO~P$LzOm$qO!T(SO!l.cO(w$pO({(RO)VYO~Oq&hOm)dX~P$LzOm$qO!n.hO!o.hO(w$pO)VYO~Om;kO!U.sO!n.uO!o.tO#i-zO${!tO$}!uO%g!{O%k-yO%o!|O%v!}O(w;^O)VYO~P!8mO!T(SO!l.cO({(RO])TXe)TXm)TXs)TXt)TXu)TXv)TXw)TXx)TXy)TXz)TX!O)TX!V)TX!r)TX!s)TX!t)TX!u)TX!v)TX!x)TX!{)TX%v)TX&r)TX&s)TX(w)TX)Y)TX)[)TX)])TX~O)_)TX[)TX!X)TX!Y)TX![)TX!^)TX!_)TX!a)TX!b)TX!e)TX!f)TX!h)TX(z)TX(|)TX(})TX)Z)TX)^)TX)`)TX!g)TX)p)TX!W)TXQ)TX!d)TX!U)TX#v)TX~P%%sO!T(SO~O!T(SO({(RO~O(w%pO!U*WP~O!T(]O({.zO]&kae&kam&kas&kat&kau&kav&kaw&kax&kay&kaz&ka!O&ka!V&ka!r&ka!s&ka!t&ka!u&ka!v&ka!x&ka!{&ka%v&ka&r&ka&s&ka(w&ka)Y&ka)[&ka)]&ka)_&ka[&ka!X&ka!Y&ka![&ka!^&ka!_&ka!a&ka!b&ka!e&ka!f&ka!h&ka(z&ka(|&ka(}&ka)Z&ka)^&ka)`&ka!g&ka)p&ka!W&kaQ&ka!d&ka!U&ka#v&ka~Om$qO!T(]O(w$pO~O&r#WO&s$yO]&pae&pam&pas&pat&pau&pav&paw&pax&pay&paz&pa!O&pa!V&pa!r&pa!s&pa!t&pa!u&pa!v&pa!x&pa!{&pa%v&pa(w&pa)Y&pa)[&pa)]&pa)_&pa[&pa!T&pa!X&pa!Y&pa![&pa!^&pa!_&pa!a&pa!b&pa!e&pa!f&pa!h&pa(z&pa(|&pa(}&pa)Z&pa)^&pa)`&pa!g&pa)p&pa!W&paQ&pa!d&pa({&pa!U&pa#v&pa~O&s/PO~P!(}O!Y#sO![#tO!f#|O)Y#oO!^'Ua!_'Ua!a'Ua!b'Ua!e'Ua!h'Ua(z'Ua)Z'Ua)['Ua)]'Ua)^'Ua)_'Ua)`'Ua!g'Ua)p'Ua['Ua!W'Ua({'Ua!U'UaQ'Ua!d'Ua~P#4YO!V'dX!X'dX!Y'dX!['dX!^'dX!_'dX!a'dX!b'dX!e'dX!f'dX!h'dX(z'dX(|'dX(}'dX)Y'dX)Z'dX)['dX)]'dX)^'dX)`'dX['dX~O]/RO)_'dX!g'dX)p'dX!W'dX({'dX!U'dXQ'dX!d'dX~P%3WO!Y#sO![#tO!f#|O)Y#oO!^'Wa!_'Wa!a'Wa!b'Wa!e'Wa!h'Wa(z'Wa)Z'Wa)['Wa)]'Wa)^'Wa)_'Wa)`'Wa!g'Wa)p'Wa['Wa!W'Wa({'Wa!U'WaQ'Wa!d'Wa~P#4YO]$PO!T$YO!V/SO&r#WO&s$yO~O!X'Za!Y'Za!['Za!^'Za!_'Za!a'Za!b'Za!e'Za!f'Za!h'Za(z'Za(|'Za(}'Za)Y'Za)Z'Za)['Za)]'Za)^'Za)_'Za)`'Za!g'Za)p'Za['Za!W'Za({'Za!U'ZaQ'Za!d'Za~P%6}O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!h'^a)_'^a!g'^a)p'^a['^a!W'^a({'^a!U'^aQ'^a!d'^a~P#4YOPmO]$gOb%SOm;RO!V$hO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)Y$mO)]%_O)`!ZO)bXO)ncO)odO)p%^O~O!W/VO~P%:}O(q(lO(r(lO(s/XO~OS(vO]$PO(p#]O*^(uO~O]/[O'f/]O*^/YO~OS/aO(p#]O*^/`O~O]$PO~Q'na!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO({/cO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO)_#Zi[#Zi~P#4YO]dXmhXqdXqjX!VdX!XdX!YdX![dX!^dX!_dX!adX!bdX!edX!fdX!gdX!hdX(zdX(|dX(}dX)YdX)ZdX)[dX)]dX)^dX)_dX)`dX)pdX[dX!WdX({dX!TdX#vdX!UdXQdX!ddX~Oe/eO%Y*YO)O/dO~Om/fO~Om/gO~Oq&hO]ci!Vci!Xci!Yci![ci!^ci!_ci!aci!bci!eci!fci!gci!hci(zci(|ci(}ci)Yci)Zci)[ci)]ci)^ci)_ci)`ci)pci[ci!Wci({ci!UciQci!dci~O!W/iO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO![#tO)Y#oO!Y&zi!^&zi!_&zi!a&zi!b&zi!e&zi!f&zi!h&zi(z&zi)Z&zi)[&zi)]&zi)^&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y&zi![&zi!^&zi!_&zi!a&zi!b&zi!e&zi!f&zi!h&zi(z&zi)Y&zi)Z&zi)[&zi)]&zi)^&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O)Y#oO)]#rO)^#jO!h&zi(z&zi)Z&zi)[&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O)Y#oO)[#pO)]#rO)^#jO!h&zi(z&zi)Z&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO!_#xO!a#zO!b#{O!e#{O!f#|O)Y#oO)]#rO)^#jO!^&zi!h&zi(z&zi)Z&zi)[&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO!a#zO!b#{O!e#{O!f#|O)Y#oO)]#rO)^#jO!^&zi!_&zi!h&zi(z&zi)Z&zi)[&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO!a#zO!b#{O!e#{O!f#|O)Y#oO)^#jO!^&zi!_&zi!h&zi(z&zi)Z&zi)[&zi)]&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO!b#{O!e#{O!f#|O)Y#oO)^#jO!^&zi!_&zi!a&zi!h&zi(z&zi)Z&zi)[&zi)]&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO!f#|O)Y#oO!^&zi!_&zi!a&zi!b&zi!e&zi!h&zi(z&zi)Z&zi)[&zi)]&zi)^&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO)Y#oO!^&zi!_&zi!a&zi!b&zi!e&zi!f&zi!h&zi(z&zi)Z&zi)[&zi)]&zi)^&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O)Y#oO)Z#qO)[#pO)]#rO)^#jO!h&zi(z&zi)_&zi)`&zi!g&zi)p&zi[&zi!W&zi({&zi!U&ziQ&zi!d&zi~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h/jO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO[(xX~P#4YO!h/jO[(xX~O[/lO~O]%Xaq%Xa!X%Xa!Y%Xa![%Xa!^%Xa!_%Xa!a%Xa!b%Xa!e%Xa!f%Xa!h%Xa(z%Xa(|%Xa(}%Xa)Z%Xa)[%Xa)]%Xa)^%Xa)_%Xa)`%Xa!g%Xa)p%Xa[%Xa!W%Xa!T%Xa#v%Xa({%Xa!U%XaQ%Xa!d%Xa~O)Y/mO!V%Xa~P&,zO[/mO~O!W/mO~O!V/nO)Y%Xa~P&,zO!X'Zi!Y'Zi!['Zi!^'Zi!_'Zi!a'Zi!b'Zi!e'Zi!f'Zi!h'Zi(z'Zi(|'Zi(}'Zi)Y'Zi)Z'Zi)['Zi)]'Zi)^'Zi)_'Zi)`'Zi!g'Zi)p'Zi['Zi!W'Zi({'Zi!U'ZiQ'Zi!d'Zi~P%6}O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!h'^i)_'^i!g'^i)p'^i['^i!W'^i({'^i!U'^iQ'^i!d'^i~P#4YO!W/sO~P%:}O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h/uO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!U)xX~P#4YO(w/xO~O!V/zO(|)xO)p/|O~O!h/uO!U)xX~O!U/}O~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!h`i(z`i)_`i!g`i)p`i[`i!W`i({`i!U`iQ`i!d`i~P#4YO!R0OO~Om*QO]!Qa!h!Qa)U!Qa)`!Qa~OP0WO]0VOm0WO!R0WO!T0TO!V0UO!X0WO!Y0WO![0WO!^0WO!_0WO!a0WO!b0WO!e0WO!f0WO!g0WO!h0WO!i0WO(uQO({0WO(|0WO(}0WO)Y0QO)Z0RO)[0RO)]0SO)^#jO)_0WO)`0WO)bXO~O[0ZO~P&7dO!R$^O~O!h*TO)U)Wa)`)Wa~O)U0_O~O])iO!V)jO!X)gO!g)gO%Z)gO%[)gO%])gO%^)gO%_)kO%`)kO%a)gO(})hO)p)gO*O)lO~Oe)tO%Y*YO)O$QO~O)_0aO~O]oXeoXmnXqoXsoXtoXuoXvoXwoXxoXyoXzoX!OoX!VoX!roX!soX!toX!uoX!voX!xoX!{oX%voX&roX&soX(woX)YoX)[oX)]oX!ToX!hoX)`oX[oXQoX!doX~O!loX({oX)_oX!XoX!YoX![oX!^oX!_oX!aoX!boX!eoX!foX(zoX(|oX(}oX)ZoX)^oX!goX)poX!WoX!UoX#voX#ToX#VoX#poXboX|oX!ooX#aoX#boX#ioX#toX${oX%coX%eoX%koX%loX%ooX&moX)VoX~P&;`Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!O!_O!r!aO!s!aO!t!aO!u!aO!v!aO!x!cO~O])gie)gim)gi!V)gi!{)gi%v)gi(w)gi)Y)gi)[)gi)])giQ)gi!d)gi!h)gi)`)gi)p)gi[)gi!T)gi&r)gi({)gi)_)gi~P&@^O]&eO!V&dO[#Qi!T#Qi!h#Qi#v#Qi)_#Qi)p#QiQ#Qi!d#Qi({#Qi~O[raQra!dra!hra)`ra)_ra~P#:ZO[raQra!dra!hra)`ra)_ra~P#IyO]&eO!V+pO[raQra!dra!hra)`ra)_ra~O!h*nO!W)qa~O!h*rO!W*Ua~OPmOb!]Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O|#RO!O!_O!X!XO!Y!WO!i!YO!s!aO!t!aO!v!aO!x!cO#V#QO#a#VO#b#TO#v!eO$Y!vO$Z!wO$`!iO$e!jO$g!kO$h!lO$k!mO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO%_#ZO%`#[O%a#YO%e#UO%l#SO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO)VYO)_iO)`!ZO)bXO)ncO)odO~O]eOe!POmTO!T*vO!U&VO!V0oO!opO!r!`O!u!bO!{!dO#i#OO#p!xO#t!fO$R!gO$T!hO${!tO$}!uO%U!yO%c!zO%g!{O%o!|O%v!}O%|#PO(wRO(|)xO)YaO)[|O)]{O~P&E`O!h*yO)_)wa~OPmO]$gOb!]Om;TO|#RO!T$YO!V$hO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w;]O)VYO)Y$mO)]$mO)`0uO)bXO)ncO)odO[(xP[)jP~P&@^O!h*rO!W*UX~O]$PO!T$YO~O!h0zO!T*QX#v*QX)p*QX~O)_0|O~O)_0}O~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_1PO)`$OO~P#4YO)_0}O~P!?ZO]1ZOe!POm%dO!V1XO!{!dO%v$oO(w$zO)Y1RO)`1UO~O)[1VO)]1VO)p1SOQ#PX!d#PX!h#PX[#PX~P' }O!h1[OQ)rX!d)rX~OQ1^O!d1^O~O)`1aO)p1`OQ#`X!d#`X!h#`X~P!<_O)`1aO)p1`OQ#`X!d#`X!h#`X~P!;eOq&WO~O[#ka!T#ka#v#ka)_#ka)p#kaQ#ka!d#ka!h#ka)`#ka!x#ka({#ka~P#IyO]&eO!V+pO[#ka!T#ka#v#ka)_#ka)p#kaQ#ka!d#ka!h#ka)`#ka!x#ka({#ka~O!W1fO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!W1fO)Y1hO~P$&OO!W1fO~P!(}O]#ja!T#ja!V#ja[#ja#v#ja)_#ja)p#jaQ#ja!d#ja!h#ja)`#ja!x#ja({#ja~P$!WO[1lO]&eO!V+pO~O!h1mO[)jX~O[1oO~O]&eO!V+pO[#na!T#na#v#na)_#na)p#naQ#na!d#na!h#na)`#na!x#na({#na~O]1sOs#SXt#SXu#SXv#SXw#SXx#SXy#SXz#SX!T#SX!V#SX#T#SX#p#SX(}#SX)[#SX)]#SX!l#SX!x#SX#V#SX#v#SX({#SX)p#SX[#SX!h#SX)_#SXQ#SX!d#SX)`#SX~O]1tO~O]1wOm$qO!V$hO#V#QO(w$pO)ncO)odO~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!l,PO#T+{O#V,OO#p+|O(}+yO)[,PO)],PO~O])lX!T)lX!V)lX!x)lX#v)lX({)lX)p)lX[)lX!h)lX)_)lXQ)lX!d)lX~P',hO!x!cO]#Ri!T#Ri!V#Ri#v#Ri({#Ri)p#Ri[#Ri!h#Ri)_#RiQ#Ri!d#Ri~O!W2PO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!W2PO)Y2RO~P$&OO!W2PO~P!(}O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OOQ*XX!d*XX!h*XX~P#4YO)`2SOQ)QX!d)QX!h)QX~O!h2TOQ)PX!d)PX~OQ2VO!d2VO~O[2WO~O#t$nO)VYO~P8}Om-jO!TxO)p2[O~O[2]O~O#x,fOP#ui]#uib#uie#uim#uis#uit#uiu#uiv#uiw#uix#uiy#uiz#ui|#ui!O#ui!T#ui!V#ui!X#ui!Y#ui!i#ui!o#ui!r#ui!s#ui!t#ui!u#ui!v#ui!x#ui!{#ui#V#ui#a#ui#b#ui#i#ui#p#ui#t#ui#v#ui$R#ui$T#ui$Y#ui$Z#ui$`#ui$e#ui$g#ui$h#ui$k#ui$m#ui$o#ui$q#ui$s#ui$u#ui$w#ui${#ui$}#ui%U#ui%_#ui%`#ui%a#ui%c#ui%e#ui%g#ui%l#ui%o#ui%v#ui%|#ui&m#ui&r#ui&s#ui'Q#ui'R#ui'V#ui'Y#ui'a#ui'b#ui(l#ui(u#ui(w#ui)V#ui)Y#ui)[#ui)]#ui)_#ui)`#ui)b#ui)n#ui)o#ui!U#ui$c#ui!n#ui%k#ui~O]&eO~O]&eO!TxO!V&dO#v!eO~O({2bO(|,hO)V$Ua)_$Ua~O)VYO)_2dO~O[2eO~P,`O[2eO)_#lO~O[2eO~O$c2jOP$_i]$_ib$_ie$_im$_is$_it$_iu$_iv$_iw$_ix$_iy$_iz$_i|$_i!O$_i!T$_i!V$_i!X$_i!Y$_i!i$_i!o$_i!r$_i!s$_i!t$_i!u$_i!v$_i!x$_i!{$_i#V$_i#a$_i#b$_i#i$_i#p$_i#t$_i#v$_i$R$_i$T$_i$Y$_i$Z$_i$`$_i$e$_i$g$_i$h$_i$k$_i$m$_i$o$_i$q$_i$s$_i$u$_i$w$_i${$_i$}$_i%U$_i%_$_i%`$_i%a$_i%c$_i%e$_i%g$_i%l$_i%o$_i%v$_i%|$_i&m$_i&r$_i&s$_i'Q$_i'R$_i'V$_i'Y$_i'a$_i'b$_i(l$_i(u$_i(w$_i)V$_i)Y$_i)[$_i)]$_i)_$_i)`$_i)b$_i)n$_i)o$_i!U$_i~O]1wO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_2mO)`$OO~P#4YOPmO]$gOb!]Om;SO|#RO!V$hO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w;UO)Y$mO)]$mO)_2pO)`!ZO)bXO)ncO)odO~P&@^O)_2mO~O(w-ZO~O)VYO)p2sO~O)_2uO~O]-_Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!{!dO!|%TO(w-ZO)Y-[O~O)Y2zO~O]&eO!V2|O!h2}O)_){X~O]-_O!{!dO(w-ZO)Y-[O~O)_3QO~O!TxO$`!iO$e!jO$g!kO$h!lO$k-gO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO$}!uO(w:uOe$Xi!o$Xi!{$Xi#i$Xi#p$Xi#t$Xi#v$Xi$R$Xi$T$Xi$Y$Xi$Z$Xi${$Xi%U$Xi%c$Xi%g$Xi%o$Xi%|$Xi(l$Xi)[$Xi!U$Xi$c$Xi~P$0yOm;SO(w:uO~P0}O]3UO~O)_2ZO~O!u3WO(w%pO~O[3ZO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h3[O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[3]O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO]&eO!V+pO!T%ui#v%ui)_%ui)p%ui~O!W3^O~Om;QO)_)SX~P$G`Ob!TOm$qO|3dO#a#VO#b3cO#t!fO%e#UO%l3eO&m!RO&r#WO&s!TO(w$pO)VYO~P&@^Om;jO!o-uO#i-zO#t!fO${-OO%c!zO%k-yO%o!|O%v!}O(w;[O)VYO~P!8mO]&eO!V&dO)_3gO~O)_3hO~O)VYO)_3hO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_3iO)`$OO~P#4YO)_3iO~O)_3lO~O!U3nO~P$JpOm$qO(w$pO~O]3pO!T'{O~P',SO!T(SO!l3sO({(RO])Tae)Tam)Tas)Tat)Tau)Tav)Taw)Tax)Tay)Taz)Ta!O)Ta!V)Ta!r)Ta!s)Ta!t)Ta!u)Ta!v)Ta!x)Ta!{)Ta%v)Ta&r)Ta&s)Ta(w)Ta)Y)Ta)[)Ta)])Ta)_)Ta[)Ta!X)Ta!Y)Ta![)Ta!^)Ta!_)Ta!a)Ta!b)Ta!e)Ta!f)Ta!h)Ta(z)Ta(|)Ta(})Ta)Z)Ta)^)Ta)`)Ta!g)Ta)p)Ta!W)TaQ)Ta!d)Ta!U)Ta#v)Ta~Om$qO!n.hO!o.hO(w$pO~O!h3wO)`3yO!T)eX~O!o3{O)VYO~P8}O)_3|O~PGYO]4ROm)QO!T$YO!{!dO%v$oO&r#WO(w)PO({4VO)Y4OO)[4SO)]4SO~O)_4WO)p4YO~P('OOm;kO!U4[O!n.uO!o.tO#i-zO${!tO$}!uO%g!{O%k-yO%o!|O%v!}O(w;^O)VYO~P!8mOm;kO%v!}O(w;^O~P!8mO({4]O~Om$qO!T(SO(w$pO({(RO)VYO~O!l3sO~P()^O)p4_O!U&oX!h&oX~O!h4`O!U*WX~O!U4bO~Ob4dOm$qO&m!RO(w$pO~O!T(]O]&kie&kim&kis&kit&kiu&kiv&kiw&kix&kiy&kiz&ki!O&ki!V&ki!r&ki!s&ki!t&ki!u&ki!v&ki!x&ki!{&ki%v&ki&r&ki&s&ki(w&ki)Y&ki)[&ki)]&ki)_&ki[&ki!X&ki!Y&ki![&ki!^&ki!_&ki!a&ki!b&ki!e&ki!f&ki!h&ki(z&ki(|&ki(}&ki)Z&ki)^&ki)`&ki!g&ki)p&ki!W&kiQ&ki!d&ki!U&ki#v&ki~O({&ki~P(*nO({.zO~P(*nO[4gO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[4gO~O[4hO~O]$PO!T$YO!V'Zi!X'Zi!Y'Zi!['Zi!^'Zi!_'Zi!a'Zi!b'Zi!e'Zi!f'Zi!h'Zi(z'Zi(|'Zi(}'Zi)Y'Zi)Z'Zi)['Zi)]'Zi)^'Zi)_'Zi)`'Zi!g'Zi)p'Zi['Zi!W'Zi({'Zi!U'ZiQ'Zi!d'Zi~OPmOb%SOm;RO!X!XO!Y!WO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)`!ZO)bXO)ncO)odO]#]aq#]a!T#]a!V#]a)Y#]a)[#]a)]#]a~O(w%pO)`4mO[*`P~O*^4lO~O'f4oO*^4lO~O*^4pO~OmnXqoXq&wX~Oe4rO%Y*YO)O/dO~Oe4rO%Y*YO)O4sO~O!h/jO[(xa~O!W4wO~O]&eO!V+pO!T%uq#v%uq)_%uq)p%uq~O]$PO!T$YO!X'Zq!Y'Zq!['Zq!^'Zq!_'Zq!a'Zq!b'Zq!e'Zq!f'Zq!h'Zq(z'Zq(|'Zq(}'Zq)Y'Zq)Z'Zq)['Zq)]'Zq)^'Zq)_'Zq)`'Zq!g'Zq)p'Zq['Zq!W'Zq({'Zq!U'ZqQ'Zq!d'Zq~O!V'Zq~P(5{O!V/SO&r#WO&s$yO~P(5{O!T$YO!V)wO(|)xO!U(VX!h(VX~P!KVO!h/uO!U)xa~O!W5PO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h*nO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!U5TO~P&7dO!W5TO~P&7dO[5TO~P&7dO[5YO~P&7dO]5ZO!h'va)U'va)`'va~O!h*TO)U)Wi)`)Wi~O]&eO!V&dO[#Qq!T#Qq!h#Qq#v#Qq)_#Qq)p#QqQ#Qq!d#Qq({#Qq~O[riQri!dri!hri)`ri)_ri~P#IyO]&eO!V+pO[riQri!dri!hri)`ri)_ri~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!h'Tq)_'Tq!g'Tq)p'Tq['Tq!W'Tq({'Tq!U'TqQ'Tq!d'Tq~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!W'}a!h'}a~P#4YO!W5`O~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h5aO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_#lO)`$OO!U)xX~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!h#{i)_#{i~P#4YO]*{O!T$YO!V&dO)p*wO!h(Wa)_(Wa~O!h1mO[)jX]'dX~P%3WO)`5cO!T%qa!h%qa#v%qa)p%qa~O!h0zO!T*Qa#v*Qa)p*Qa~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_5fO)`$OO~P#4YO]1ZOe!POm;cO!V1XO!{!dO%v$oO(w$zO)Y<PO)[5hO)]5hO~OQ#Pa!d#Pa!h#Pa[#Pa~P(ETO]1ZOe!POs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V1XO!{!dO!|%TO%v$oO(w$zOQ#kX!d#kX!h#kX[#kX~Om%dO)Y1RO)[<QO)]<QO~P(FVO]&eOQ#Pa!d#Pa!h#Pa[#Pa~O!V&dO)p5lO~P(GtO(w%pOQ#dX!d#dX!h#dX[#dX~O)[<QO)]<QOQ#nX!d#nX!h#nX[#nX~P' }O!V+pO~P(GtO]1ZOb!TOe!POm;dO|#RO!V1XO!{!dO#a#VO#b#TO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO(w;XO)VYO)Y<PO)[5hO)]5hO)`+sO[)jP~P&@^O!h1[OQ)ra!d)ra~Oq&hO)p5qOQ#`am)SX!d#`a!h#`a)`)SX~P$G`O(w-ZOQ#ga!d#ga!h#ga~Oq&hO)p5qOQ#`a])dXe)dXm)dXs)dXt)dXu)dXv)dXw)dXx)dXy)dXz)dX!O)dX!T)dX!V)dX!d#`a!h#`a!l)dX!r)dX!s)dX!t)dX!u)dX!v)dX!x)dX!{)dX%v)dX&r)dX&s)dX(w)dX({)dX)Y)dX)[)dX)])dX)`)dX~O#a5tO#b5tO~O]&eO!V+pO[#ki!T#ki#v#ki)_#ki)p#kiQ#ki!d#ki!h#ki)`#ki!x#ki({#ki~O!W5vO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!W5vO~P!(}O!W5vO)Y5xO~P$&OO]#ji!T#ji!V#ji[#ji#v#ji)_#ji)p#jiQ#ji!d#ji!h#ji)`#ji!x#ji({#ji~P$!WO)VYO)`5zO~P8}O!h1mO[)ja~O&r#WO&s$yO!T#qa!x#qa#v#qa({#qa)p#qa[#qa!h#qa)_#qaQ#qa!d#qa)`#qa~P#NsO[6PO~P!(}O[)uP~P!4{O)Z6VO)[6TO]#Ua!T#Ua!V#Ua)Y#Ua)]#Uas#Uat#Uau#Uav#Uaw#Uax#Uay#Uaz#Ua!l#Ua!x#Ua#T#Ua#V#Ua#p#Ua#v#Ua({#Ua(}#Ua)p#Uab#Uae#Uam#Ua|#Ua!O#Ua!o#Ua!r#Ua!s#Ua!t#Ua!u#Ua!v#Ua!{#Ua#a#Ua#b#Ua#i#Ua#t#Ua${#Ua%c#Ua%e#Ua%k#Ua%l#Ua%o#Ua%v#Ua&m#Ua&r#Ua&s#Ua(w#Ua)V#Ua)_#Ua[#Ua!h#UaQ#Ua!d#Ua~O!x!cO]#Rq!T#Rq!V#Rq#v#Rq({#Rq)p#Rq[#Rq!h#Rq)_#RqQ#Rq!d#Rq~O!W6[O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!W6[O~P!(}O!h2TOQ)Pa!d)Pa~O)_6aO~Om-jO!TxO)p6bO~O]*{O!T$YO!V&dO!h*yO)_)wX~O)p6fO~P)+|O[6hO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[6hO~O$c6jOP$_q]$_qb$_qe$_qm$_qs$_qt$_qu$_qv$_qw$_qx$_qy$_qz$_q|$_q!O$_q!T$_q!V$_q!X$_q!Y$_q!i$_q!o$_q!r$_q!s$_q!t$_q!u$_q!v$_q!x$_q!{$_q#V$_q#a$_q#b$_q#i$_q#p$_q#t$_q#v$_q$R$_q$T$_q$Y$_q$Z$_q$`$_q$e$_q$g$_q$h$_q$k$_q$m$_q$o$_q$q$_q$s$_q$u$_q$w$_q${$_q$}$_q%U$_q%_$_q%`$_q%a$_q%c$_q%e$_q%g$_q%l$_q%o$_q%v$_q%|$_q&m$_q&r$_q&s$_q'Q$_q'R$_q'V$_q'Y$_q'a$_q'b$_q(l$_q(u$_q(w$_q)V$_q)Y$_q)[$_q)]$_q)_$_q)`$_q)b$_q)n$_q)o$_q!U$_q~O)_6kO~OPmO]$gOb!]Om;SO|#RO!V$hO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w;UO)Y$mO)]$mO)_6mO)`!ZO)bXO)ncO)odO~P&@^O({6oO)p*wO~P)+|O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_6mO)`$OO~P#4YO[6qO~P!(}O)_6uO~O)_6vO~O]-_Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!{!dO(w-ZO)Y-[O~O]&eO!V2|O!h%Oa)_%Oa[%Oa~O!W6|O)Y6}O~P$&OO!h2}O)_){a~O[7QO]&eO!V2|O~O!TxO$`!iO$e!jO$g!kO$h!lO$k-gO$m!nO$o!oO$q!pO$s!qO$u!rO$w!sO$}!uO(w:uOe$Xq!o$Xq!{$Xq#i$Xq#p$Xq#t$Xq#v$Xq$R$Xq$T$Xq$Y$Xq$Z$Xq${$Xq%U$Xq%c$Xq%g$Xq%o$Xq%|$Xq(l$Xq)[$Xq!U$Xq$c$Xq~P$0yOPmO]$gOb!]Om;SO|#RO!V$hO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w;UO)VYO)Y$mO)]$mO)_7SO)`!ZO)bXO)ncO)odO~P&@^O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_7VO)`$OO~P#4YO)_7WO~OP7XO(uQO~Om*aO)_)dX~P$G`Oq&hOm)SX)_)dX~P$G`O)_7ZO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO)_&Sa~P#4YO!U7]O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO)_7^O~OPmO]$gOb!]Om;TO|#RO!V$hO!X!XO!Y!WO!i!YO#V#QO#a#VO#b#TO%_#ZO%`#[O%a#YO%e#UO%l#SO%v$oO&m!RO&r#WO&s!TO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w;]O)VYO)Y$mO)]$mO)`0uO)bXO)ncO)odO[)jP~P&@^O!h3wO)`7bO!T)ea~O!h3wO!T)ea~O)_7gO)p7iO~P('OO)_7kO~PGYO]4ROm)QOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!{!dO!|%TO%v$oO&r#WO(w)PO)Y4OO)[4SO)]4SO~O)Y7oO~O]&eO!T*vO!V7qO!h7rO#v!eO({4VO~O)_7gO)p7tO~P)GbO]4ROm)QO!{!dO%v$oO&r#WO(w)PO)Y4OO)[4SO)]4SO~Oq&hO])iX!T)iX!V)iX!h)iX#v)iX({)iX)_)iX)p)iX[)iX~O)_7gO~O!T(SO!l7zO({(RO])Tie)Tim)Tis)Tit)Tiu)Tiv)Tiw)Tix)Tiy)Tiz)Ti!O)Ti!V)Ti!r)Ti!s)Ti!t)Ti!u)Ti!v)Ti!x)Ti!{)Ti%v)Ti&r)Ti&s)Ti(w)Ti)Y)Ti)[)Ti)])Ti)_)Ti[)Ti!X)Ti!Y)Ti![)Ti!^)Ti!_)Ti!a)Ti!b)Ti!e)Ti!f)Ti!h)Ti(z)Ti(|)Ti(})Ti)Z)Ti)^)Ti)`)Ti!g)Ti)p)Ti!W)TiQ)Ti!d)Ti!U)Ti#v)Ti~O(w%pO!U(gX!h(gX~O!h4`O!U*Wa~Oq&hO]*Vae*Vam*Vas*Vat*Vau*Vav*Vaw*Vax*Vay*Vaz*Va!O*Va!T*Va!V*Va!r*Va!s*Va!t*Va!u*Va!v*Va!x*Va!{*Va%v*Va&r*Va&s*Va(w*Va)Y*Va)[*Va)]*Va)_*Va[*Va!X*Va!Y*Va![*Va!^*Va!_*Va!a*Va!b*Va!e*Va!f*Va!h*Va(z*Va(|*Va(}*Va)Z*Va)^*Va)`*Va!g*Va)p*Va!W*VaQ*Va!d*Va({*Va!U*Va#v*Va~O!T(]O]&kqe&kqm&kqs&kqt&kqu&kqv&kqw&kqx&kqy&kqz&kq!O&kq!V&kq!r&kq!s&kq!t&kq!u&kq!v&kq!x&kq!{&kq%v&kq&r&kq&s&kq(w&kq)Y&kq)[&kq)]&kq)_&kq[&kq!X&kq!Y&kq![&kq!^&kq!_&kq!a&kq!b&kq!e&kq!f&kq!h&kq(z&kq(|&kq(}&kq)Z&kq)^&kq)`&kq!g&kq)p&kq!W&kqQ&kq!d&kq({&kq!U&kq#v&kq~OPmOb%SOm;RO!T$YO!i!YO#V#QO%_#ZO%`#[O%a#YO%v$oO'Q!WO'R!WO'V#XO'Y![O'a![O'b![O(uQO(w$zO)bXO)ncO)odO~O]*[i!V*[i!X*[i!Y*[i![*[i!^*[i!_*[i!a*[i!b*[i!e*[i!f*[i!h*[i(z*[i(|*[i(}*[i)Y*[i)Z*[i)[*[i)]*[i)^*[i)_*[i)`*[i!g*[i)p*[i[*[i!W*[i({*[i!U*[iQ*[i!d*[i~P*&qO[8PO~O!W8QO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!h'^q)_'^q!g'^q)p'^q['^q!W'^q({'^q!U'^qQ'^q!d'^q~P#4YO!h8RO[*`X~O[8TO~O*^8UO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!h_y)__y!g_y)p_y[_y!W_y({_y!U_yQ_y!d_y~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO[(ia!h(ia~P#4YO]$PO!T$YO!V'Zy!X'Zy!Y'Zy!['Zy!^'Zy!_'Zy!a'Zy!b'Zy!e'Zy!f'Zy!h'Zy(z'Zy(|'Zy(}'Zy)Y'Zy)Z'Zy)['Zy)]'Zy)^'Zy)_'Zy)`'Zy!g'Zy)p'Zy['Zy!W'Zy({'Zy!U'ZyQ'Zy!d'Zy~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!h'^y)_'^y!g'^y)p'^y['^y!W'^y({'^y!U'^yQ'^y!d'^y~P#4YO]&eO!V+pO!T%uy#v%uy)_%uy)p%uy~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!U(Va!h(Va~P#4YO!W5PO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!U#}i!h#}i~P#4YO!U8WO~P&7dO!W8WO~P&7dO[8WO~P&7dO[8YO~P&7dO]&eO!V&dO[#Qy!T#Qy!h#Qy#v#Qy)_#Qy)p#QyQ#Qy!d#Qy({#Qy~O]&eO!V+pO[rqQrq!drq!hrq)`rq)_rq~O]&eOQ#Pi!d#Pi!h#Pi[#Pi~O!V+pO~P*:TOQ#nX!d#nX!h#nX[#nX~P(ETO!V&dO~P*:TOQ(PX](PXe'rXm'rXs(PXt(PXu(PXv(PXw(PXx(PXy(PXz(PX!V(PX!d(PX!h(PX!{'rX%v'rX(w'rX)Y(PX)[(PX)](PX[(PX~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OOQ#_i!d#_i!h#_i[#_i~P#4YO&r#WO&s$yOQ#fi!d#fi!h#fi~O(w-ZO)`1aO)p1`OQ#`X!d#`X!h#`X~O!W8_O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!W8_O~P!(}O!T#qi!x#qi#v#qi({#qi)p#qi[#qi!h#qi)_#qiQ#qi!d#qi)`#qi~O]&eO!V+pO~P*@PO]&[O!V&YO&r#WO&s$yO)Y&XO)[&]O)]&]O~P*@PO[8aO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!h8bO[)uX~O[8dO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OOQ*ZX!d*ZX!h*ZX~P#4YO)`8gOQ*YX!d*YX!h*YX~O)_8iO~O[$bi!h#{a)_#{a~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_8lO)`$OO~P#4YO[8nO~P!(}O[8nO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[8nO~O]&eO!V&dO({8tO~O)_8uO~O]&eO!V2|O!h%Oi)_%Oi[%Oi~O!W8xO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!W8xO)Y8zO~P$&OO!W8xO~P!(}O]&eO!V2|O!h(Za)_(Za~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_8{O)`$OO~P#4YO)_2pO~P!(}O)_8{O~OP%qO[8|O(uQO~O[8|O~O)_8}O~P%%sO#T9QO(}.UO)_9OO~O!h3wO!T)ei~O)`9UO!T'xa!h'xa~O)_9WO)p9YO~P)GbO)_9WO~O)_9WO)p9^O~P('OOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O~P)HQO]&eO!V7qO!T!ya!h!ya#v!ya({!ya)_!ya)p!ya[!ya~O!W9eO)Y9fO~P$&OO!T$YO!h7rO({4VO)_9WO)p9^O~O!T$YO~P#EtO[9iO]&eO!V7qO~O]&eO!V7qO!T&aa!h&aa#v&aa({&aa)_&aa)p&aa[&aa~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO)_&ba~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_9WO)`$OO~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!U&oi!h&oi~P#4YO!V/SO]']i!T']i!X']i!Y']i![']i!^']i!_']i!a']i!b']i!e']i!f']i!h']i(z']i(|']i(}']i)Y']i)Z']i)[']i)]']i)^']i)_']i)`']i!g']i)p']i[']i!W']i({']i!U']iQ']i!d']i~O(w%pO)`9lO~O!h8RO[*`a~O[9nO~P&7dO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO!U(Va)_#Zi~P#4YO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OOQ#_q!d#_q!h#_q[#_q~P#4YO&r#WO&s$yOQ#fq!d#fq!h#fq~O)p5qOQ#`a!d#`a!h#`a~O]&eO!V+pO!T#qq!x#qq#v#qq({#qq)p#qq[#qq!h#qq)_#qqQ#qq!d#qq)`#qq~O!h8bO[)ua~O)[6TO]&Vi!T&Vi!V&Vi)Y&Vi)Z&Vi)]&Vis&Vit&Viu&Viv&Viw&Vix&Viy&Viz&Vi!l&Vi!x&Vi#T&Vi#V&Vi#p&Vi#v&Vi({&Vi(}&Vi)p&Vib&Vie&Vim&Vi|&Vi!O&Vi!o&Vi!r&Vi!s&Vi!t&Vi!u&Vi!v&Vi!{&Vi#a&Vi#b&Vi#i&Vi#t&Vi${&Vi%c&Vi%e&Vi%k&Vi%l&Vi%o&Vi%v&Vi&m&Vi&r&Vi&s&Vi(w&Vi)V&Vi)_&Vi[&Vi!h&ViQ&Vi!d&Vi~O)_9qO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO[$bq!h#{i)_#{i~P#4YO[9sO~P!(}O[9sO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[9sO~O]&eO!V&dO({9vO~O[9wO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[9wO~O]&eO!V2|O!h%Oq)_%Oq[%Oq~O!W9{O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!W9{O~P!(}O)_6mO~P!(}O)_9|O~O)_9}O~O(}.UO)_9}O~O!h3wO!T)eq~O)`:PO!T'xi!h'xi~O!T$YO!h7rO({4VO)_:QO)p:SO~O)_:QO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_:QO)`$OO~P#4YO)_:QO)p:VO~P)GbO]&eO!V7qO!T!yi!h!yi#v!yi({!yi)_!yi)p!yi[!yi~O!W:ZO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!W:ZO)Y:]O~P$&OO!W:ZO~P!(}O]&eO!V7qO!T(ea!h(ea({(ea)_(ea)p(ea~O[:_O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O!h#kO(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[:_O~O[:dO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[:dO~O]&eO!V2|O!h%Oy)_%Oy[%Oy~O)_:eO~O)_:fO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_:fO)`$OO~P#4YO!T$YO!h7rO({4VO)_:fO)p:iO~O]&eO!V7qO!T!yq!h!yq#v!yq({!yq)_!yq)p!yq[!yq~O!W:kO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO!W:kO~P!(}O[:mO!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)`$OO~P#4YO[:mO~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_:oO)`$OO~P#4YO)_:oO~O]&eO!V7qO!T!yy!h!yy#v!yy({!yy)_!yy)p!yy[!yy~O!Y#sO![#tO!^#wO!_#xO!a#zO!b#{O!e#{O!f#|O(z#hO)Y#oO)Z#qO)[#pO)]#rO)^#jO)_:sO)`$OO~P#4YO)_:sO~O]ZXmhXqZXqjX!TjX!VZX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!eZX!fZX!gZX!hZX(zZX({$]X(|ZX(}ZX)YZX)ZZX)[ZX)]ZX)^ZX)_ZX)`ZX)pZX~O]%WXmnXqoXq%WX!ToX!V%WX!X%WX!Y%WX![%WX!^%WX!_%WX!a%WX!b%WX!e%WX!f%WX!gnX!h%WX(z%WX(|%WX(}%WX)Y%WX)Z%WX)[%WX)]%WX)^%WX)`%WX)pnX[%WXQ%WX!d%WX~O)_%WX!W%WX({%WX!U%WX~P+H]O]oX]%WXeoXmnXqoXq%WXsoXtoXuoXvoXwoXxoXyoXzoX!OoX!VoX!V%WX!roX!soX!toX!uoX!voX!xoX!{oX%voX&roX&soX(woX)YoX)[oX)]oX[oX[%WX!hoX)`oX~O)_oX)poX~P+JmO]%WXmnXqoXq%WX!V%WX!h%WXQ%WX!d%WX[%WX~O!T%WX#v%WX)_%WX)p%WX({%WX~P+MWOQoXQ%WX!ToX!X%WX!Y%WX![%WX!^%WX!_%WX!a%WX!b%WX!doX!d%WX!e%WX!f%WX!gnX!h%WX(z%WX(|%WX(}%WX)Y%WX)Z%WX)[%WX)]%WX)^%WX)`%WX)pnX~P+JmO]oX]%WXmnXqoXq%WXsoXtoXuoXvoXwoXxoXyoXzoX!OoX!V%WX!roX!soX!toX!uoX!voX!xoX!{oX%voX&roX&soX(woX)YoX)[oX)]oX~O!ToX({oX)_oX)poX~P,!OOeoX!VoX)_%WX~P,!OOmnXqoX)_%WX~Oe)tO%Y)uO)O:vO~Oe)tO%Y)uO)O:{O~Oe)tO%Y)uO)O:wO~Oe$TO%Y*YO'[$VO'_$WO)O:vO~Oe$TO%Y*YO'[$VO'_$WO)O:xO~Oe$TO%Y*YO'[$VO'_$WO)O:zO~O[jX]jXsjXtjXujXvjXwjXxjXyjXzjX!VjX&rjX&sjX)YjX)[jX)]jXejX!OjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX(wjX~P#1xO]ZXmhXqZXqjX!VZX!hZX)_ZX)pZX~O!TZX#vZX({ZX~P,(fOmhXqjX)VjX)_ZX)pjX~O]ZX]jXejXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!VZX!VjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(wjX)YjX)[jX)]jX[ZX[jX!hjX)`jX)pjX~O)_ZX~P,)pO]ZX]jXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!TjX!VZX!VjX!XZX!YZX![ZX!^ZX!_ZX!aZX!bZX!eZX!fZX!gZX!hZX!hjX&rjX&sjX(zZX(|ZX(}ZX)YZX)YjX)ZZX)[ZX)[jX)]ZX)]jX)^ZX)`ZX)`jX)pZX~OQZXQjX!dZX!djX~P,,ZO]jXejXsjXtjXujXvjXwjXxjXyjXzjX!OjX!VjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(wjX)YjX)[jX)]jX~P#1xO]ZX]jXejXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!VZX!VjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(wjX)YjX)[jX)]jX~O)_jX~P,1]O[ZX[jXejX!OjX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX(wjX)pjX~P,,ZO]ZX]jXmhXqZXqjXsjXtjXujXvjXwjXxjXyjXzjX!OjX!TjX!VZX!rjX!sjX!tjX!ujX!vjX!xjX!{jX%vjX&rjX&sjX(wjX({jX)YjX)[jX)]jX)_jX)pjX~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O~PBXOe$TO%Y*YO)O:vO~Oe$TO%Y*YO)O:wO~Oe$TO%Y*YO)O:}O~Oe$TO%Y*YO)O:|O~O]%jOe!POm%dOs!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O!V%mO!{!dO!|%TO%v$oO(w$zO)Y;hO)[;iO)];iO~O]%jOe!POm%dO!V%mO!{!dO%v$oO(w$zO)Y;hO)[;iO)];iO~Oe$TO%Y$UO)O:wO~Oe$TO%Y$UO)O:{O~Om;QO~Om;PO~O]dXmhXqjX!TdX~Oe)tO%Y*YO)O:vO~Oe)tO%Y*YO)O:wO~Oe)tO%Y*YO)O:xO~Oe)tO%Y*YO)O:yO~Oe)tO%Y*YO)O:zO~Oe)tO%Y*YO)O:|O~Oe)tO%Y*YO)O:}O~Os!^Ot!^Ou!^Ov!^Ow!^Ox!^Oy!^Oz!^O~P,9iO])SXs)SXt)SXu)SXv)SXw)SXx)SXy)SXz)SX!O)SX!r)SX!s)SX!t)SX!u)SX!v)SX!x)SX!{)SX%v)SX&r)SX&s)SX(w)SX)Y)SX)[)SX)])SX)p)SX~Om;PO!T)SX({)SX)_)SX~P,=hO]&wXmnXqoX!T&wX~Oe4rO%Y*YO)O;{O~Om;cO)Y<PO)[5hO)]5hO~P(FVOe!POm%dO!{!dO%v$oO(w$zO~O]1ZO!V1XO)Y1RO)[<QO)]<QOQ#nX!d#nX!h#nX[#nX~P,@dO)Y;aO~Om;oO~Om;pO~Om;qO~Om;sO~Om;tO~Om;uO~Om;sO!T$YOQ)SX!d)SX!h)SX)`)SX[)SX)p)SX~P$G`Om;qO!T$YO~P$G`Om;oO!g$[O)p$[O~Om;qO!g$[O)p$[O~Om;sO!g$[O)p$[O~Om;pO[)SX!h)SX)`)SX)p)SX~P$G`Oe/eO%Y*YO)O;{O~Om;|O~O)Y<aO~OV'e'h'i'g(u)b!R(wS(p%Z!Y!['je%[!i'R!f]'f*a'k(|!^!_'l'm'l~\",\n goto: \"%7u*aPPPPP*b*lP*oPP.ePP4y7z7z;UP;U>`P>y?]?qFiMi!&m!-TP!3}!4r!5gP!6RPPPPPPPP!6lP!8UP!9g!;PP!;VPPPPPP!;YP!;YPP!;YPP!;fPPPPPP!=h!AOP!ARPP!Ao!BdPPPPP!BhP>|!CyPP>|!FQ!HR!Ha!Iv!KgP!KrP!LR!LR# c#$r#&Y#)f#,p!HR#,zPP!HR#-R#-X#,z#,z#-[P#-`#-}#-}#-}#-}!KgP#.h#.y#1`P#1tP#3aP#3e#3m#4b#4m#6{#7T#7T#3eP#3eP#7[#7bP#7lPP#8X#8v#9h#8XP#:Y#:fP#8XP#8XPP#8X#8XP#8XP#8XP#8XP#8XP#8XP#8XP#:i#7l#;VP#;lP#<R#<R#<R#<R#<`#3eP#<v#Ar#BaPPPPPPPP#CXP#CgP#CgP#Cs#GQ#;bPP#Ca#GdP#Gw#HS#HY#HY#Ca#IOP#3e#3e#3e#3e#3eP!LR#Ij#Iq#Iq#Iq#Iu# ]#JP# ]#JT!Ha!Ha!Ha#JW#Np!Ha>|>|>|$%i!Bd!Bd!Bd!Bd!Bd!Bd!6l!6l!6l$%|P$'i$'w!6l$'}PP!6l$*]$*`#CO$*c;U7z$-i$/d$1T$2s7zPP7z$4g7zP7z7zP7zP$7m7zP7zPP7z$7yPPPPPPPPP*lP$;R$;X$;_$=v$?|$@S$@j$@t$AP$A`$Af$Bt$Cs$Cz$DR$DX$Da$Dk$Dq$D|$ES$E]$Ee$Ep$Ev$FQ$FW$Fb$Fi$Fx$GO$GUP$G[$Gd$Gk$Gy$Ig$Im$Is$Iz$JTPPPPPPPPPPPP$JZ$J_PPPPP%#a$*]%#d%&l%(tPP%)R%)UPPPPPPPPPP%)b%*e%*k%*o%,f%-s%.f%.m%0|%1SPPP%1^%1i%1l%1r%2y%2|%3W%3b%3f%4j%5]%5c#CXP%5|%6^%6a%6q%6}%7R%7X%7_$*]$*`$*`%7b%7eP%7o%7rQ#dPZ(s#b(o(p(t/ZR#dP'`mO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mU%qm%r7XQ&o!`Q(o#^d0W*S0T0U0V0Y5U5V5W5Z8XR7X3[b}Oaewx{!g&U*v&v$k[!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|1S1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mS%bf0o#d%lgnp|#O$i%O%P%U%f%j%k%y&u'v'w(S*_*e*g*y+b,q,{-d-u-|.k.r.t0d1Q1R1V1Z2f2q5h6n;_;`;a;g;h;i;v;w;x;y;}<O<P<Q<_<`<aS%sm!YS&w!h#PQ'_!tQ'i!yQ'j!zQ(o#aQ(p#^Q(q#_Q*}%mQ,]&nQ,b&pQ-X'`Q-i'hQ-p'sS.w(]4`Q/m)lQ0l*rQ2X,aQ2`,hQ3V-jQ4i/RQ4m/[Q5m1UQ6c2[Q7U3WQ8h6bQ9l8RR;b1X$|#iS!]${%S%V%]&l&m'S'Z']'c'e(c(g(j(|(})W)X)Y)Z)[)])^)_)`)a)b)c)d)p)v)}+^+l,T,X,o,z-m-n.R/O/w0g0i0n0p1O1g2Q2h2o3Y3j3k4j4k4q4t4z4|5Q5R5k5w6O6]6l6p6z7R7x7y7{8Z8[8j8m8q8y9[9c9r9x:T:[:a:g:pQ&r!dQ(i#ZQ(x#cQ)o$V[*x%g*]0r2g2n3SQ,c&qQ/T(hQ/Z(pQ/b(yS/p)n/UQ0y+VS4x/q/rR8V4y'a![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:m'a!VO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mQ)T#mS+V%{0zQ/y)xk4U.l3z4O4R4S7j7l7m7o7r9`9a:YQ)V#mk4T.l3z4O4R4S7j7l7m7o7r9`9a:Yl)U#m.l3z4O4R4S7j7l7m7o7r9`9a:YT+V%{0z[UOwx!g&U*vW$b[e$g(d#l$r_!f!u!}#R#S#T#U#V#Z$U$V$n%W&W&[&e&o'a(P(R(W(`(i)o)u+a+f+g+y,O,^,p-P-V-t-y.].^.d.e.i.v.z1[1`1m1r1t2s3c3d3e3w3{5q6U6W7c8b![%eg$i%f%k&u*_*y+b,q,{-d1R1V2f;_;`;a;h;i;v;w;x;y;}<O<Q<_<`<aY%unp%y-u.kl)R#m.l3z4O4R4S7j7l7m7o7r9`9a:YS;l'v-|U;m(S.r.t&|<Saf{|!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$h$m%O%P%U%_%j%o&S&Y&d&{'O'Q'k'l'w'{(b(k)q)w*e*g*m*n*q*w+]+_+m+o+p,U,W,s,v-l.U.V.Z/S/V/c/j/s/u/z/|0d0o1Q1S1X1h1i1s1w2R2j2p2q2|4V4Y4_4h5a5h5l5x6f6j6m6n6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:m;g<PQ<T1Zd<U&z'R'd,|-b-c-f2m3R3UW<V&h*{2T3pQ<W#O[<X!t'`'h,a2[6bT<d%{0z[VOwx!g&U*vW$c[e$g(dQ$r.z!j$s_!f!u!}#V#Z$U$V$n%W&W&[&e&o'a(i)o)u+a+f+y,^,p-P-V-t.i1[1`1m1r1t2s3{5q8b&^$|af{!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$h$m%_%o&S&Y&d&{'O'Q'k'l'{(b(k)q)w*m*n*q*w+]+_+m+o+p,U,W,s,v-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2j2p2|4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:m![%eg$i%f%k&u*_*y+b,q,{-d1R1V2f;_;`;a;h;i;v;w;x;y;}<O<Q<_<`<aY%unp%y-u.kQ't#O|(O#R#S#T#U(P(R(W(`+g,O.].^.d.e.v3c3d3e3w6U6W7cl)R#m.l3z4O4R4S7j7l7m7o7r9`9a:YS-s'v-|Q3_-yU;z(S.r.tn<S|%O%P%U%j'w*e*g0d1Q2q5h6n;g<P[<X!t'`'h,a2[6bW<Y&h*{2T3pd<Z&z'R'd,|-b-c-f2m3R3UQ<b1ZT<d%{0z!Q!UO[ewx!g$g&U&h&z'R'd(d*v*{,|-b-c-f2T2m3R3U3p!v$v_!f!u!}#O#V#Z$U$V$n%W&W&[&e&o'a'v(S(i)o)u+a+y,^,p-P-V-t-|.i.r.t1Z1[1`1m1r1t2s3{5q8b&^%Raf{!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$h$m%_%o&S&Y&d&{'O'Q'k'l'{(b(k)q)w*m*n*q*w+]+_+m+o+p,U,W,s,v-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2j2p2|4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:m$Q%ngnp|#m$i%O%P%U%f%j%k%y%{&u'`'h'w*_*e*g*y+b,a,q,{-d-u.k.l0d0z1Q1R1V2[2f2q3z4O4R4S5h6b6n7j7l7m7o7r9`9a:Y;_;`;a;g;h;i;v;w;x;y;}<O<P<Q<_<`<aQ'^!tz(Q#R#S#T#U(P(R(W(`,O.].^.d.e.v3c3d3e3w6U6W7cf-`'b-Y-[-_2w2x2z2}6x6y8wQ1_+fQ1b+gQ2r-OQ3`-yQ4c.zQ5s1aR8^5t!Q!UO[ewx!g$g&U&h&z'R'd(d*v*{,|-b-c-f2T2m3R3U3p!x$v_!f!u!}#O#V#Z$U$V$n%W&W&[&e&o'a'v(S(i)o)u+a+f+y,^,p-P-V-t-|.i.r.t1Z1[1`1m1r1t2s3{5q8b&^%Raf{!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$h$m%_%o&S&Y&d&{'O'Q'k'l'{(b(k)q)w*m*n*q*w+]+_+m+o+p,U,W,s,v-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2j2p2|4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:m$S%ngnp|!t#m$i%O%P%U%f%j%k%y%{&u'`'h'w*_*e*g*y+b,a,q,{-d-u.k.l0d0z1Q1R1V2[2f2q3z4O4R4S5h6b6n7j7l7m7o7r9`9a:Y;_;`;a;g;h;i;v;w;x;y;}<O<P<Q<_<`<a|(Q#R#S#T#U(P(R(W(`+g,O.].^.d.e.v3c3d3e3w6U6W7cQ3`-yR4c.z[WOwx!g&U*vW$d[e$g(d#l$r_!f!u!}#R#S#T#U#V#Z$U$V$n%W&W&[&e&o'a(P(R(W(`(i)o)u+a+f+g+y,O,^,p-P-V-t-y.].^.d.e.i.v.z1[1`1m1r1t2s3c3d3e3w3{5q6U6W7c8b![%eg$i%f%k&u*_*y+b,q,{-d1R1V2f;_;`;a;h;i;v;w;x;y;}<O<Q<_<`<aY%unp%y-u.kl)R#m.l3z4O4R4S7j7l7m7o7r9`9a:YS;l'v-|U;m(S.r.tn<S|%O%P%U%j'w*e*g0d1Q2q5h6n;g<PQ<T1ZQ<W#O[<X!t'`'h,a2[6b&^<[af{!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$h$m%_%o&S&Y&d&{'O'Q'k'l'{(b(k)q)w*m*n*q*w+]+_+m+o+p,U,W,s,v-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2j2p2|4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:md<]&z'R'd,|-b-c-f2m3R3UW<^&h*{2T3pT<d%{0zp$RT$a$q%d%t)Q;R;S;T;c;d;e;f;j;k<co)r$X*Z*a/f;O;P;Q;o;p;q;r;s;t;u;|p$ST$a$q%d%t)Q;R;S;T;c;d;e;f;j;k<co)s$X*Z*a/f;O;P;Q;o;p;q;r;s;t;u;|^&g}!O$k$l%b%l;bd&k!U$v%R%n'^(Q1_1b3`4cV/h)T)U4US%[e$gQ,Y&hQ/Q(dQ2t-VQ6Q1tQ6^2TQ6t2sR9o8b#}!TO[_ewx!f!g!u!}#O#V#Z$U$V$g$n%W&U&W&[&e&h&o&z'R'a'd'v(S(d(i)o)u*v*{+a+f+y,^,p,|-P-V-b-c-f-t-y-|.i.r.t1Z1[1`1m1r1t2T2m2s3R3U3p3{5q8b#[^O[_`wx!f!g!}#O$U$f$n$u$w&U&W&[&e&o&t&z'R'd'v(S)u*b*v*{+a,^,p,|-P-b-c-f-t-y-|.i.r.t1Z1[1m2m3R3U3p3{_(W#R#S#T+g3c3d3e#}ZO[wx!g!k#R#S#T%o&U&W&[&e&o&y&z&{'O'Q'R'^'d'v'z(P(R(S(W*v*{+a+g,^,m,p,v-U-b-c-f-t-y-|.P.d.i.r.v1Z1[1m2j2r3R3U3c3d3e3p6j6q8n9s9w:_:d:mQ$_YR0[*TR*V$_e0W*S0T0U0V0Y5U5V5W5Z8X$f#{S%V%]'S'Z']'c'e(j(|(})W)Z)[)])^)_)`)c)d)p)v)}+^+l,T,X,o,z-m-n.R/O/w0g0i0n0p1O1g2Q2h2o3Y3j3k4j4k4q4t4z4|5Q5R5k5w6O6]6l6p6z7R7x7y7{8Z8[8j8m8q8y9[9c9r9x:T:[:a:g:pe0W*S0T0U0V0Y5U5V5W5Z8X'`!YO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:me0W*S0T0U0V0Y5U5V5W5Z8XR5[0[^(V#R#S#T+g3c3d3eY.b(P(T(W(X7[U3r.`.c.vS7`3s4^R9j7z^(U#R#S#T+g3c3d3e[.a(P(T(V(W(X7[W3q.`.b.c.vU7_3r3s4^S9R7`7zR:^9jT.p(S.rd]Owx!g&U'v(S*v-|.r!v^[_`!f!}#O$U$f$n$u$w&W&[&e&o&t&z'R'd)u*b*{+a,^,p,|-P-b-c-f-t-y.i.t1Z1[1m2m3R3U3p3{Q%vnT1|,S1}!jbOaenpwx{|!g#O%O%P%U%j%y&U'v'w(S*e*g*v-u-|.k.r.t0d1Q1Z2q5h6n;g<Pf-]'b-Y-[-_2w2x2z2}6x6y8wj4P.l3z4O4R4S7j7l7m7o7r9`9a:Yr<Rg$i%f%k&u*_*y,q,{-d2f;_;`;a;v;x;}i<e+b1R1V;h;i;w;y<O<Q<_<`<a!O&`y%Z&X&[&]'m)m*i*k+b+j+}/t0e1Q1R1V1Z1q5h5}<P<Qz&cz%Q%Y%g&f'u*]*d,g-}0b0c0r1T2g2n3S5^5i6s8pS'}#Q.^n+q&Z*l+k+r+u-o/o0f1Y1e4{5_5g5|8`Q2_,f^2{-^2y3P6w7O8v9ze7p4Q7f7n7v7w9]9_9g:X:jS+c&W1[Y+s&[&e*{1Z3pR5z1m#w!POaegnpwx{|!g#O$i%O%P%U%f%j%k%y&U&u'v'w(S*_*e*g*v*y+b,q,{-d-u-|.k.r.t0d1Q1R1V1Z2f2q5h6n;_;`;a;g;h;i;v;w;x;y;}<O<P<Q<_<`<a`oOwx!g&U'v*v-|#U!Paeg{|#O$i%O%P%U%f%j%k&u'w*_*e*g*y+b,q,{-d0d1Q1R1V1Z2f2q5h6n;_;`;a;g;h;i;v;w;x;y;}<O<P<Q<_<`<aU%xnp-uQ+S%yS.j(S.rT3}.k.tW+w&`+q+x1jV,P&c,Q7pQ+}&bU,P&c,Q7pQ-|'vT.X'{.Z'`![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mX1y,O.^6U6W'W!VO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/c/j/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mW1y,O.^6U6WR2l,x!WjO[wx!g!k%o&U&{'O'Q'd*v,v-b-c-f2j3R6j6q8n9s9w:_:d:mY%Xe$g(d1w3pQ'U!nS)O#k5aQ,r&zQ,}'RS.T'{.ZQ2i,sQ6r2pQ7T3UQ8o6mR9t8l'W![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/c/j/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mX1y,O.^6U6W'ayO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,O,U,W,s,v,|-b-c-f-l.U.V.Z.^/S/c/j/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_5a5l5x6U6W6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mQ&byS'v#O-zR1c+hS+c&W1[R5u1cQ1W+bR5n1VR1W+bT+c&W1[z&^%Z&X&[&]'m)m*i*k+b+j/t0e1Q1R1V1Z1q5h5}<P<QQ&_yR1u+}!P&^y%Z&X&[&]'m)m*i*k+b+j+}/t0e1Q1R1V1Z1q5h5}<P<QQ+z&`S,R&c7pS1k+q+xQ1{,QR5y1j!WkO[wx!g!k%o&U&{'O'Q'd*v,v-b-c-f2j3R6j6q8n9s9w:_:d:mS%|o.jS&Qq-wQ&ayQ&s!eQ'g!yQ*u%gU+Q%x%}3}S+U%z&PQ+v&_Q,_&oS,`&p'iQ,w&}S0`*],gS0v+R+SQ0x+TQ1v+}S2Z,b-kQ5]0bQ5b0wQ6S1uQ6a2YQ6d2_Q7u4QQ9Z7fR:W9][uOwx!g&U*vQ,_&oQ-{'vQ3a-yR3f-|xlOwx!g!k%o&U&{'Q*v,v2j6j6q8n9s9w:_:d:mU$j['O-cS%|o.jS&Qq-wQ*u%gU+Q%x%}3}S+U%z&PS0`*],gS0v+R+SQ0x+TQ5]0bQ5b0wQ7u4QQ9Z7fR:W9]T,d&s,e]uOwx!g&U*v[uOwx!g&U*vQ,_&oQ,s&zQ,|'RW-e'd-b-f3RQ-{'vQ3a-yQ3f-|R7S3U[%hg$i,q,{-d2fR0s*y^$ZV!U$c$|%R<Y<ZQ'U!nS)e$P*{S){$Y*vQ*O$[Y*x%g*]0r2n3SQ/T(hS/p)n/US0h*m4hS0q*w6fQ0y+VQ4X.lQ4u/jS4x/q/rS4}/u5aQ5S/|Q6g2gU7h3z4Q4YQ8V4yQ8r6oY9X7f7i7j7s7tQ9y8tW:R9V9Y9]9^Q:b9vU:h:S:U:VR:q:iS){$Y*vT4}/u5aZ)y$Y)z*v/u5aQ&y!hR'z#PS,l&x'xQ2c,jR6e2bxlOwx!g!k%o&U&{'Q*v,v2j6j6q8n9s9w:_:d:mV$j['O-c!XkO[wx!g!k%o&U&{'O'Q'd*v,v-b-c-f2j3R6j6q8n9s9w:_:d:m!WhO[wx!g!k%o&U&{'O'Q'd*v,v-b-c-f2j3R6j6q8n9s9w:_:d:mR'Y!q!WkO[wx!g!k%o&U&{'O'Q'd*v,v-b-c-f2j3R6j6q8n9s9w:_:d:mR,s&zQ&{!iQ&}!jQ'Q!lR,v&|R,t&zxlOwx!g!k%o&U&{'Q*v,v2j6j6q8n9s9w:_:d:mX-e'd-b-f3R[uOwx!g&U*vQ-P'RQ-{'vS.p(S.rR3f-|[uOwx!g&U*vQ-P'RW-e'd-b-f3RT.p(S.rg-`'b-Y-[-_2w2x2z2}6x6y8wylOwx!g!k%o&U&{'Q*v,v2j6j6q8n9s9w:_:d:mb!OOaewx{!g&U*v&|$l[f!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:m#d%lgnp|#O$i%O%P%U%f%j%k%y&u'v'w(S*_*e*g*y+b,q,{-d-u-|.k.r.t0d1Q1R1V1Z2f2q5h6n;_;`;a;g;h;i;v;w;x;y;}<O<P<Q<_<`<aQ'_!tQ-X'`Q-i'hQ2X,aQ6c2[R8h6bj$TT$a%d%t;R;S;T;c;d;e;f;j;ki)t$X*Z;O;P;Q;o;p;q;r;s;t;uj$TT$a%d%t;R;S;T;c;d;e;f;j;kh)t$X*Z;O;P;Q;o;p;q;r;s;t;uS/e)Q<cV4r/f/g;|[uOwx!g&U*vQ-{'vR3f-|[uOwx!g&U*vT.p(S.r'`!YO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mR7Y3[[uOwx!g&U*vQ-{'vS.p(S.rR3f-|[pOwx!g&U*vQ%ynS-u'v-|T.k(S.rS%}o.jS+R%x3}R0w+SQ+W%{R5d0zS%|o.jS&Qq-wU+Q%x%}3}S+U%z&PS0v+R+SQ0x+TQ5b0wQ7u4QQ9Z7fR:W9]`qOwx!g&U(S*v.rS%zn-uU&Pp.k.tQ+T%yT-w'v-|S'|#Q.^R._'}T.W'{.ZS.X'{.ZQ9P7]R:O9QT6U1x8fR6W1x#d!Pgnp|#O$i%O%P%U%f%j%k%y&u'v'w(S*_*e*g*y+b,q,{-d-u-|.k.r.t0d1Q1R1V1Z2f2q5h6n;_;`;a;g;h;i;v;w;x;y;}<O<P<Q<_<`<ab!QOaewx{!g&U*v&}![[f!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:m#d!Pgnp|#O$i%O%P%U%f%j%k%y&u'v'w(S*_*e*g*y+b,q,{-d-u-|.k.r.t0d1Q1R1V1Z2f2q5h6n;_;`;a;g;h;i;v;w;x;y;}<O<P<Q<_<`<ab!QOaewx{!g&U*v&|![[f!W!X!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|#}$P$W$Y$[$g$h$m%_%o&S&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_4h5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mk4T.l3z4O4R4S7j7l7m7o7r9`9a:YQ4X.lS7h3z4QU9X7f7j7sS:R9V9]R:h:U#|!TO[_ewx!f!g!u!}#O#V#Z$U$V$g$n%W&U&W&[&e&h&o&z'R'a'd'v(S(d(i)o)u*v*{+a+f+y,^,p,|-P-V-b-c-f-t-y-|.i.r.t1Z1[1`1m1r1t2T2m2s3R3U3p3{5q8bR4d.zQ(_#US.{(^(`S4e.|.}R8O4fQ.x(]R7|4`#|!TO[_ewx!f!g!u!}#O#V#Z$U$V$g$n%W&U&W&[&e&h&o&z'R'a'd'v(S(d(i)o)u*v*{+a+f+y,^,p,|-P-V-b-c-f-t-y-|.i.r.t1Z1[1`1m1r1t2T2m2s3R3U3p3{5q8bp$y`$f$u%Z&t'b(a(h)n*i-Y/r1q5r5}8]q)S#m%{.l0z3z4O4R4S7j7l7m7o7r9`9a:YR,Z&hR6_2T'X!VO[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/c/j/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:m$q#tS%V%]'S'Z']'c'e(c(g(j(|(})W)X)Z)[)])^)_)`)a)b)c)d)p)v)}+^+l,T,X,o,z-m-n.R/O/w0g0i0n0p1O1g2Q2h2o3Y3j3k4j4k4q4t4z4|5Q5R5k5w6O6]6l6p6z7R7x7y7{8Z8[8j8m8q8y9[9c9r9x:T:[:a:g:p$]#uS%V%]'S'Z']'c'e(j(|(})W)[)c)d)p)v)}+^+l,T,X,o,z-m-n.R/O/w0g0i0n0p1O1g2Q2h2o3Y3j3k4j4k4q4t4z4|5Q5R5k5w6O6]6l6p6z7R7x7y7{8Z8[8j8m8q8y9[9c9r9x:T:[:a:g:p$Z#vS%V%]'S'Z']'c'e(j(|(})W)c)d)p)v)}+^+l,T,X,o,z-m-n.R/O/w0g0i0n0p1O1g2Q2h2o3Y3j3k4j4k4q4t4z4|5Q5R5k5w6O6]6l6p6z7R7x7y7{8Z8[8j8m8q8y9[9c9r9x:T:[:a:g:p$c#yS%V%]'S'Z']'c'e(j(|(})W)Z)[)])^)c)d)p)v)}+^+l,T,X,o,z-m-n.R/O/w0g0i0n0p1O1g2Q2h2o3Y3j3k4j4k4q4t4z4|5Q5R5k5w6O6]6l6p6z7R7x7y7{8Z8[8j8m8q8y9[9c9r9x:T:[:a:g:p'X![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/c/j/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mQ/U(hQ/q)nQ4y/rR9k8Q']![O[aefwx{!W!X!g!k!n!r!s!v!x#X#Y#[#h#k#n#s#t#u#v#w#x#y#z#{#|$P$W$Y$[$g$h$m%_%o&S&U&Y&d&h&z&{'O'Q'R'd'k'l'{(b(d(k)q)w*m*n*q*v*w*{+]+_+m+o+p,U,W,s,v,|-b-c-f-l.U.V.Z/S/V/c/j/s/u/z/|0o1S1X1h1i1s1w2R2T2j2m2p2|3R3U3p4V4Y4_5a5l5x6f6j6m6o6q6{6}7S7i7q7t8l8n8t8z8{9Y9^9d9f9s9v9w:S:V:]:_:d:i:mQ(m#]R/W(mQ#fQR(z#fU%Oa;g<Pb%We$g&h(d-V1t2T2s8bQ'a!u!Q*c%O%W'a*e*k+m,U0d0e1i2w6x6{7l8w9`9d:Y;_;v;w;}<O<_S*e%P%UQ*k%ZS+m&Y1XQ,U&dQ0d*gQ0e*iQ1i+pQ2w-[S6x2x2zQ6{2|Q7l4OQ8w6yS9`7m7oQ9d7qQ:Y9aQ;_%fS;v;`;aS;w<`<aQ;};xQ<O;yT<_1R;h[[Owx!g&U*vl$e['O(P+a,^,m,p-U-c-t.P.d.i.vl'O!k%o&{'Q,v2j6j6q8n9s9w:_:d:m^(P#R#S#T+g3c3d3e`+a&W&[&e*{1Z1[1m3pS,^&o-yQ,m&yU,p&z'R3US-U'^2rW-c'd-b-f3RS-t'v-|Q.P'zQ.d(RS.i(S.rR.v(WQ*R$^R0P*RQ0Y*SQ5U0TQ5V0UQ5W0VY5X0Y5U5V5W8XR8X5ZQ*U$_S0]*U0^R0^*VS.e(R.dS3u.e7cR7c3wQ3x.fS7a3v3yU7e3x7a9SR9S7bQ.r(SR4Z.r!|_O[wx!f!g!}#O$U$n&U&W&[&e&o&z'R'd'v(S)u*v*{+a,^,p,|-P-b-c-f-t-y-|.i.r.t1Z1[1m2m3R3U3p3{U$t_$w*bU$w`$f&tR*b$uU%Pa;g<Pd*f%P*g2x6y7m9a;`;x;y<`Q*g%UQ2x-[Q6y2zQ7m4OQ9a7oQ;`%fQ;x;aQ;y<aT<`1R;hS,Q&c7pR1z,QS*o%]/wR0j*oQ1]+dR5p1]U+j&X1R<PR1d+jQ+x&`Q1j+qT1p+x1jQ8c6QR9p8cQwOS&Tw&UT&Ux*vQ,e&sR2^,eW)z$Y*v/u5aR/{)zU/v)v){0nR5O/v[*z%g%h*]2g2n3SR0t*zQ,i&wR2a,iQ-f'dQ3R-bT3T-f3RQ3O-^R7P3OQ-k'iQ2Y,bT3X-k2YS%rm7XR+P%rdnOwx!g&U'v(S*v-|.rR%wnQ0{+WR5e0{Q.Z'{R3m.ZQ1},SR6X1}U*s%b*};bR0m*sS1n+s0uR5{1nQ7s4QQ9V7fU9h7s9V:UR:U9]$O!SO[_ewx!f!g!u!}#O#V#Z$U$V$g$n%W&U&W&[&e&h&o&z'R'a'd'v(S(d(i)o)u*v*{+a+f+y,^,p,|-P-V-b-c-f-t-y-|.i.r.t.z1Z1[1`1m1r1t2T2m2s3R3U3p3{5q8bR&i!SQ4a.xR7}4aQ2U,ZR6`2US/k)d)eR4v/kW(t#b(o(p/ZR/_(tQ8S4mR9m8ST)f$P*{!USO[wx!g!k%o&U&{'O'Q'd,v-b-c-f2j3R6j6q8n9s9w:_:d:mj${a{$m%_+o,W1h2R5x6}8z9f:]Y%Ve$g(d1w3pY%]f$h(k)q*qQ&l!WQ&m!XQ'S!nQ'Z!rQ']!sQ'c!vQ'e!xQ(c#XQ(g#YS(j#[+_Q(|#hQ(}#kQ)W#nQ)X#sQ)Y#tQ)Z#uQ)[#vQ)]#wQ)^#xQ)_#yQ)`#zQ)a#{Q)b#|Q)c#}S)d$P*{Q)p$WQ)v$YQ)}$[Q+^&SS+l&Y1XQ,T&dQ,X&hQ,o&zQ,z'RQ-m'kQ-n'lS.R'{.ZQ/O(bS/w)w0oS0g*m4hQ0i*nQ0n*vQ0p*wQ1O+]S1g+m+pQ2Q,UQ2h,sS2o,|7SQ3Y-lQ3j.UQ3k.VQ4j/SQ4k/VQ4q/cQ4t/jQ4z/sQ4|/uQ5Q/zQ5R/|Q5k1SQ5w1iQ6O1sQ6]2TS6l2m8{Q6p2pQ6z2|Q7R3UQ7x4VQ7y4YQ7{4_Q8Z5aQ8[5lQ8j6fQ8m6mQ8q6oQ8y6{S9[7i7tQ9c7qQ9r8lQ9x8tS:T9Y9^Q:[9dQ:a9vS:g:S:VR:p:iR,[&hd]Owx!g&U'v(S*v-|.r!v^[_`!f!}#O$U$f$n$u$w&W&[&e&o&t&z'R'd)u*b*{+a,^,p,|-P-b-c-f-t-y.i.t1Z1[1m2m3R3U3p3{#r$}ae!u$g%O%P%U%W%Z%f&Y&d&h'a(d*e*g*i*k+m+p,U-V-[0d0e1X1i1t2T2s2w2x2z2|4O6x6y6{7l7m7o7q8b8w9`9a9d:Y;_;`;a;g;h;v;w;x;y;}<O<_<`<aQ%vnS+i&X+jW+w&`+q+x1jU,P&c,Q7pQ1r+yT5j1R<P``Owx!g&U'v*v-|S$f[-tQ$u_b%Ze$g&h(d-V1t2T2s8b!h&t!f!}#O$U$n&W&[&e&o&z'R'd(S)u*{+a,^,p,|-P-b-c-f-y.i.r.t1Z1[1m2m3R3U3p3{Q'b!uS(a#V+fQ(h#ZS)n$V(iQ*i%WQ-Y'aQ/r)oQ1q+yQ5r1`Q5}1rR8]5qS(Y#R3dS(Z#S3eV([#T+g3cR$`Ye0X*S0T0U0V0Y5U5V5W5Z8XW(T#R#S#T+gQ(^#US.`(P(WS.f(R.dQ.}(`W1y,O.^6U6WQ3b-yQ3o.]Q3v.eQ4^.vU7[3c3d3eQ7d3wR9T7cQ.g(RR3t.dT.q(S.rdgOwx!g&U&o'v*v-y-|U$i[,^-tQ&u!fQ'm!}Q'w#OQ)m$UQ*_$n`+b&W&[&e*{1Z1[1m3pQ,q&zQ,{'RY-d'd-b-f3R3US.l(S.rQ/t)uQ1Q+aS2f,p-cS2q,|-PS3z.i.tQ6n2mR7j3{d]Owx!g&U'v(S*v-|.r!v^[_`!f!}#O$U$f$n$u$w&W&[&e&o&t&z'R'd)u*b*{+a,^,p,|-P-b-c-f-t-y.i.t1Z1[1m2m3R3U3p3{R%vnQ4Q.lQ7f3zQ7n4OQ7v4RQ7w4SQ9]7jU9_7l7m7oQ9g7rS:X9`9aR:j:YZ+t&[&e*{1Z3ppzOnpwx!g%y&U'v(S*v-u-|.k.r.t[%Qa%f1R;g;h<PU%Ye%j1ZQ%gg^&f{|%k1V5h;i<QQ'u#OQ*]$ib*d%O%P%U;_;`;a<_<`<aQ,g&uQ-}'wQ0b*_[0c*e*g;v;w;x;yQ0r*yQ1T+bQ2g,qQ2n,{S3S-d2fU5^0d;}<OQ5i1QQ6s2qR8p6nQ,S&cR9b7pS1x,O.^Q8e6UR8f6W[%`f$h(k)q)w0oR0k*qR+e&WQ+d&WR5o1[S&Zy+}Q*l%ZU+k&X1R<PS+r&[1ZW+u&]1V5h<QQ-o'mQ/o)mS0f*i*kQ1Y+bQ1e+jQ4{/tQ5_0eQ5g1QQ5|1qR8`5}R6R1tYvOwx&U*vR&v!gW%ig,q,{-dT*^$i2fT)|$Y*v[uOwx!g&U*vQ'P!kQ+O%oQ,u&{Q,y'QQ2k,vQ6i2jQ8k6jQ8s6qQ9u8nQ:`9sQ:c9wQ:l:_Q:n:dR:r:mxlOwx!g!k%o&U&{'Q*v,v2j6j6q8n9s9w:_:d:mU$j['O-cX-e'd-b-f3RQ-a'bR2v-YS-^'b-YQ2y-[Q3P-_U6w2w2x2zQ7O2}S8v6x6yR9z8w[rOwx!g&U*vS-v'v-|T.m(S.rR+X%{[sOwx!g&U*vS-x'v-|T.n(S.r[tOwx!g&U*vT.o(S.rT.Y'{.ZX%cf%m0o1XQ.|(^R4f.}R.y(]R(f#XQ(w#bS/Y(o(pR4l/ZR/^(qR4n/[\",\n nodeNames: \"⚠ RawString > MacroName LineComment BlockComment PreprocDirective #include String EscapeSequence SystemLibString Identifier ) ( ArgumentList ConditionalExpression AssignmentExpression CallExpression PrimitiveType FieldExpression FieldIdentifier DestructorName TemplateMethod ScopedFieldIdentifier NamespaceIdentifier TemplateType TypeIdentifier ScopedTypeIdentifier ScopedNamespaceIdentifier :: NamespaceIdentifier TypeIdentifier TemplateArgumentList < TypeDescriptor const volatile restrict _Atomic mutable constexpr constinit consteval StructSpecifier struct MsDeclspecModifier __declspec Attribute AttributeName Identifier AttributeArgs { } [ ] UpdateOp ArithOp ArithOp ArithOp LogicOp BitOp BitOp BitOp CompareOp CompareOp CompareOp > CompareOp BitOp UpdateOp , Number CharLiteral AttributeArgs VirtualSpecifier BaseClassClause Access virtual FieldDeclarationList FieldDeclaration extern static register inline thread_local AttributeSpecifier __attribute__ PointerDeclarator MsBasedModifier __based MsPointerModifier FunctionDeclarator ParameterList ParameterDeclaration PointerDeclarator FunctionDeclarator Noexcept noexcept RequiresClause requires True False ParenthesizedExpression CommaExpression LambdaExpression LambdaCaptureSpecifier TemplateParameterList OptionalParameterDeclaration TypeParameterDeclaration typename class VariadicParameterDeclaration VariadicDeclarator ReferenceDeclarator OptionalTypeParameterDeclaration VariadicTypeParameterDeclaration TemplateTemplateParameterDeclaration template AbstractFunctionDeclarator AbstractPointerDeclarator AbstractArrayDeclarator AbstractParenthesizedDeclarator AbstractReferenceDeclarator ThrowSpecifier throw TrailingReturnType CompoundStatement FunctionDefinition MsCallModifier TryStatement try CatchClause catch LinkageSpecification Declaration InitDeclarator InitializerList InitializerPair SubscriptDesignator FieldDesignator ExportDeclaration export ImportDeclaration import ModuleName PartitionName HeaderName CaseStatement case default LabeledStatement StatementIdentifier ExpressionStatement IfStatement if ConditionClause Declaration else SwitchStatement switch DoStatement do while WhileStatement ForStatement for ReturnStatement return BreakStatement break ContinueStatement continue GotoStatement goto CoReturnStatement co_return CoYieldStatement co_yield AttributeStatement ForRangeLoop AliasDeclaration using TypeDefinition typedef PointerDeclarator FunctionDeclarator ArrayDeclarator ParenthesizedDeclarator ThrowStatement NamespaceDefinition namespace ScopedIdentifier Identifier OperatorName operator ArithOp BitOp CompareOp LogicOp new delete co_await ConceptDefinition concept UsingDeclaration enum StaticAssertDeclaration static_assert ConcatenatedString TemplateDeclaration FriendDeclaration friend union FunctionDefinition ExplicitFunctionSpecifier explicit FieldInitializerList FieldInitializer DefaultMethodClause DeleteMethodClause FunctionDefinition OperatorCast operator TemplateInstantiation FunctionDefinition FunctionDefinition Declaration ModuleDeclaration module RequiresExpression RequirementList SimpleRequirement TypeRequirement CompoundRequirement ReturnTypeRequirement ConstraintConjuction LogicOp ConstraintDisjunction LogicOp ArrayDeclarator ParenthesizedDeclarator ReferenceDeclarator TemplateFunction OperatorName StructuredBindingDeclarator ArrayDeclarator ParenthesizedDeclarator ReferenceDeclarator BitfieldClause FunctionDefinition FunctionDefinition Declaration FunctionDefinition Declaration AccessSpecifier UnionSpecifier ClassSpecifier EnumSpecifier SizedTypeSpecifier TypeSize EnumeratorList Enumerator DependentType Decltype decltype auto PlaceholderTypeSpecifier ParameterPackExpansion ParameterPackExpansion FieldIdentifier PointerExpression SubscriptExpression BinaryExpression ArithOp LogicOp LogicOp BitOp UnaryExpression LogicOp BitOp UpdateExpression CastExpression SizeofExpression sizeof CoAwaitExpression CompoundLiteralExpression NULL NewExpression new NewDeclarator DeleteExpression delete ParameterPackExpansion nullptr this UserDefinedLiteral ParamPack #define PreprocArg #if #ifdef #ifndef #else #endif #elif PreprocDirectiveName Macro Program\",\n maxTerm: 431,\n nodeProps: [\n [\"group\", -35,1,8,11,15,16,17,19,71,72,100,101,102,104,191,208,229,242,243,270,271,272,277,280,281,282,284,285,286,287,290,292,293,294,295,296,\"Expression\",-13,18,25,26,27,43,255,256,257,258,262,263,265,266,\"Type\",-19,126,129,147,150,152,153,158,160,163,164,166,168,170,172,174,176,178,179,188,\"Statement\"],\n [\"isolate\", -3,4,8,10,\"\"],\n [\"openedBy\", 12,\"(\",52,\"{\",54,\"[\"],\n [\"closedBy\", 13,\")\",51,\"}\",53,\"]\"]\n ],\n propSources: [cppHighlighting],\n skippedNodes: [0,3,4,5,6,7,10,297,298,299,300,301,302,303,304,305,306,308,348,349],\n repeatNodeCount: 42,\n tokenData: \"%LSMfR!UOX$eXY({YZ.gZ]$e]^+P^p$epq({qr.}rs0}st2ktu$euv!7dvw!9bwx!;exy!<Yyz!=Tz{!>O{|!?R|}!AV}!O!BQ!O!P!DX!P!Q#+y!Q!R#5[!R![#JY![!]$4w!]!^$6s!^!_$7n!_!`%$h!`!a%%i!a!b%(o!b!c$e!c!n%)j!n!o%+R!o!w%)j!w!x%+R!x!}%)j!}#O%.O#O#P%/w#P#Q%?[#Q#R%AT#R#S%)j#S#T$e#T#i%)j#i#j%BW#j#o%)j#o#p%Cu#p#q%Dp#q#r%Fv#r#s%Gq#s;'S$e;'S;=`(u<%lO$e,j$nY)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e,f%eW)c`'f,UOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^,U&SU'f,UOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%},U&kX'f,UOY%}YZ%}Z]%}]^'W^#O%}#O#P&f#P;'S%};'S;=`'r<%lO%},U']V'f,UOY%}YZ%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%},U'uP;=`<%l%},f'{P;=`<%l%^,Y(VW(vS'f,UOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(O,Y(rP;=`<%l(O,j(xP;=`<%l$eMf)Y`)c`(vS(o<`'f,U*a1pOX$eXY({YZ*[Z]$e]^+P^p$epq({qr$ers%^sw$ewx(Ox#O$e#O#P,^#P;'S$e;'S;=`(u<%lO$e<`*aT(o<`XY*[YZ*[]^*[pq*[#O#P*p<`*sQYZ*[]^*y<`*|PYZ*[Gz+[`)c`(vS(o<`'f,UOX$eXY+PYZ*[Z]$e]^+P^p$epq+Pqr$ers%^sw$ewx(Ox#O$e#O#P,^#P;'S$e;'S;=`(u<%lO$eGf,cX'f,UOY%}YZ-OZ]%}]^-{^#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}Gf-V[(o<`'f,UOX%}XY-OYZ*[Z]%}]^-O^p%}pq-Oq#O%}#O#P,^#P;'S%};'S;=`'r<%lO%}Gf.QV'f,UOY%}YZ-OZ#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}MQ.nT*^1p(o<`XY*[YZ*[]^*[pq*[#O#P*pF`/[[%^#t'QQ)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!_$e!_!`0Q!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`0_Y%]#t!a8O)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eKz1YY)c`(tS(u=j'f,UOY%^Zr%^rs1xsw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^/[2RW*O#t)c`'f,UOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^Gz2tf)c`(vS'f,UOX$eXY2kZp$epq2kqr$ers%^sw$ewx(Ox!c$e!c!}4Y!}#O$e#O#P&f#P#T$e#T#W4Y#W#X5m#X#Y>u#Y#]4Y#]#^NZ#^#o4Y#o;'S$e;'S;=`(u<%lO$eGz4eb)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$eGz5xd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y7W#Y#o4Y#o;'S$e;'S;=`(u<%lO$eGz7cd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z8q#Z#o4Y#o;'S$e;'S;=`(u<%lO$eGz8|d)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#]4Y#]#^:[#^#o4Y#o;'S$e;'S;=`(u<%lO$eGz:gd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#b4Y#b#c;u#c#o4Y#o;'S$e;'S;=`(u<%lO$eGz<Qd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y=`#Y#o4Y#o;'S$e;'S;=`(u<%lO$eGz=mb)c`(vS'e<`'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$eGz?Qf)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#`4Y#`#a@f#a#b4Y#b#cHV#c#o4Y#o;'S$e;'S;=`(u<%lO$eGz@qf)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#]4Y#]#^BV#^#g4Y#g#hEV#h#o4Y#o;'S$e;'S;=`(u<%lO$eGzBbd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#ZCp#Z#o4Y#o;'S$e;'S;=`(u<%lO$eGzC}b)c`(vS'f,U'l<`'m<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$eGzEbd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#YFp#Y#o4Y#o;'S$e;'S;=`(u<%lO$eGzF}b)c`(vS'j<`'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$eGzHbd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#XIp#X#o4Y#o;'S$e;'S;=`(u<%lO$eGzI{d)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#]4Y#]#^KZ#^#o4Y#o;'S$e;'S;=`(u<%lO$eGzKfd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#ZLt#Z#o4Y#o;'S$e;'S;=`(u<%lO$eGzMRb)c`(vS'f,U'k<`'m<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$eGzNff)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z! z#Z#b4Y#b#c!.[#c#o4Y#o;'S$e;'S;=`(u<%lO$eGz!!Xf)c`(vS'g<`'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#X!#m#X#b4Y#b#c!(W#c#o4Y#o;'S$e;'S;=`(u<%lO$eGz!#xd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y!%W#Y#o4Y#o;'S$e;'S;=`(u<%lO$eGz!%cd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z!&q#Z#o4Y#o;'S$e;'S;=`(u<%lO$eGz!'Ob)c`(vS'h<`'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$eGz!(cd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#X!)q#X#o4Y#o;'S$e;'S;=`(u<%lO$eGz!)|d)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y!+[#Y#o4Y#o;'S$e;'S;=`(u<%lO$eGz!+gd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#Y4Y#Y#Z!,u#Z#o4Y#o;'S$e;'S;=`(u<%lO$eGz!-Sb)c`(vS'i<`'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$eGz!.gd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#V4Y#V#W!/u#W#o4Y#o;'S$e;'S;=`(u<%lO$eGz!0Qd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#`4Y#`#a!1`#a#o4Y#o;'S$e;'S;=`(u<%lO$eGz!1kd)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#i4Y#i#j!2y#j#o4Y#o;'S$e;'S;=`(u<%lO$eGz!3Ud)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#W4Y#W#X!4d#X#o4Y#o;'S$e;'S;=`(u<%lO$eGz!4od)c`(vS'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#X4Y#X#Y!5}#Y#o4Y#o;'S$e;'S;=`(u<%lO$eGz!6[b)c`(vSV<`'f,U'm<`OY$eZr$ers%^sw$ewx(Ox!Q$e!Q![4Y![!c$e!c!}4Y!}#O$e#O#P&f#P#R$e#R#S4Y#S#T$e#T#o4Y#o;'S$e;'S;=`(u<%lO$eF`!7q[)c`(vS%Z#t![8O'f,UOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`!8rY!g:t)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`!9o])]8O)c`(vS%[#t'f,UOY$eZr$ers%^sv$evw!:hwx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`!:uY)[8O%^#t)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCb!;pW)aW(vS)b8O'f,UOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(OLS!<eY)c`(vS]Kn'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e-^!=`Y[r)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`!>][)Y8O)c`(vS%Z#t'f,UOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`!?`^)c`(vS%Z#t!Y8O'f,UOY$eZr$ers%^sw$ewx(Ox{$e{|!@[|!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`!@gY)c`!X:t(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCr!AbY!h8W)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`!B__)c`(vS%Z#t!Y8O'f,UOY$eZr$ers%^sw$ewx(Ox}$e}!O!@[!O!_$e!_!`!8g!`!a!C^!a#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`!CiY(}:t)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCr!Dd^)c`(vS'f,U(|8OOY$eZr$ers%^sw$ewx(Ox!O$e!O!P!E`!P!Q$e!Q![!GY![#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCr!Ei[)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!O$e!O!P!F_!P#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCr!FjY)`8W)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCj!Gen)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx!Icx!Q$e!Q![!GY![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eCY!IjY(vS'f,UOY(OZr(Ors%}s!Q(O!Q![!JY![#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(OCY!Jcn(vS!i8O'f,UOY(OZr(Ors%}sw(Owx!Icx!Q(O!Q![!JY![!g(O!g!h!La!h!i##`!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#X(O#X#Y!La#Y#Z##`#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCY!Ljl(vS!i8O'f,UOY(OZr(Ors%}s{(O{|!Nb|}(O}!O!Nb!O!Q(O!Q![# e![!c(O!c!h# e!h!i# e!i!n(O!n!o##`!o!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#Y# e#Y#Z# e#Z#`(O#`#a##`#a#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCY!Ni^(vS'f,UOY(OZr(Ors%}s!Q(O!Q![# e![!c(O!c!i# e!i#O(O#O#P&f#P#T(O#T#Z# e#Z;'S(O;'S;=`(o<%lO(OCY# nj(vS!i8O'f,UOY(OZr(Ors%}sw(Owx!Nbx!Q(O!Q![# e![!c(O!c!h# e!h!i# e!i!n(O!n!o##`!o!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#Y# e#Y#Z# e#Z#`(O#`#a##`#a#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCY##id(vS!i8O'f,UOY(OZr(Ors%}s!h(O!h!i##`!i!n(O!n!o##`!o!w(O!w!x##`!x#O(O#O#P&f#P#Y(O#Y#Z##`#Z#`(O#`#a##`#a#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCj#%Sn)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx(Ox{$e{|#'Q|}$e}!O#'Q!O!Q$e!Q![#(]![!c$e!c!h#(]!h!i#(]!i!n$e!n!o#*Y!o!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#Y#(]#Y#Z#(]#Z#`$e#`#a#*Y#a#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eCj#'Z`)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![#(]![!c$e!c!i#(]!i#O$e#O#P&f#P#T$e#T#Z#(]#Z;'S$e;'S;=`(u<%lO$eCj#(hj)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx!Nbx!Q$e!Q![#(]![!c$e!c!h#(]!h!i#(]!i!n$e!n!o#*Y!o!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#Y#(]#Y#Z#(]#Z#`$e#`#a#*Y#a#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eCj#*ef)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx(Ox!h$e!h!i#*Y!i!n$e!n!o#*Y!o!w$e!w!x#*Y!x#O$e#O#P&f#P#Y$e#Y#Z#*Y#Z#`$e#`#a#*Y#a#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eMf#,W`)c`(vS%Z#t![8O'f,UOY$eZr$ers%^sw$ewx(Oxz$ez{#-Y{!P$e!P!Q#.T!Q!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eMf#-eY)c`(vS(pAz'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eMf#.`Y)c`(vSSAz'f,UOY#.TZr#.Trs#/Osw#.Twx#4]x#O#.T#O#P#0[#P;'S#.T;'S;=`#5U<%lO#.TMb#/XW)c`SAz'f,UOY#/OZw#/Owx#/qx#O#/O#O#P#0[#P;'S#/O;'S;=`#4V<%lO#/OMQ#/xUSAz'f,UOY#/qZ#O#/q#O#P#0[#P;'S#/q;'S;=`#1l<%lO#/qMQ#0cXSAz'f,UOY#/qYZ%}Z]#/q]^#1O^#O#/q#O#P#1r#P;'S#/q;'S;=`#1l<%lO#/qMQ#1VVSAz'f,UOY#/qYZ%}Z#O#/q#O#P#0[#P;'S#/q;'S;=`#1l<%lO#/qMQ#1oP;=`<%l#/qMQ#1y]SAz'f,UOY#/qYZ%}Z]#/q]^#1O^#O#/q#O#P#1r#P#b#/q#b#c#/q#c#f#/q#f#g#2r#g;'S#/q;'S;=`#1l<%lO#/qMQ#2yUSAz'f,UOY#/qZ#O#/q#O#P#3]#P;'S#/q;'S;=`#1l<%lO#/qMQ#3dZSAz'f,UOY#/qYZ%}Z]#/q]^#1O^#O#/q#O#P#1r#P#b#/q#b#c#/q#c;'S#/q;'S;=`#1l<%lO#/qMb#4YP;=`<%l#/OMU#4fW(vSSAz'f,UOY#4]Zr#4]rs#/qs#O#4]#O#P#0[#P;'S#4];'S;=`#5O<%lO#4]MU#5RP;=`<%l#4]Mf#5XP;=`<%l#.TCj#5gt)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx#7wx!O$e!O!P#B}!P!Q$e!Q![#JY![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#U$e#U#V#Li#V#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j#l$e#l#m$0p#m;'S$e;'S;=`(u<%lO$eCY#8OY(vS'f,UOY(OZr(Ors%}s!Q(O!Q![#8n![#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(OCY#8wp(vS!i8O'f,UOY(OZr(Ors%}sw(Owx#7wx!O(O!O!P#:{!P!Q(O!Q![#8n![!g(O!g!h!La!h!i##`!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#X(O#X#Y!La#Y#Z##`#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCY#;Un(vS!i8O'f,UOY(OZr(Ors%}s!Q(O!Q![#=S![!c(O!c!g#=S!g!h#@d!h!i#=S!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X#=S#X#Y#@d#Y#Z#=S#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCY#=]p(vS!i8O'f,UOY(OZr(Ors%}sw(Owx#?ax!Q(O!Q![#=S![!c(O!c!g#=S!g!h#@d!h!i#=S!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X#=S#X#Y#@d#Y#Z#=S#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCY#?h^(vS'f,UOY(OZr(Ors%}s!Q(O!Q![#=S![!c(O!c!i#=S!i#O(O#O#P&f#P#T(O#T#Z#=S#Z;'S(O;'S;=`(o<%lO(OCY#@mt(vS!i8O'f,UOY(OZr(Ors%}sw(Owx#?ax{(O{|!Nb|}(O}!O!Nb!O!Q(O!Q![#=S![!c(O!c!g#=S!g!h#@d!h!i#=S!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X#=S#X#Y#@d#Y#Z#=S#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCj#CYp)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![#E^![!c$e!c!g#E^!g!h#Gm!h!i#E^!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X#E^#X#Y#Gm#Y#Z#E^#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eCj#Eip)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx#?ax!Q$e!Q![#E^![!c$e!c!g#E^!g!h#Gm!h!i#E^!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X#E^#X#Y#Gm#Y#Z#E^#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eCj#Gxt)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx#?ax{$e{|#'Q|}$e}!O#'Q!O!Q$e!Q![#E^![!c$e!c!g#E^!g!h#Gm!h!i#E^!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X#E^#X#Y#Gm#Y#Z#E^#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eCj#Jep)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx#7wx!O$e!O!P#B}!P!Q$e!Q![#JY![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eCj#Lr_)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!O$e!O!P#Mq!P!Q$e!Q!R#Np!R![#JY![#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCj#Mz[)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![!GY![#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCj#N{t)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx#7wx!O$e!O!P#B}!P!Q$e!Q![#JY![!g$e!g!h#$w!h!i#*Y!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#U$e#U#V$#]#V#X$e#X#Y#$w#Y#Z#*Y#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j#l$e#l#m$$[#m;'S$e;'S;=`(u<%lO$eCj$#f[)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![#JY![#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCj$$e`)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![$%g![!c$e!c!i$%g!i#O$e#O#P&f#P#T$e#T#Z$%g#Z;'S$e;'S;=`(u<%lO$eCj$%rr)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx$'|x!O$e!O!P#B}!P!Q$e!Q![$%g![!c$e!c!g$%g!g!h$.Q!h!i$%g!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$%g#X#Y$.Q#Y#Z$%g#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eCY$(T^(vS'f,UOY(OZr(Ors%}s!Q(O!Q![$)P![!c(O!c!i$)P!i#O(O#O#P&f#P#T(O#T#Z$)P#Z;'S(O;'S;=`(o<%lO(OCY$)Yr(vS!i8O'f,UOY(OZr(Ors%}sw(Owx$'|x!O(O!O!P#:{!P!Q(O!Q![$)P![!c(O!c!g$)P!g!h$+d!h!i$)P!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X$)P#X#Y$+d#Y#Z$)P#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCY$+mu(vS!i8O'f,UOY(OZr(Ors%}sw(Owx$'|x{(O{|!Nb|}(O}!O!Nb!O!P#:{!P!Q(O!Q![$)P![!c(O!c!g$)P!g!h$+d!h!i$)P!i!n(O!n!o##`!o!r(O!r!s!La!s!w(O!w!x##`!x#O(O#O#P&f#P#T(O#T#X$)P#X#Y$+d#Y#Z$)P#Z#`(O#`#a##`#a#d(O#d#e!La#e#i(O#i#j##`#j;'S(O;'S;=`(o<%lO(OCj$.]u)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx$'|x{$e{|#'Q|}$e}!O#'Q!O!P#B}!P!Q$e!Q![$%g![!c$e!c!g$%g!g!h$.Q!h!i$%g!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#X$%g#X#Y$.Q#Y#Z$%g#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j;'S$e;'S;=`(u<%lO$eCj$0yc)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!O$e!O!P#Mq!P!Q$e!Q!R$2U!R![$%g![!c$e!c!i$%g!i#O$e#O#P&f#P#T$e#T#Z$%g#Z;'S$e;'S;=`(u<%lO$eCj$2av)c`(vS!i8O'f,UOY$eZr$ers%^sw$ewx$'|x!O$e!O!P#B}!P!Q$e!Q![$%g![!c$e!c!g$%g!g!h$.Q!h!i$%g!i!n$e!n!o#*Y!o!r$e!r!s#$w!s!w$e!w!x#*Y!x#O$e#O#P&f#P#T$e#T#U$%g#U#V$%g#V#X$%g#X#Y$.Q#Y#Z$%g#Z#`$e#`#a#*Y#a#d$e#d#e#$w#e#i$e#i#j#*Y#j#l$e#l#m$$[#m;'S$e;'S;=`(u<%lO$eGz$5S[({9b)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox![$e![!]$5x!]#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eFh$6TYm:|)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eCj$7OY)_8O)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eM^$7{_q8O%]#t)c`(vS'f,UOY$8zYZ$9|Zr$8zrs$:ksw$8zwx$Jax!^$8z!^!_$MX!_!`% f!`!a%#m!a#O$8z#O#P$<r#P;'S$8z;'S;=`$MR<%lO$8z3h$9T])c`(vS'f,UOY$8zYZ$9|Zr$8zrs$:ksw$8zwx$Jax!`$8z!`!a$LU!a#O$8z#O#P$<r#P;'S$8z;'S;=`$MR<%lO$8z!b$:PTO!`$9|!`!a$:`!a;'S$9|;'S;=`$:e<%lO$9|!b$:eO$W!b!b$:hP;=`<%l$9|3d$:rZ)c`'f,UOY$:kYZ$9|Zw$:kwx$;ex!`$:k!`!a$If!a#O$:k#O#P$<r#P;'S$:k;'S;=`$JZ<%lO$:k3S$;jX'f,UOY$;eYZ$9|Z!`$;e!`!a$<V!a#O$;e#O#P$<r#P;'S$;e;'S;=`$AY<%lO$;e3S$<`U$W!bY&j'f,UOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}3S$<w['f,UOY$;eYZ$;eZ]$;e]^$=m^!`$;e!`!a$A`!a#O$;e#O#P$HO#P;'S$;e;'S;=`$Hv;=`<%l$F[<%lO$;e3S$=rX'f,UOY$;eYZ$>_Z!`$;e!`!a$<V!a#O$;e#O#P$<r#P;'S$;e;'S;=`$AY<%lO$;e-h$>dX'f,UOY$>_YZ$9|Z!`$>_!`!a$?P!a#O$>_#O#P$?j#P;'S$>_;'S;=`$AS<%lO$>_-h$?WU$W!b'f,UOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}-h$?oZ'f,UOY$>_YZ$>_Z]$>_]^$@b^!`$>_!`!a$?P!a#O$>_#O#P$?j#P;'S$>_;'S;=`$AS<%lO$>_-h$@gX'f,UOY$>_YZ$>_Z!`$>_!`!a$?P!a#O$>_#O#P$?j#P;'S$>_;'S;=`$AS<%lO$>_-h$AVP;=`<%l$>_3S$A]P;=`<%l$;e3S$AgW$W!b'f,UOY$BPZ!`$BP!`!a$Bn!a#O$BP#O#P$CX#P;'S$BP;'S;=`$Dn<%lO$BP1p$BUW'f,UOY$BPZ!`$BP!`!a$Bn!a#O$BP#O#P$CX#P;'S$BP;'S;=`$Dn<%lO$BP1p$BuUY&j'f,UOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}1p$C^Y'f,UOY$BPYZ$BPZ]$BP]^$C|^#O$BP#O#P$Dt#P;'S$BP;'S;=`$El;=`<%l$F[<%lO$BP1p$DRX'f,UOY$BPYZ%}Z!`$BP!`!a$Bn!a#O$BP#O#P$CX#P;'S$BP;'S;=`$Dn<%lO$BP1p$DqP;=`<%l$BP1p$DyZ'f,UOY$BPYZ%}Z]$BP]^$C|^!`$BP!`!a$Bn!a#O$BP#O#P$CX#P;'S$BP;'S;=`$Dn<%lO$BP1p$EoXOY$F[Z!`$F[!`!a$Fw!a#O$F[#O#P$F|#P;'S$F[;'S;=`$Gx;=`<%l$BP<%lO$F[&j$F_WOY$F[Z!`$F[!`!a$Fw!a#O$F[#O#P$F|#P;'S$F[;'S;=`$Gx<%lO$F[&j$F|OY&j&j$GPRO;'S$F[;'S;=`$GY;=`O$F[&j$G]XOY$F[Z!`$F[!`!a$Fw!a#O$F[#O#P$F|#P;'S$F[;'S;=`$Gx;=`<%l$F[<%lO$F[&j$G{P;=`<%l$F[3S$HTZ'f,UOY$;eYZ$>_Z]$;e]^$=m^!`$;e!`!a$<V!a#O$;e#O#P$<r#P;'S$;e;'S;=`$AY<%lO$;e3S$HyXOY$F[Z!`$F[!`!a$Fw!a#O$F[#O#P$F|#P;'S$F[;'S;=`$Gx;=`<%l$;e<%lO$F[3d$IqW$W!bY&j)c`'f,UOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^3d$J^P;=`<%l$:k3W$JhZ(vS'f,UOY$JaYZ$9|Zr$Jars$;es!`$Ja!`!a$KZ!a#O$Ja#O#P$<r#P;'S$Ja;'S;=`$LO<%lO$Ja3W$KfW$W!bY&j(vS'f,UOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(O3W$LRP;=`<%l$Ja3h$LcY$W!bY&j)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e3h$MUP;=`<%l$8zM^$Mf^)c`(vS%[#t!f8O'f,UOY$8zYZ$9|Zr$8zrs$:ksw$8zwx$Jax!_$8z!_!`$Nb!`!a$LU!a#O$8z#O#P$<r#P;'S$8z;'S;=`$MR<%lO$8zM^$Nm]!g:t)c`(vS'f,UOY$8zYZ$9|Zr$8zrs$:ksw$8zwx$Jax!`$8z!`!a$LU!a#O$8z#O#P$<r#P;'S$8z;'S;=`$MR<%lO$8zM^% s]%]#t!b8O)c`(vS'f,UOY$8zYZ$9|Zr$8zrs$:ksw$8zwx$Jax!`$8z!`!a%!l!a#O$8z#O#P$<r#P;'S$8z;'S;=`$MR<%lO$8zM^%!}Y%]#t!b8O$W!bY&j)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e2U%#xYY&j)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`%$s[)p#v)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!_$e!_!`0Q!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`%%v]%]#t)c`(vS!d8O'f,UOY$eZr$ers%^sw$ewx(Ox!_$e!_!`%&o!`!a%'l!a#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`%&|Y%]#t!b8O)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`%'y[)c`(vS%[#t!f8O'f,UOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e,l%(zY(zQ)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eMf%)yb)c`)OW(vS!R7|(w*t'f,UOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![%)j![!c$e!c!}%)j!}#O$e#O#P&f#P#R$e#R#S%)j#S#T$e#T#o%)j#o;'S$e;'S;=`(u<%lO$eMf%+bb)c`)OW(vS!R7|(w*t'f,UOY$eZr$ers%,jsw$ewx%-]x!Q$e!Q![%)j![!c$e!c!}%)j!}#O$e#O#P&f#P#R$e#R#S%)j#S#T$e#T#o%)j#o;'S$e;'S;=`(u<%lO$eIQ%,sW)c`(u=j'f,UOY%^Zw%^wx%}x#O%^#O#P&f#P;'S%^;'S;=`'x<%lO%^CY%-fW(vS)b8O'f,UOY(OZr(Ors%}s#O(O#O#P&f#P;'S(O;'S;=`(o<%lO(OF`%.ZZ!V:t)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox!}$e!}#O%.|#O#P&f#P;'S$e;'S;=`(u<%lO$e,l%/XY)VQ)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eGz%/|a'f,UOY%1RYZ%1lZ]%1R]^%2k^!Q%1R!Q![%3X![!w%1R!w!x%4i!x#O%1R#O#P%;o#P#i%1R#i#j%8T#j#l%1R#l#m%<c#m;'S%1R;'S;=`%?U<%lO%1R,j%1YUXd'f,UOY%}Z#O%}#O#P&f#P;'S%};'S;=`'r<%lO%}Gz%1u[Xd(o<`'f,UOX%}XY-OYZ*[Z]%}]^-O^p%}pq-Oq#O%}#O#P,^#P;'S%};'S;=`'r<%lO%}Gz%2rVXd'f,UOY%}YZ-OZ#O%}#O#P&f#P;'S%};'S;=`'r<%lO%},j%3`WXd'f,UOY%}Z!Q%}!Q![%3x![#O%}#O#P&f#P;'S%};'S;=`'r<%lO%},j%4PWXd'f,UOY%}Z!Q%}!Q![%1R![#O%}#O#P&f#P;'S%};'S;=`'r<%lO%},j%4n['f,UOY%}Z!Q%}!Q![%5d![!c%}!c!i%5d!i#O%}#O#P&f#P#T%}#T#Z%5d#Z;'S%};'S;=`'r<%lO%},j%5i['f,UOY%}Z!Q%}!Q![%6_![!c%}!c!i%6_!i#O%}#O#P&f#P#T%}#T#Z%6_#Z;'S%};'S;=`'r<%lO%},j%6d['f,UOY%}Z!Q%}!Q![%7Y![!c%}!c!i%7Y!i#O%}#O#P&f#P#T%}#T#Z%7Y#Z;'S%};'S;=`'r<%lO%},j%7_['f,UOY%}Z!Q%}!Q![%8T![!c%}!c!i%8T!i#O%}#O#P&f#P#T%}#T#Z%8T#Z;'S%};'S;=`'r<%lO%},j%8Y['f,UOY%}Z!Q%}!Q![%9O![!c%}!c!i%9O!i#O%}#O#P&f#P#T%}#T#Z%9O#Z;'S%};'S;=`'r<%lO%},j%9T['f,UOY%}Z!Q%}!Q![%9y![!c%}!c!i%9y!i#O%}#O#P&f#P#T%}#T#Z%9y#Z;'S%};'S;=`'r<%lO%},j%:O['f,UOY%}Z!Q%}!Q![%:t![!c%}!c!i%:t!i#O%}#O#P&f#P#T%}#T#Z%:t#Z;'S%};'S;=`'r<%lO%},j%:y['f,UOY%}Z!Q%}!Q![%1R![!c%}!c!i%1R!i#O%}#O#P&f#P#T%}#T#Z%1R#Z;'S%};'S;=`'r<%lO%},j%;vXXd'f,UOY%}YZ%}Z]%}]^'W^#O%}#O#P&f#P;'S%};'S;=`'r<%lO%},j%<h['f,UOY%}Z!Q%}!Q![%=^![!c%}!c!i%=^!i#O%}#O#P&f#P#T%}#T#Z%=^#Z;'S%};'S;=`'r<%lO%},j%=c['f,UOY%}Z!Q%}!Q![%>X![!c%}!c!i%>X!i#O%}#O#P&f#P#T%}#T#Z%>X#Z;'S%};'S;=`'r<%lO%},j%>`[Xd'f,UOY%}Z!Q%}!Q![%>X![!c%}!c!i%>X!i#O%}#O#P&f#P#T%}#T#Z%>X#Z;'S%};'S;=`'r<%lO%},j%?XP;=`<%l%1RCr%?gZ!W7^)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P#Q%@Y#Q;'S$e;'S;=`(u<%lO$e-d%@eY)Ux)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`%Ab[)c`(vS%[#t'f,U!_8OOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eMf%Bgd)c`)OW(vS!R7|(w*t'f,UOY$eZr$ers%,jsw$ewx%-]x!Q$e!Q!Y%)j!Y!Z%+R!Z![%)j![!c$e!c!}%)j!}#O$e#O#P&f#P#R$e#R#S%)j#S#T$e#T#o%)j#o;'S$e;'S;=`(u<%lO$eCj%DQY!T8O)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$eF`%D}^)c`(vS%[#t'f,U!^8OOY$eZr$ers%^sw$ewx(Ox!_$e!_!`!8g!`#O$e#O#P&f#P#p$e#p#q%Ey#q;'S$e;'S;=`(u<%lO$eF`%FWY)Z8O%^#t)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e-^%GRY!Ur)c`(vS'f,UOY$eZr$ers%^sw$ewx(Ox#O$e#O#P&f#P;'S$e;'S;=`(u<%lO$e/j%HOc)c`(vS%[#t'RQ'f,UOX$eXY%IZZp$epq%IZqr$ers%^sw$ewx(Ox!c$e!c!}%Jo!}#O$e#O#P&f#P#R$e#R#S%Jo#S#T$e#T#o%Jo#o;'S$e;'S;=`(u<%lO$e,t%Idc)c`(vS'f,UOX$eXY%IZZp$epq%IZqr$ers%^sw$ewx(Ox!c$e!c!}%Jo!}#O$e#O#P&f#P#R$e#R#S%Jo#S#T$e#T#o%Jo#o;'S$e;'S;=`(u<%lO$e,t%Jzb)c`(vSeY'f,UOY$eZr$ers%^sw$ewx(Ox!Q$e!Q![%Jo![!c$e!c!}%Jo!}#O$e#O#P&f#P#R$e#R#S%Jo#S#T$e#T#o%Jo#o;'S$e;'S;=`(u<%lO$e\",\n tokenizers: [rawString, fallback, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, new LocalTokenGroup(\"j~RQYZXz{^~^O(r~~aP!P!Qd~iO(s~~\", 25, 355)],\n topRules: {\"Program\":[0,307]},\n dynamicPrecedences: {\"17\":1,\"65\":1,\"87\":1,\"94\":1,\"119\":1,\"184\":1,\"187\":-10,\"240\":-10,\"241\":1,\"244\":-1,\"246\":-10,\"247\":1,\"262\":-1,\"267\":2,\"268\":2,\"306\":-10,\"370\":3,\"423\":1,\"424\":3,\"425\":1,\"426\":1},\n specialized: [{term: 361, get: (value) => spec_identifier[value] || -1},{term: 33, get: (value) => spec_[value] || -1},{term: 66, get: (value) => spec_templateArgsEnd[value] || -1},{term: 368, get: (value) => spec_scopedIdentifier[value] || -1}],\n tokenPrec: 24916\n});\n\nexport { parser };\n","import { parser } from '@lezer/cpp';\nimport { LRLanguage, indentNodeProp, continuedIndent, flatIndent, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nA language provider based on the [Lezer C++\nparser](https://github.com/lezer-parser/cpp), extended with\nhighlighting and indentation information.\n*/\nconst cppLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"cpp\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n IfStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|else\\b)/ }),\n TryStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|catch)\\b/ }),\n LabeledStatement: flatIndent,\n CaseStatement: context => context.baseIndent + context.unit,\n BlockComment: () => null,\n CompoundStatement: /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n Statement: /*@__PURE__*/continuedIndent({ except: /^{/ })\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"DeclarationList CompoundStatement EnumeratorList FieldDeclarationList InitializerList\": foldInside,\n BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; }\n })\n ]\n }),\n languageData: {\n commentTokens: { line: \"//\", block: { open: \"/*\", close: \"*/\" } },\n indentOnInput: /^\\s*(?:case |default:|\\{|\\})$/,\n closeBrackets: { stringPrefixes: [\"L\", \"u\", \"U\", \"u8\", \"LR\", \"UR\", \"uR\", \"u8R\", \"R\"] }\n }\n});\n/**\nLanguage support for C++.\n*/\nfunction cpp() {\n return new LanguageSupport(cppLanguage);\n}\n\nexport { cpp, cppLanguage };\n","import { LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\nconst javaHighlighting = styleTags({\n null: tags.null,\n instanceof: tags.operatorKeyword,\n this: tags.self,\n \"new super assert open to with void\": tags.keyword,\n \"class interface extends implements enum var\": tags.definitionKeyword,\n \"module package import\": tags.moduleKeyword,\n \"switch while for if else case default do break continue return try catch finally throw\": tags.controlKeyword,\n [\"requires exports opens uses provides public private protected static transitive abstract final \" +\n \"strictfp synchronized native transient volatile throws\"]: tags.modifier,\n IntegerLiteral: tags.integer,\n FloatingPointLiteral: tags.float,\n \"StringLiteral TextBlock\": tags.string,\n CharacterLiteral: tags.character,\n LineComment: tags.lineComment,\n BlockComment: tags.blockComment,\n BooleanLiteral: tags.bool,\n PrimitiveType: tags.standard(tags.typeName),\n TypeName: tags.typeName,\n Identifier: tags.variableName,\n \"MethodName/Identifier\": tags.function(tags.variableName),\n Definition: tags.definition(tags.variableName),\n ArithOp: tags.arithmeticOperator,\n LogicOp: tags.logicOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n AssignOp: tags.definitionOperator,\n UpdateOp: tags.updateOperator,\n Asterisk: tags.punctuation,\n Label: tags.labelName,\n \"( )\": tags.paren,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace,\n \".\": tags.derefOperator,\n \", ;\": tags.separator\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_identifier = {__proto__:null,true:34, false:34, null:42, void:46, byte:48, short:48, int:48, long:48, char:48, float:48, double:48, boolean:48, extends:62, super:64, class:76, this:78, new:84, public:100, protected:102, private:104, abstract:106, static:108, final:110, strictfp:112, default:114, synchronized:116, native:118, transient:120, volatile:122, throws:150, implements:160, interface:166, enum:176, instanceof:238, open:267, module:269, requires:274, transitive:276, exports:278, to:280, opens:282, uses:284, provides:286, with:288, package:292, import:296, if:308, else:310, while:314, for:318, var:325, assert:332, switch:336, case:342, do:346, break:350, continue:354, return:358, throw:364, try:368, catch:372, finally:380};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"##jQ]QPOOQ$wQPOOO(bQQO'#H^O*iQQO'#CbOOQO'#Cb'#CbO*pQPO'#CaO*xOSO'#CpOOQO'#Hc'#HcOOQO'#Cu'#CuO,eQPO'#D_O-OQQO'#HmOOQO'#Hm'#HmO/gQQO'#HhO/nQQO'#HhOOQO'#Hh'#HhOOQO'#Hg'#HgO1rQPO'#DUO2PQPO'#GnO4wQPO'#D_O5OQPO'#DzO*pQPO'#E[O5qQPO'#E[OOQO'#DV'#DVO7SQQO'#HaO9^QQO'#EeO9eQPO'#EdO9jQPO'#EfOOQO'#Hb'#HbO7jQQO'#HbO:pQQO'#FhO:wQPO'#ExO:|QPO'#E}O:|QPO'#FPOOQO'#Ha'#HaOOQO'#HY'#HYOOQO'#Gh'#GhOOQO'#HX'#HXO<^QPO'#FiOOQO'#HW'#HWOOQO'#Gg'#GgQ]QPOOOOQO'#Hs'#HsO<cQPO'#HsO<hQPO'#D{O<hQPO'#EVO<hQPO'#EQO<pQPO'#HpO=RQQO'#EfO*pQPO'#C`O=ZQPO'#C`O*pQPO'#FcO=`QPO'#FeO=kQPO'#FkO=kQPO'#FnO<hQPO'#FsO=pQPO'#FpO:|QPO'#FwO=kQPO'#FyO]QPO'#GOO=uQPO'#GQO>QQPO'#GSO>]QPO'#GUO=kQPO'#GWO:|QPO'#GXO>dQPO'#GZO?QQQO'#HiO?mQQO'#CuO?tQPO'#HxO@SQPO'#D_O@rQPO'#DpO?wQPO'#DqO@|QPO'#HxOA_QPO'#DpOAgQPO'#IROAlQPO'#E`OOQO'#Hr'#HrOOQO'#Gm'#GmQ$wQPOOOAtQPO'#HsOOQO'#H^'#H^OCsQQO,58{OOQO'#H['#H[OOOO'#Gi'#GiOEfOSO,59[OOQO,59[,59[OOQO'#Hi'#HiOFVQPO,59eOGXQPO,59yOOQO-E:f-E:fO*pQPO,58zOG{QPO,58zO*pQPO,5;}OHQQPO'#DQOHVQPO'#DQOOQO'#Gk'#GkOIVQQO,59jOOQO'#Dm'#DmOJqQPO'#HuOJ{QPO'#DlOKZQPO'#HtOKcQPO,5<_OKhQPO,59^OLRQPO'#CxOOQO,59c,59cOLYQPO,59bOLeQQO'#H^ONgQQO'#CbO!!iQPO'#D_O!#nQQO'#HmO!$OQQO,59pO!$VQPO'#DvO!$eQPO'#H|O!$mQPO,5:`O!$rQPO,5:`O!%YQPO,5;nO!%eQPO'#ITO!%pQPO,5;eO!%uQPO,5=YOOQO-E:l-E:lOOQO,5:f,5:fO!']QPO,5:fO!'dQPO,5:vO?tQPO,5<_O*pQPO,5:vO<hQPO,5:gO<hQPO,5:qO<hQPO,5:lO<hQPO,5<_O!'zQPO,59qO:|QPO,5:}O!(RQPO,5;QO:|QPO,59TO!(aQPO'#DXOOQO,5;O,5;OOOQO'#El'#ElOOQO'#Eo'#EoO:|QPO,5;UO:|QPO,5;UO:|QPO,5;UO:|QPO,5;UO:|QPO,5;UO:|QPO,5;UO:|QPO,5;UO:|QPO,5;UO:|QPO,5;UO:|QPO,5;fOOQO,5;i,5;iOOQO,5<S,5<SO!(hQPO,5;bO!(yQPO,5;dO!(hQPO'#CyO!)QQQO'#HmO!)`QQO,5;kO]QPO,5<TOOQO-E:e-E:eOOQO,5>_,5>_O!*sQPO,5:gO!+RQPO,5:qO!+ZQPO,5:lO!+fQPO,5>[O!$VQPO,5>[O!'iQPO,59UO!+qQQO,58zO!+yQQO,5;}O!,RQQO,5<PO*pQPO,5<PO:|QPO'#DUO]QPO,5<VO]QPO,5<YO!,ZQPO'#FrO]QPO,5<[O]QPO,5<aO!,kQQO,5<cO!,uQPO,5<eO!,zQPO,5<jOOQO'#Fj'#FjOOQO,5<l,5<lO!-PQPO,5<lOOQO,5<n,5<nO!-UQPO,5<nO!-ZQQO,5<pOOQO,5<p,5<pO>gQPO,5<rO!-bQQO,5<sO!-iQPO'#GdO!.oQPO,5<uO>gQPO,5<}O!2mQPO,59jO!2zQPO'#HuO!3RQPO,59xO!3WQPO,5>dO?tQPO,59xO!3cQPO,5:[OAlQPO,5:zO!3kQPO'#DrO?wQPO'#DrO!3vQPO'#HyO!4OQPO,5:]O?tQPO,5>dO!(hQPO,5>dOAgQPO,5>mOOQO,5:[,5:[O!$rQPO'#DtOOQO,5>m,5>mO!4TQPO'#EaOOQO,5:z,5:zO!7UQPO,5:zO!(hQPO'#DxOOQO-E:k-E:kOOQO,5:y,5:yO*pQPO,58}O!7ZQPO'#ChOOQO1G.k1G.kOOOO-E:g-E:gOOQO1G.v1G.vO!+qQQO1G.fO*pQPO1G.fO!7eQQO1G1iOOQO,59l,59lO!7mQPO,59lOOQO-E:i-E:iO!7rQPO,5>aO!8ZQPO,5:WO<hQPO'#GpO!8bQPO,5>`OOQO1G1y1G1yOOQO1G.x1G.xO!8{QPO'#CyO!9kQPO'#HmO!9uQPO'#CzO!:TQPO'#HlO!:]QPO,59dOOQO1G.|1G.|OLYQPO1G.|O!:sQPO,59eO!;QQQO'#H^O!;cQQO'#CbOOQO,5:b,5:bO<hQPO,5:cOOQO,5:a,5:aO!;tQQO,5:aOOQO1G/[1G/[O!;yQPO,5:bO!<[QPO'#GsO!<oQPO,5>hOOQO1G/z1G/zO!<wQPO'#DvO!=YQPO1G/zO!(hQPO'#GqO!=_QPO1G1YO:|QPO1G1YO<hQPO'#GyO!=gQPO,5>oOOQO1G1P1G1POOQO1G0Q1G0QO!=oQPO'#E]OOQO1G0b1G0bO!>`QPO1G1yO!'dQPO1G0bO!*sQPO1G0RO!+RQPO1G0]O!+ZQPO1G0WOOQO1G/]1G/]O!>eQQO1G.pO9eQPO1G0jO*pQPO1G0jO<pQPO'#HpO!@[QQO1G.pOOQO1G.p1G.pO!@aQQO1G0iOOQO1G0l1G0lO!@hQPO1G0lO!@sQQO1G.oO!AZQQO'#HqO!AhQPO,59sO!BzQQO1G0pO!DfQQO1G0pO!DmQQO1G0pO!FUQQO1G0pO!F]QQO1G0pO!GbQQO1G0pO!I]QQO1G0pO!IdQQO1G0pO!IkQQO1G0pO!IuQQO1G1QO!I|QQO'#HmOOQO1G0|1G0|O!KSQQO1G1OOOQO1G1O1G1OOOQO1G1o1G1oO!KjQPO'#D[O!(hQPO'#D|O!(hQPO'#D}OOQO1G0R1G0RO!KqQPO1G0RO!KvQPO1G0RO!LOQPO1G0RO!LZQPO'#EXOOQO1G0]1G0]O!LnQPO1G0]O!LsQPO'#ETO!(hQPO'#ESOOQO1G0W1G0WO!MmQPO1G0WO!MrQPO1G0WO!MzQPO'#EhO!NRQPO'#EhOOQO'#Gx'#GxO!NZQQO1G0mO# }QQO1G3vO9eQPO1G3vO#$PQPO'#FXOOQO1G.f1G.fOOQO1G1i1G1iO#$WQPO1G1kOOQO1G1k1G1kO#$cQQO1G1kO#$kQPO1G1qOOQO1G1t1G1tO+QQPO'#D_O-OQQO,5<bO#(cQPO,5<bO#(tQPO,5<^O#({QPO,5<^OOQO1G1v1G1vOOQO1G1{1G1{OOQO1G1}1G1}O:|QPO1G1}O#,oQPO'#F{OOQO1G2P1G2PO=kQPO1G2UOOQO1G2W1G2WOOQO1G2Y1G2YOOQO1G2[1G2[OOQO1G2^1G2^OOQO1G2_1G2_O#,vQQO'#H^O#-aQQO'#CbO-OQQO'#HmO#-zQQOOO#.hQQO'#EeO#.VQQO'#HbO!$VQPO'#GeO#.oQPO,5=OOOQO'#HQ'#HQO#.wQPO1G2aO#2uQPO'#G]O>gQPO'#GaOOQO1G2a1G2aO#2zQPO1G2iO#6xQPO,5>gOOQO1G/d1G/dOOQO1G4O1G4OO#7ZQPO1G/dOOQO1G/v1G/vOOQO1G0f1G0fO!7UQPO1G0fOOQO,5:^,5:^O!(hQPO'#DsO#7`QPO,5:^O?wQPO'#GrO#7kQPO,5>eOOQO1G/w1G/wOAgQPO'#H{O#7sQPO1G4OO?tQPO1G4OOOQO1G4X1G4XO!#YQPO'#DvO!!iQPO'#D_OOQO,5:{,5:{O#8OQPO,5:{O#8OQPO,5:{O#8VQQO'#HaO#9hQQO'#HbO#9rQQO'#EbO#9}QPO'#EbO#:VQPO'#IOOOQO,5:d,5:dOOQO1G.i1G.iO#:bQQO'#EeO#:rQQO'#H`O#;SQPO'#FTOOQO'#H`'#H`O#;^QPO'#H`O#;{QPO'#IWO#<TQPO,59SOOQO7+$Q7+$QO!+qQQO7+$QOOQO7+'T7+'TOOQO1G/W1G/WO#<YQPO'#DoO#<dQQO'#HvOOQO'#Hv'#HvOOQO1G/r1G/rOOQO,5=[,5=[OOQO-E:n-E:nO#<tQWO,58{O#<{QPO,59fOOQO,59f,59fO!(hQPO'#HoOKmQPO'#GjO#=ZQPO,5>WOOQO1G/O1G/OOOQO7+$h7+$hOOQO1G/{1G/{O#=cQQO1G/{OOQO1G/}1G/}O#=hQPO1G/{OOQO1G/|1G/|O<hQPO1G/}OOQO,5=_,5=_OOQO-E:q-E:qOOQO7+%f7+%fOOQO,5=],5=]OOQO-E:o-E:oO:|QPO7+&tOOQO7+&t7+&tOOQO,5=e,5=eOOQO-E:w-E:wO#=mQPO'#EUO#={QPO'#EUOOQO'#Gw'#GwO#>dQPO,5:wOOQO,5:w,5:wOOQO7+'e7+'eOOQO7+%|7+%|OOQO7+%m7+%mO!KqQPO7+%mO!KvQPO7+%mO!LOQPO7+%mOOQO7+%w7+%wO!LnQPO7+%wOOQO7+%r7+%rO!MmQPO7+%rO!MrQPO7+%rOOQO7+&U7+&UOOQO'#Ee'#EeO9eQPO7+&UO9eQPO,5>[O#?TQPO7+$[OOQO7+&T7+&TOOQO7+&W7+&WO:|QPO'#GlO#?cQPO,5>]OOQO1G/_1G/_O:|QPO7+&lO#?nQQO,59eO#@tQPO,59vOOQO,59v,59vOOQO,5:h,5:hOOQO'#EP'#EPOOQO,5:i,5:iO#@{QPO'#EYO<hQPO'#EYO#A^QPO'#IPO#AiQPO,5:sO?tQPO'#HxO!(hQPO'#HxO#AqQPO'#DpOOQO'#Gu'#GuO#AxQPO,5:oOOQO,5:o,5:oOOQO,5:n,5:nOOQO,5;S,5;SO#BrQQO,5;SO#ByQPO,5;SOOQO-E:v-E:vOOQO7+&X7+&XOOQO7+)b7+)bO#CQQQO7+)bOOQO'#G|'#G|O#DqQPO,5;sOOQO,5;s,5;sO#DxQPO'#FYO*pQPO'#FYO*pQPO'#FYO*pQPO'#FYO#EWQPO7+'VO#E]QPO7+'VOOQO7+'V7+'VO]QPO7+']O#EhQPO1G1|O?tQPO1G1|O#EvQQO1G1xO!(aQPO1G1xO#E}QPO1G1xO#FUQQO7+'iOOQO'#HP'#HPO#F]QPO,5<gOOQO,5<g,5<gO#FdQPO'#HsO:|QPO'#F|O#FlQPO7+'pO#FqQPO,5=PO?tQPO,5=PO#FvQPO1G2jO#HPQPO1G2jOOQO1G2j1G2jOOQO-E;O-E;OOOQO7+'{7+'{O!<[QPO'#G_O>gQPO,5<wOOQO,5<{,5<{O#HXQPO7+(TOOQO7+(T7+(TO#LVQPO1G4ROOQO7+%O7+%OOOQO7+&Q7+&QO#LhQPO,5:_OOQO1G/x1G/xOOQO,5=^,5=^OOQO-E:p-E:pOOQO7+)j7+)jO#LsQPO7+)jO!:bQPO,5:aOOQO1G0g1G0gO#MOQPO1G0gO#MVQPO,59qO#MkQPO,5:|O9eQPO,5:|O!(hQPO'#GtO#MpQPO,5>jO#M{QPO,59TO#NSQPO'#IVO#N[QPO,5;oO*pQPO'#G{O#NaQPO,5>rOOQO1G.n1G.nOOQO<<Gl<<GlO#NiQPO'#HwO#NqQPO,5:ZOOQO1G/Q1G/QOOQO,5>Z,5>ZOOQO,5=U,5=UOOQO-E:h-E:hO#NvQPO7+%gOOQO7+%g7+%gOOQO7+%i7+%iOOQO<<J`<<J`O$ ^QPO'#H^O$ eQPO'#CbO$ lQPO,5:pO$ qQPO,5:xO#=mQPO,5:pOOQO-E:u-E:uOOQO1G0c1G0cOOQO<<IX<<IXO!KqQPO<<IXO!KvQPO<<IXOOQO<<Ic<<IcOOQO<<I^<<I^O!MmQPO<<I^OOQO<<Ip<<IpO$ vQQO<<GvO9eQPO<<IpO*pQPO<<IpOOQO<<Gv<<GvO$#mQQO,5=WOOQO-E:j-E:jO$#zQQO<<JWOOQO1G/b1G/bOOQO,5:t,5:tO$$bQPO,5:tO$$pQPO,5:tO$%RQPO'#GvO$%iQPO,5>kO$%tQPO'#EZOOQO1G0_1G0_O$%{QPO1G0_O?tQPO,5:pOOQO-E:s-E:sOOQO1G0Z1G0ZOOQO1G0n1G0nO$&QQQO1G0nOOQO<<L|<<L|OOQO-E:z-E:zOOQO1G1_1G1_O$&XQQO,5;tOOQO'#G}'#G}O#DxQPO,5;tOOQO'#IX'#IXO$&aQQO,5;tO$&rQQO,5;tOOQO<<Jq<<JqO$&zQPO<<JqOOQO<<Jw<<JwO:|QPO7+'hO$'PQPO7+'hO!(aQPO7+'dO$'_QPO7+'dO$'dQQO7+'dOOQO<<KT<<KTOOQO-E:}-E:}OOQO1G2R1G2ROOQO,5<h,5<hO$'kQQO,5<hOOQO<<K[<<K[O:|QPO1G2kO$'rQPO1G2kOOQO,5=n,5=nOOQO7+(U7+(UO$'wQPO7+(UOOQO-E;Q-E;QO$)fQWO'#HhO$)QQWO'#HhO$)mQPO'#G`O<hQPO,5<yO!$VQPO,5<yOOQO1G2c1G2cOOQO<<Ko<<KoO$*OQPO1G/yOOQO<<MU<<MUOOQO7+&R7+&RO$*ZQPO1G0jO$*fQQO1G0hOOQO1G0h1G0hO$*nQPO1G0hOOQO,5=`,5=`OOQO-E:r-E:rO$*sQQO1G.oOOQO1G1[1G1[O$*}QPO'#GzO$+[QPO,5>qOOQO1G1Z1G1ZO$+dQPO'#FUOOQO,5=g,5=gOOQO-E:y-E:yO$+iQPO'#GoO$+vQPO,5>cOOQO1G/u1G/uOOQO<<IR<<IROOQO1G0[1G0[O$,OQPO1G0dO$,TQPO1G0[O$,YQPO1G0dOOQOAN>sAN>sO!KqQPOAN>sOOQOAN>xAN>xOOQOAN?[AN?[O9eQPOAN?[OOQO1G0`1G0`O$,_QPO1G0`OOQO,5=b,5=bOOQO-E:t-E:tO$,mQPO,5:uOOQO7+%y7+%yOOQO7+&Y7+&YOOQO1G1`1G1`O$,tQQO1G1`OOQO-E:{-E:{O$,|QQO'#IYO$,wQPO1G1`O$&gQPO1G1`O*pQPO1G1`OOQOAN@]AN@]O$-XQQO<<KSO:|QPO<<KSO$-`QPO<<KOOOQO<<KO<<KOO!(aQPO<<KOOOQO1G2S1G2SO$-eQQO7+(VO:|QPO7+(VOOQO<<Kp<<KpP!-iQPO'#HSO!$VQPO'#HRO$-oQPO,5<zO$-zQPO1G2eO<hQPO1G2eO9eQPO7+&SO$.PQPO7+&SOOQO7+&S7+&SOOQO,5=f,5=fOOQO-E:x-E:xO#M{QPO,5;pOOQO,5=Z,5=ZOOQO-E:m-E:mO$.UQPO7+&OOOQO7+%v7+%vO$.dQPO7+&OOOQOG24_G24_OOQOG24vG24vOOQO7+%z7+%zOOQO7+&z7+&zO*pQPO'#HOO$.iQPO,5>tO$.qQPO7+&zO$.vQQO'#IZOOQOAN@nAN@nO$/RQQOAN@nOOQOAN@jAN@jO$/YQPOAN@jO$/_QQO<<KqO$/iQPO,5=mOOQO-E;P-E;POOQO7+(P7+(PO$/zQPO7+(PO$0PQPO<<InOOQO<<In<<InO$0UQPO<<IjOOQO<<Ij<<IjO#M{QPO<<IjO$0UQPO<<IjO$0dQQO,5=jOOQO-E:|-E:|OOQO<<Jf<<JfO$0oQPO,5>uOOQOG26YG26YOOQOG26UG26UOOQO<<Kk<<KkOOQOAN?YAN?YOOQOAN?UAN?UO#M{QPOAN?UO$0wQPOAN?UO$0|QPOAN?UO$1[QPOG24pOOQOG24pG24pO#M{QPOG24pOOQOLD*[LD*[O$1aQPOLD*[OOQO!$'Mv!$'MvO*pQPO'#CaO$1fQQO'#H^O$1yQQO'#CbO!(hQPO'#Cy\",\n stateData: \"$2i~OPOSQOS%yOS~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POv{OwkOz!OO}cO!PvO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO![!`O!]yO!^yO!_yO!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&tdO~Og^Oh^Ov{O}cO!P!mO!SyO!TyO!UyO!VyO!W!pO!XyO!YyO!ZzO!]yO!^yO!_yO!u}O!z|O%}TO&P!cO&R!dO&_!hO&tdO~OWiXW&QXZ&QXuiXu&QX!P&QX!b&QX#]&QX#_&QX#a&QX#b&QX#d&QX#e&QX#f&QX#g&QX#h&QX#i&QX#k&QX#o&QX#r&QX%}iX&PiX&RiX&^&QX&_iX&_&QX&n&QX&viX&v&QX&x!aX~O#p$^X~P&bOWUXW&]XZUXuUXu&]X!PUX!bUX#]UX#_UX#aUX#bUX#dUX#eUX#fUX#gUX#hUX#iUX#kUX#oUX#rUX%}&]X&P&]X&R&]X&^UX&_UX&_&]X&nUX&vUX&v&]X&x!aX~O#p$^X~P(iO&PSO&R!qO~O&W!vO&Y!tO~Og^Oh^O!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO%}TO&P!wO&RWOg!RXh!RX$h!RX&P!RX&R!RX~O#y!|O#z!{O$W!}Ov!RX!u!RX!z!RX&t!RX~P+QOW#XOu#OO%}TO&P#SO&R#SO&v&aX~OW#[Ou&[X%}&[X&P&[X&R&[X&v&[XY&[Xw&[X&n&[X&q&[XZ&[Xq&[X&^&[X!P&[X#_&[X#a&[X#b&[X#d&[X#e&[X#f&[X#g&[X#h&[X#i&[X#k&[X#o&[X#r&[X}&[X!r&[X#p&[Xs&[X|&[X~O&_#YO~P-dO&_&[X~P-dOZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO#fpO#roO#tpO#upO%}TO&XUO~O&P#^O&R#]OY&pP~P/uO%}TOg%bXh%bXv%bX!S%bX!T%bX!U%bX!V%bX!W%bX!X%bX!Y%bX!Z%bX!]%bX!^%bX!_%bX!u%bX!z%bX$h%bX&P%bX&R%bX&t%bX&_%bX~O!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yOg!RXh!RXv!RX!u!RX!z!RX&P!RX&R!RX&t!RX&_!RX~O$h!RX~P3gO|#kO~P]Og^Oh^Ov#pO!u#rO!z#qO&P!wO&RWO&t#oO~O$h#sO~P5VOu#uO&v#vO!P&TX#_&TX#a&TX#b&TX#d&TX#e&TX#f&TX#g&TX#h&TX#i&TX#k&TX#o&TX#r&TX&^&TX&_&TX&n&TX~OW#tOY&TX#p&TXs&TXq&TX|&TX~P5xO!b#wO#]#wOW&UXu&UX!P&UX#_&UX#a&UX#b&UX#d&UX#e&UX#f&UX#g&UX#h&UX#i&UX#k&UX#o&UX#r&UX&^&UX&_&UX&n&UX&v&UXY&UX#p&UXs&UXq&UX|&UX~OZ#XX~P7jOZ#xO~O&v#vO~O#_#|O#a#}O#b$OO#d$QO#e$RO#f$SO#g$TO#h$UO#i$UO#k$YO#o$VO#r$WO&^#zO&_#zO&n#{O~O!P$XO~P9oO&x$ZO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO#fpO#roO#tpO#upO%}TO&P0qO&R0pO&XUO~O#p$_O~O![$aO~O&P#SO&R#SO~Og^Oh^O&P!wO&RWO&_#YO~OW$gO&v#vO~O#z!{O~O!W$kO&PSO&R!qO~OZ$lO~OZ$oO~O!P$vO&P$uO&R$uO~O!P$xO&P$uO&R$uO~O!P${O~P:|OZ%OO}cO~OW&]Xu&]X%}&]X&P&]X&R&]X&_&]X~OZ!aX~P>lOWiXuiX%}iX&PiX&RiX&_iX~OZ!aX~P?XOu#OO%}TO&P#SO&R#SO~O%}TO~P3gOg^Oh^Ov#pO!u#rO!z#qO&_!hO&t#oO~O&P!cO&R!dO~P@ZOg^Oh^O%}TO&P!cO&R!dO~O}cO!P%aO~OZ%bO~O}%dO!m%gO~O}cOg&gXh&gXv&gX!S&gX!T&gX!U&gX!V&gX!W&gX!X&gX!Y&gX!Z&gX!]&gX!^&gX!_&gX!u&gX!z&gX%}&gX&P&gX&R&gX&_&gX&t&gX~OW%jOZ%kOgTahTa%}Ta&PTa&RTa~OvTa!STa!TTa!UTa!VTa!WTa!XTa!YTa!ZTa!]Ta!^Ta!_Ta!uTa!zTa#yTa#zTa$WTa$hTa&tTa&_TauTaYTaqTa|Ta!PTa~PC[O&W%nO&Y!tO~Ou#OO%}TOqma&^maYma&nma!Pma~O&vma}ma!rma~PEnO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!ZzO!]yO!^yO!_yO~Og!Rah!Rav!Ra!u!Ra!z!Ra$h!Ra&P!Ra&R!Ra&t!Ra&_!Ra~PFdO#z%pO~Os%rO~Ou%sO%}TO~Ou#OO%}ra&Pra&Rra&vraYrawra&nra&qra!Pra&^raqra~OWra#_ra#ara#bra#dra#era#fra#gra#hra#ira#kra#ora#rra&_ra#prasra|ra~PH_Ou#OO%}TOq&iX!P&iX!b&iX~OY&iX#p&iX~PJ`O!b%vOq!`X!P!`XY!`X~Oq%wO!P&hX~O!P%yO~Ov%zO~Og^Oh^O%}0oO&P!wO&RWO&b%}O~O&^&`P~PKmO%}TO&P!wO&RWO~OW&QXYiXY!aXY&QXZ&QXq!aXu&QXwiX!b&QX#]&QX#_&QX#a&QX#b&QX#d&QX#e&QX#f&QX#g&QX#h&QX#i&QX#k&QX#o&QX#r&QX&^&QX&_&QX&niX&n&QX&qiX&viX&v&QX&x!aX~P?XOWUXYUXY!aXY&]XZUXq!aXuUXw&]X!bUX#]UX#_UX#aUX#bUX#dUX#eUX#fUX#gUX#hUX#iUX#kUX#oUX#rUX&^UX&_UX&nUX&n&]X&q&]X&vUX&v&]X&x!aX~P>lOg^Oh^O%}TO&P!wO&RWOg!RXh!RX&P!RX&R!RX~PFdOu#OOw&XO%}TO&P&UO&R&TO&q&WO~OW#XOY&aX&n&aX&v&aX~P!#YOY&ZO~P9oOg^Oh^O&P!wO&RWO~Oq&]OY&pX~OY&_O~Og^Oh^O%}TO&P!wO&RWOY&pP~PFdOY&dO&n&bO&v#vO~Oq&eO&x$ZOY&wX~OY&gO~O%}TOg%bah%bav%ba!S%ba!T%ba!U%ba!V%ba!W%ba!X%ba!Y%ba!Z%ba!]%ba!^%ba!_%ba!u%ba!z%ba$h%ba&P%ba&R%ba&t%ba&_%ba~O|&hO~P]O}&iO~Op&uOw&vO&PSO&R!qO&_#YO~Oz&tO~P!'iOz&xO&PSO&R!qO&_#YO~OY&eP~P:|Og^Oh^O%}TO&P!wO&RWO~O}cO~P:|OW#XOu#OO%}TO&v&aX~O#r$WO!P#sa#_#sa#a#sa#b#sa#d#sa#e#sa#f#sa#g#sa#h#sa#i#sa#k#sa#o#sa&^#sa&_#sa&n#saY#sa#p#sas#saq#sa|#sa~Oo'_O}'^O!r'`O&_!hO~O}'eO!r'`O~Oo'iO}'hO&_!hO~OZ#xOu'mO%}TO~OW%jO}'sO~OW%jO!P'uO~OW'vO!P'wO~O$h!WO&P0qO&R0pO!P&eP~P/uO!P(SO#p(TO~P9oO}(UO~O$c(WO~O!P(XO~O!P(YO~O!P(ZO~P9oO!P(]O~P9oOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdO%Q(hO%U(iOZ$}a_$}a`$}aa$}ab$}ac$}ae$}ag$}ah$}ap$}av$}aw$}az$}a}$}a!P$}a!S$}a!T$}a!U$}a!V$}a!W$}a!X$}a!Y$}a!Z$}a![$}a!]$}a!^$}a!_$}a!u$}a!z$}a#f$}a#r$}a#t$}a#u$}a#y$}a#z$}a$W$}a$Y$}a$`$}a$c$}a$e$}a$h$}a$l$}a$n$}a$s$}a$u$}a$w$}a$y$}a$|$}a%O$}a%w$}a%}$}a&P$}a&R$}a&X$}a&t$}a|$}a$a$}a$q$}a~O}ra!rra'Ora~PH_OZ%bO~PJ`O!P(mO~O!m%gO}&la!P&la~O}cO!P(pO~Oo(tOq!fX&^!fX~Oq(vO&^&mX~O&^(xO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op)UOv{Ow)TOz!OO|)PO}cO!PvO![!`O!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&_#YO&tdO~PFdO}%dO~O})]OY&zP~P:|OW%jO!P)dO~Os)eO~Ou#OO%}TOq&ia!P&ia!b&iaY&ia#p&ia~O})fO~P:|Oq%wO!P&ha~Og^Oh^O%}0oO&P!wO&RWO~O&b)mO~P!8jOu#OO%}TOq&aX&^&aXY&aX&n&aX!P&aX~O}&aX!r&aX~P!9SOo)oOp)oOqnX&^nX~Oq)pO&^&`X~O&^)rO~Ou#OOw)tO%}TO&PSO&R!qO~OYma&nma&vma~P!:bOW&QXY!aXq!aXu!aX%}!aX~OWUXY!aXq!aXu!aX%}!aX~OW)wO~Ou#OO%}TO&P#SO&R#SO&q)yO~Og^Oh^O%}TO&P!wO&RWO~PFdOq&]OY&pa~Ou#OO%}TO&P#SO&R#SO&q&WO~OY)|O~OY*PO&n&bO~Oq&eOY&wa~Og^Oh^Ov{O|*XO!u}O%}TO&P!wO&RWO&tdO~PFdO!P*YO~OW^iZ#XXu^i!P^i!b^i#]^i#_^i#a^i#b^i#d^i#e^i#f^i#g^i#h^i#i^i#k^i#o^i#r^i&^^i&_^i&n^i&v^iY^i#p^is^iq^i|^i~OW*iO~Os*jO~P9oOz*kO&PSO&R!qO~O!P]iY]i#p]is]iq]i|]i~P9oOq*lOY&eX!P&eX~P9oOY*nO~O#f$SO#g$TO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#h$UO#i$UO~P!AmO#_#|O#d$QO#e$RO#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO&n#{O!P#^i#b#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#a#^i~P!CUO#a#}O~P!CUO#_#|O#f$SO#g$TO#h$UO#i$UO#k$YO#r$WO&^#zO&_#zO!P#^i#a#^i#b#^i#d#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O&n#^i~P!DtO&n#{O~P!DtO#f$SO#g$TO#k$YO#r$WO!P#^i#a#^i#b#^i#e#^i#o#^iY#^i#p#^is#^iq#^i|#^i~O#_#|O#d$QO#h$UO#i$UO&^#zO&_#zO&n#{O~P!FdO#k$YO#r$WO!P#^i#_#^i#a#^i#b#^i#d#^i#e#^i#f#^i#h#^i#i#^i#o#^i&^#^i&_#^i&n#^iY#^i#p#^is#^iq#^i|#^i~O#g$TO~P!G{O#g#^i~P!G{O#h#^i#i#^i~P!AmO#p*oO~P9oO#_&aX#a&aX#b&aX#d&aX#e&aX#f&aX#g&aX#h&aX#i&aX#k&aX#o&aX#r&aX&_&aX#p&aXs&aX|&aX~P!9SO!P#liY#li#p#lis#liq#li|#li~P9oO|*rO~P$wO}'^O~O}'^O!r'`O~Oo'_O}'^O!r'`O~O%}TO&P#SO&R#SO|&sP!P&sP~PFdO}'eO~Og^Oh^Ov{O|+PO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdO}'hO~Oo'iO}'hO~Os+RO~P:|Ou+TO%}TO~Ou'mO})fO%}TOW#Zi!P#Zi#_#Zi#a#Zi#b#Zi#d#Zi#e#Zi#f#Zi#g#Zi#h#Zi#i#Zi#k#Zi#o#Zi#r#Zi&^#Zi&_#Zi&n#Zi&v#ZiY#Zi#p#Zis#Ziq#Zi|#Zi~O}'^OW&diu&di!P&di#_&di#a&di#b&di#d&di#e&di#f&di#g&di#h&di#i&di#k&di#o&di#r&di&^&di&_&di&n&di&v&diY&di#p&dis&diq&di|&di~O#}+]O$P+^O$R+^O$S+_O$T+`O~O|+[O~P##nO$Z+aO&PSO&R!qO~OW+bO!P+cO~O$a+dOZ$_i_$_i`$_ia$_ib$_ic$_ie$_ig$_ih$_ip$_iv$_iw$_iz$_i}$_i!P$_i!S$_i!T$_i!U$_i!V$_i!W$_i!X$_i!Y$_i!Z$_i![$_i!]$_i!^$_i!_$_i!u$_i!z$_i#f$_i#r$_i#t$_i#u$_i#y$_i#z$_i$W$_i$Y$_i$`$_i$c$_i$e$_i$h$_i$l$_i$n$_i$s$_i$u$_i$w$_i$y$_i$|$_i%O$_i%w$_i%}$_i&P$_i&R$_i&X$_i&t$_i|$_i$q$_i~Og^Oh^O$h#sO&P!wO&RWO~O!P+hO~P:|O!P+iO~OZ`O_VO`VOaVObVOcVOeVOg^Oh^Op!POv{OwkOz!OO}cO!PvO!SyO!TyO!UyO!VyO!WyO!XyO!YyO!Z+nO![!`O!]yO!^yO!_yO!u}O!z|O#fpO#roO#tpO#upO#y!RO#z!QO$W!SO$Y!TO$`!UO$c!VO$e!XO$h!WO$l!YO$n!ZO$q+oO$s![O$u!]O$w!^O$y!_O$|!aO%O!bO%}TO&PRO&RQO&XUO&tdO~O|+mO~P#)QOW&QXY&QXZ&QXu&QX!P&QX&viX&v&QX~P?XOWUXYUXZUXuUX!PUX&vUX&v&]X~P>lOW#tOu#uO&v#vO~OW&UXY%XXu&UX!P%XX&v&UX~OZ#XX~P#.VOY+uO!P+sO~O%Q(hO%U(iOZ$}i_$}i`$}ia$}ib$}ic$}ie$}ig$}ih$}ip$}iv$}iw$}iz$}i}$}i!P$}i!S$}i!T$}i!U$}i!V$}i!W$}i!X$}i!Y$}i!Z$}i![$}i!]$}i!^$}i!_$}i!u$}i!z$}i#f$}i#r$}i#t$}i#u$}i#y$}i#z$}i$W$}i$Y$}i$`$}i$c$}i$e$}i$h$}i$l$}i$n$}i$s$}i$u$}i$w$}i$y$}i$|$}i%O$}i%w$}i%}$}i&P$}i&R$}i&X$}i&t$}i|$}i$a$}i$q$}i~OZ+xO~O%Q(hO%U(iOZ%Vi_%Vi`%Via%Vib%Vic%Vie%Vig%Vih%Vip%Viv%Viw%Viz%Vi}%Vi!P%Vi!S%Vi!T%Vi!U%Vi!V%Vi!W%Vi!X%Vi!Y%Vi!Z%Vi![%Vi!]%Vi!^%Vi!_%Vi!u%Vi!z%Vi#f%Vi#r%Vi#t%Vi#u%Vi#y%Vi#z%Vi$W%Vi$Y%Vi$`%Vi$c%Vi$e%Vi$h%Vi$l%Vi$n%Vi$s%Vi$u%Vi$w%Vi$y%Vi$|%Vi%O%Vi%w%Vi%}%Vi&P%Vi&R%Vi&X%Vi&t%Vi|%Vi$a%Vi$q%Vi~Ou#OO%}TO}&oa!P&oa!m&oa~O!P,OO~Oo(tOq!fa&^!fa~Oq(vO&^&ma~O!m%gO}&li!P&li~O|,XO~P]OW,ZO~P5xOW&UXu&UX#_&UX#a&UX#b&UX#d&UX#e&UX#f&UX#g&UX#h&UX#i&UX#k&UX#o&UX#r&UX&^&UX&_&UX&n&UX&v&UX~OZ#xO!P&UX~P#8^OW$gOZ#xO&v#vO~Op,]Ow,]O~Oq,^O}&rX!P&rX~O!b,`O#]#wOY&UXZ#XX~P#8^OY&SXq&SX|&SX!P&SX~P9oO})]O|&yP~P:|OY&SXg%[Xh%[X%}%[X&P%[X&R%[Xq&SX|&SX!P&SX~Oq,cOY&zX~OY,eO~O})fO|&kP~P:|Oq&jX!P&jX|&jXY&jX~P9oO&bTa~PC[Oo)oOp)oOqna&^na~Oq)pO&^&`a~OW,mO~Ow,nO~Ou#OO%}TO&P,rO&R,qO~Og^Oh^Ov#pO!u#rO&P!wO&RWO&t#oO~Og^Oh^Ov{O|,wO!u}O%}TO&P!wO&RWO&tdO~PFdOw-SO&PSO&R!qO&_#YO~Oq*lOY&ea!P&ea~O#_ma#ama#bma#dma#ema#fma#gma#hma#ima#kma#oma#rma&_ma#pmasma|ma~PEnO|-WO~P$wOZ#xO}'^Oq!|X|!|X!P!|X~Oq-[O|&sX!P&sX~O|-_O!P-^O~O&_!hO~P5VOg^Oh^Ov{O|-cO!P*}O!u}O!z|O%}TO&P!wO&RWO&_!hO&tdO~PFdOs-dO~P9oOs-dO~P:|O}'^OW&dqu&dq!P&dq#_&dq#a&dq#b&dq#d&dq#e&dq#f&dq#g&dq#h&dq#i&dq#k&dq#o&dq#r&dq&^&dq&_&dq&n&dq&v&dqY&dq#p&dqs&dqq&dq|&dq~O|-hO~P##nO!W-lO$O-lO&PSO&R!qO~O!P-oO~O$Z-pO&PSO&R!qO~O!b%vO#p-rOq!`X!P!`X~O!P-tO~P9oO!P-tO~P:|O!P-wO~P9oO|-yO~P#)QO![$aO#p-zO~O!P-|O~O!b-}O~OY.QOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOY.QO!P.RO~O%Q(hO%U(iOZ%Vq_%Vq`%Vqa%Vqb%Vqc%Vqe%Vqg%Vqh%Vqp%Vqv%Vqw%Vqz%Vq}%Vq!P%Vq!S%Vq!T%Vq!U%Vq!V%Vq!W%Vq!X%Vq!Y%Vq!Z%Vq![%Vq!]%Vq!^%Vq!_%Vq!u%Vq!z%Vq#f%Vq#r%Vq#t%Vq#u%Vq#y%Vq#z%Vq$W%Vq$Y%Vq$`%Vq$c%Vq$e%Vq$h%Vq$l%Vq$n%Vq$s%Vq$u%Vq$w%Vq$y%Vq$|%Vq%O%Vq%w%Vq%}%Vq&P%Vq&R%Vq&X%Vq&t%Vq|%Vq$a%Vq$q%Vq~Ou#OO%}TO}&oi!P&oi!m&oi~O&n&bOq!ga&^!ga~O!m%gO}&lq!P&lq~O|.^O~P]Op.`Ow&vOz&tO&PSO&R!qO&_#YO~O!P.aO~Oq,^O}&ra!P&ra~O})]O~P:|Oq.gO|&yX~O|.iO~Oq,cOY&za~Oq.mO|&kX~O|.oO~Ow.pO~Oq!aXu!aX!P!aX!b!aX%}!aX~OZ&QX~P#N{OZUX~P#N{O!P.qO~OZ.rO~OW^yZ#XXu^y!P^y!b^y#]^y#_^y#a^y#b^y#d^y#e^y#f^y#g^y#h^y#i^y#k^y#o^y#r^y&^^y&_^y&n^y&v^yY^y#p^ys^yq^y|^y~OY%`aq%`a!P%`a~P9oO!P#nyY#ny#p#nys#nyq#ny|#ny~P9oO}'^Oq!|a|!|a!P!|a~OZ#xO}'^Oq!|a|!|a!P!|a~O%}TO&P#SO&R#SOq%jX|%jX!P%jX~PFdOq-[O|&sa!P&sa~O|!}X~P$wO|/PO~Os/QO~P9oOW%jO!P/RO~OW%jO$Q/WO&PSO&R!qO!P&|P~OW%jO$U/XO~O!P/YO~O!b%vO#p/[Oq!`X!P!`X~OY/^O~O!P/_O~P9oO#p/`O~P9oO!b/bO~OY/cOZ$lO_VO`VOaVObVOcVOeVOg^Oh^Op!POwkOz!OO%}TO&P(_O&R(^O&XUO~PFdOW#[Ou&[X%}&[X&P&[X&R&[X'O&[X~O&_#YO~P$)QOu#OO%}TO'O/eO&P%SX&R%SX~O&n&bOq!gi&^!gi~Op/iO&PSO&R!qO~OW*iOZ#xO~O!P/kO~OY&SXq&SX~P9oO})]Oq%nX|%nX~P:|Oq.gO|&ya~O!b/nO~O})fOq%cX|%cX~P:|Oq.mO|&ka~OY/qO~O!P/rO~OZ/sO~O}'^Oq!|i|!|i!P!|i~O|!}a~P$wOW%jO!P/wO~OW%jOq/xO!P&|X~OY/|O~P9oOY0OO~OY%Xq!P%Xq~P9oO'O/eO&P%Sa&R%Sa~OY0TO~O!P0WO~Ou#OO!P0YO!Z0ZO%}TO~OY0[O~Oq/xO!P&|a~O!P0_O~OW%jOq/xO!P&}X~OY0aO~P9oOY0bO~OY%Xy!P%Xy~P9oOu#OO%}TO&P%ua&R%ua'O%ua~OY0cO~O!P0dO~Ou#OO!P0eO!Z0fO%}TO~OW%jOq%ra!P%ra~Oq/xO!P&}a~O!P0jO~Ou#OO!P0jO!Z0kO%}TO~O!P0lO~O!P0nO~O#p&QXY&QXs&QXq&QX|&QX~P&bO#pUXYUXsUXqUX|UX~P(iO`Q_P#g%y&P&Xc&X~\",\n goto: \"#+S'OPPPP'P'd*x.OP'dPP.d.h0PPPPPP1nP3ZPP4v7l:[<z=d?[PPP?bPA{PPPBu3ZPDqPPElPFcFkPPPPPPPPPPPPGvH_PKjKrLOLjLpLvNiNmNmNuP! U!!^!#R!#]P!#r!!^P!#x!$S!!y!$cP!%S!%^!%d!!^!%g!%mFcFc!%q!%{!&O3Z!'m3Z3Z!)iP.hP!)mPP!*_PPPPPP.hP.h!+O.hPP.hP.hPP.h!,g!,qPP!,w!-QPPPPPPPP'PP'PPP!-U!-U!-i!-UPP!-UP!-UP!.S!.VP!-U!.m!-UP!-UP!.p!.sP!-UP!-UP!-UP!-UP!-U!-UP!-UP!.wP!.}!/Q!/WP!-U!/d!/gP!/o!0R!4T!4Z!4a!5g!5m!5{!7R!7X!7_!7i!7o!7u!7{!8R!8X!8_!8e!8k!8q!8w!8}!9T!9_!9e!9o!9uPPP!9{!-U!:pP!>WP!?[P!Ap!BW!E]3ZPPP!F|!Jm!MaPP#!P#!SP#$`#$f#&V#&f#&n#'p#(Y#)T#)^#)a#)oP#)r#*OP#*V#*^P#*aP#*lP#*o#*r#*u#*y#+PstOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y'urOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%k%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)])f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,`,u-[-^-a-r-t-}.R.V.g.m/O/[/_/b/d/n/q0R0X0Z0[0f0h0k0r#xhO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kt!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oQ#mdS&Y#`(}Q&l#oU&q#t$g,ZQ&x#vW(b%O+s.R/dU)Y%j'v+bQ)Z%kS)u&S,WU*f&s-R._Q*k&yQ,t*TQ-P*iQ.j,cR.t,uu!sT!Q!S!T!{!}$k%p+]+^+_+`-k-m/W/X/x0oT%l!r)l#{qO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k#zlO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kX(c%O+s.R/d$TVO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k$TkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0k&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rQ&Q#[Q)s&RV.T+x.X/e&O[OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.T+x.X/e&O]OPX`ceopx!O!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s,Y,^,`-^-r-t-}.R.g.m/O/[/_/b/d/n0Z0f0k0rV.U+x.X/eS#Z[.TS$f!O&tS&s#t$gQ&y#vQ)V%dQ-R*iR._,Z$kZO`copx!Y![!_!a#Y#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$_$l$m$n$o$p$q%O%d%g%k%v&b&d'_'`'i'm(O(T(U(t)Q)R)])f)o)p*P*l*o+T+d+h+i+l+o+s,Y,^,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ&O#YR,k)p&P_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0r!o#QY!e!x#R#T#`#n$]%R%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0h$SkO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ$m!UQ$n!VQ$s!ZQ$|!`R+p(WQ#yiS'q$e*hQ*e&rQ+X'rS,[)T)UQ-O*gQ-Y*vQ.b,]Q.x-QQ.{-ZQ/j.`Q/u.yR0V/iQ'a$bW*[&m'b'c'dQ+W'qU,x*]*^*_Q-X*vQ-f+XS.u,y,zS.z-Y-ZQ/t.vR/v.{]!mP!o'^*q-^/OreOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!gP!o'^*q-^/OW#b`#e%b&]Q'}$oW(d%O+s.R/dS*U&i*WS*w'e-[S*|'h+OR.X+xh#VY!W!e#n#s%V'|*T*z+f,u-aQ)j%wQ)v&WR,o)y#xnOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k^!kP!g!o'^*q-^/Ov#TY!W#`#n#s%w&W&[&`'|(`(})y*T+f+r,u.W/hQ#g`Q$b{Q$c|Q$d}W%S!e%V*z-aS%Y!h(vQ%`!iQ&m#pQ&n#qQ&o#rQ(u%ZS(y%^({Q*R&eS*v'e-[R-Z*wU)h%v)f.mR+V'p[!mP!o'^*q-^/OT*}'h+O^!iP!g!o'^*q-^/OQ'd$bQ'l$dQ*_&mQ*d&oV*{'h*|+OQ%[!hR,S(vQ(s%YR,R(u#znO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%c!kS(l%S(yR(|%`T#e`%bU#c`#e%bR)z&]Q%f!lQ(n%UQ(r%XQ,U(zR.],VrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OQ%P!bQ%a!jQ%i!pQ'[$ZQ([$|Q(k%QQ(p%WQ+z(iR.Y+yrtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OS*V&i*WT*}'h+OQ'c$bS*^&m'dR,z*_Q'b$bQ'g$cU*]&m'c'dQ*a&nS,y*^*_R.v,zQ*u'`R+Q'iQ'k$dS*c&o'lR,}*dQ'j$dU*b&o'k'lS,|*c*dR.w,}rtOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!mP!o'^*q-^/OT*}'h+OQ'f$cS*`&n'gR,{*aQ*x'eR.|-[R-`*yQ&j#mR*Z&lT*V&i*WQ%e!lS(q%X%fR,P(rR)R%dWk%O+s.R/d#{lO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0k$SiO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kU&r#t$g,ZS*g&s._Q-Q*iR.y-RT'o$e'p!_#|m#a$r$z$}&w&z&{'O'P'Q'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q!]$Pm#a$r$z$}&w&z&{'O'P'R'S'W'Z)[)g+S+g+j-T-V-e-v-{.e/Z/a/}0Q#{nO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0ka)^%k)],`.g/n0Z0f0kQ)`%kR.k,cQ't$hQ)b%oR,f)cT+Y's+ZsvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YruOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YQ$w!]R$y!^R$p!XrvOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YR(O$oR$q!XR(V$sT+k(U+lX(f%P(g(k+{R+y(hQ.W+xR/h.XQ(j%PQ+w(gQ+|(kR.Z+{R%Q!bQ(e%OV.P+s.R/dQxOQ#lcW$`x#l)Q,YQ)Q%dR,Y)RrXOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Yn!fP!o#e&]&i'^'e'h*W*q+O+x-[-^/Ol!zX!f#P#_#i$[%Z%_%{&R'n'{)O0r!j#PY!e!x#T#`#n$]%S%V%^%u%|&S&[&`'X'|(`(l({(}*T*p*z+f+r+},W,u-a.V/q0R0X0[0hQ#_`Q#ia#d$[op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%g%k%v&b&d'_'`'i'm(O(T(t)])f)o*P*l*o+T+h+i+o,^,`-r-t-}.g.m/[/_/b/n0Z0f0kS%Z!h(vS%_!i*{S%{#Y)pQ&R#[S'n$e'pY'{$o%O+s.R/dQ)O%bR0r$YQ!uUR%m!uQ)q&OR,l)q^#RY#`$]'X'|(`*px%R!e!x#n%V%^%|&S&[&`({(}*T*z+f+r,W,u-a.V0R[%t#R%R%u+}0X0hS%u#T%SQ+}(lQ0X/qR0h0[Q*m&{R-U*mQ!oPU%h!o*q/OQ*q'^R/O-^!pbOP`cx![!o#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h(U)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dY!yX!f#_'{)OT#jb!yQ.n,gR/p.nQ%x#VR)k%xQ&c#fS*O&c.[R.[,QQ(w%[R,T(wQ&^#cR){&^Q,_)WR.d,_Q+O'hR-b+OQ-]*xR.}-]Q*W&iR,v*WQ'p$eR+U'pQ&f#gR*S&fQ.h,aR/m.hQ,d)`R.l,dQ+Z'sR-g+ZQ-k+]R/T-kQ/y/US0^/y0`R0`/{Q+l(UR-x+lQ(g%PS+v(g+{R+{(kQ/f.VR0S/fQ+t(eR.S+t`wOcx#l%d)Q)R,YQ$t![Q']$_Q'y$mQ'z$nQ(Q$pQ(R$qS+k(U+lR-q+d'dsOPXY`acopx!Y![!_!a!e!f!h!i!o!x#P#T#Y#[#_#`#e#i#l#n#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$]$_$e$l$m$n$o$p$q%O%S%V%Z%^%_%b%d%g%u%v%{%|&R&S&[&]&`&b&d&i'X'^'_'`'e'h'i'm'n'p'{'|(O(T(U(`(l(t(v({(})O)Q)R)f)o)p*P*T*W*l*o*p*q*z*{+O+T+d+f+h+i+l+o+r+s+x+},W,Y,^,u-[-^-a-r-t-}.R.V.m/O/[/_/b/d/q0R0X0[0h0ra)_%k)],`.g/n0Z0f0kQ!rTQ$h!QQ$i!SQ$j!TQ%o!{Q%q!}Q'x$kQ)c%pQ)l0oS-i+]+_Q-m+^Q-n+`Q/S-kS/U-m/WQ/{/XR0]/x%uSOT`cdopx!Q!S!T!Y![!_!a!{!}#`#l#o#t#u#v#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$g$k$l$m$n$o$p$q%O%d%j%k%p%v&S&d&s&y'm'v(O(T(U(})Q)R)])f*P*T*i*l*o+T+]+^+_+`+b+d+h+i+l+o+s,W,Y,Z,`,c,u-R-k-m-r-t-}.R._.g.m/W/X/[/_/b/d/n/x0Z0f0k0oQ)a%kQ,a)]S.f,`/nQ/l.gQ0g0ZQ0i0fR0m0krmOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,YS#a`$lQ$WoQ$^pQ$r!YQ$z!_Q$}!aQ&w#uQ&z#wY&{#x$o+h-t/_Q&}#|Q'O#}Q'P$OQ'Q$PQ'R$QQ'S$RQ'T$SQ'U$TQ'V$UQ'W$VQ'Z$Z^)[%k)].g/n0Z0f0kU)g%v)f.mQ*Q&dQ+S'mQ+g(OQ+j(TQ,p*PQ-T*lQ-V*oQ-e+TQ-v+iQ-{+oQ.e,`Q/Z-rQ/a-}Q/}/[R0Q/b#xgO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o,Y,`-r-t-}.g.m/[/_/b/n0Z0f0kW(a%O+s.R/dR)S%drYOcx![#l$_$m$n$p$q%d(U)Q)R+d+l,Y[!eP!o'^*q-^/OW!xX$[%{'{Q#``Q#ne#S$]op!Y!_!a#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$l%k%v&d'm(O(T)])f*P*l*o+T+h+i+o,`-r-t-}.g.m/[/_/b/n0Z0f0kQ%V!gS%^!i*{d%|#Y%g&b'_'`'i(t)o)p,^Q&S#_Q&[#bS&`#e&]Q'X$YQ'|$oW(`%O+s.R/dQ({%_Q(}%bS*T&i*WQ*p0rS*z'h+OQ+f'}Q+r(dQ,W)OQ,u*UQ-a*|S.V+x.XR0R/e&O_OPX`ceopx!Y![!_!a!g!i!o#Y#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$l$m$n$o$p$q%O%_%b%d%g%k%v%{&]&b&d&i'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rQ$e!OQ'r$fR*h&t&ZWOPX`ceopx!O!Y![!_!a!g!i!o#Y#[#_#b#e#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Y$Z$[$_$f$l$m$n$o$p$q%O%_%b%d%g%k%v%{&R&]&b&d&i&t'^'_'`'h'i'm'{'}(O(T(U(d(t)O)Q)R)])f)o)p*P*U*W*l*o*q*{*|+O+T+d+h+i+l+o+s+x,Y,^,`-^-r-t-}.R.X.g.m/O/[/_/b/d/e/n0Z0f0k0rR&P#Y$QjOcopx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kQ#f`Q&O#YQ'Y$YU)W%g'`'iQ)}&bQ*s'_Q,Q(tQ,j)oQ,k)pR.c,^Q)n%}R,i)m$SfO`copx!Y![!_!a#l#u#w#x#|#}$O$P$Q$R$S$T$U$V$Z$_$l$m$n$o$p$q%O%d%k%v&d'm(O(T(U)Q)R)])f*P*l*o+T+d+h+i+l+o+s,Y,`-r-t-}.R.g.m/[/_/b/d/n0Z0f0kT&p#t,ZQ&|#xQ(P$oQ-u+hQ/]-tR0P/_]!nP!o'^*q-^/O#PaOPX`bcx![!f!o!y#_#e#l$_$m$n$o$p$q%O%b%d&]&i'^'e'h'{(U)O)Q)R*W*q+O+d+l+s+x,Y-[-^.R/O/dU#WY!W'|Q%T!eU&k#n#s+fQ(o%VS,s*T*zT.s,u-aj#UY!W!e#n#s%V%w&W)y*T*z,u-aU&V#`&`(}Q)x&[Q+e'|Q+q(`Q-s+fQ.O+rQ/g.WR0U/hQ)i%vQ,g)fR/o.mR,h)f`!jP!o'^'h*q+O-^/OT%W!g*|R%]!hW%U!e%V*z-aQ(z%^R,V({S#d`%bR&a#eQ)X%gT*t'`'iR*y'e[!lP!o'^*q-^/OR%X!gR#h`R,b)]R)a%kT-j+]-kQ/V-mR/z/WR/z/X\",\n nodeNames: \"⚠ LineComment BlockComment Program ModuleDeclaration MarkerAnnotation Identifier ScopedIdentifier . Annotation ) ( AnnotationArgumentList AssignmentExpression FieldAccess IntegerLiteral FloatingPointLiteral BooleanLiteral CharacterLiteral StringLiteral TextBlock null ClassLiteral void PrimitiveType TypeName ScopedTypeName GenericType TypeArguments AnnotatedType Wildcard extends super , ArrayType ] Dimension [ class this ParenthesizedExpression ObjectCreationExpression new ArgumentList } { ClassBody ; FieldDeclaration Modifiers public protected private abstract static final strictfp default synchronized native transient volatile VariableDeclarator Definition AssignOp ArrayInitializer MethodDeclaration TypeParameters TypeParameter TypeBound FormalParameters ReceiverParameter FormalParameter SpreadParameter Throws throws Block ClassDeclaration Superclass SuperInterfaces implements InterfaceTypeList InterfaceDeclaration interface ExtendsInterfaces InterfaceBody ConstantDeclaration EnumDeclaration enum EnumBody EnumConstant EnumBodyDeclarations AnnotationTypeDeclaration AnnotationTypeBody AnnotationTypeElementDeclaration StaticInitializer ConstructorDeclaration ConstructorBody ExplicitConstructorInvocation ArrayAccess MethodInvocation MethodName MethodReference ArrayCreationExpression Dimension AssignOp BinaryExpression CompareOp CompareOp LogicOp LogicOp BitOp BitOp BitOp ArithOp ArithOp ArithOp BitOp InstanceofExpression instanceof LambdaExpression InferredParameters TernaryExpression LogicOp : UpdateExpression UpdateOp UnaryExpression LogicOp BitOp CastExpression ElementValueArrayInitializer ElementValuePair open module ModuleBody ModuleDirective requires transitive exports to opens uses provides with PackageDeclaration package ImportDeclaration import Asterisk ExpressionStatement LabeledStatement Label IfStatement if else WhileStatement while ForStatement for ForSpec LocalVariableDeclaration var EnhancedForStatement ForSpec AssertStatement assert SwitchStatement switch SwitchBlock SwitchLabel case DoStatement do BreakStatement break ContinueStatement continue ReturnStatement return SynchronizedStatement ThrowStatement throw TryStatement try CatchClause catch CatchFormalParameter CatchType FinallyClause finally TryWithResourcesStatement ResourceSpecification Resource ClassContent\",\n maxTerm: 276,\n nodeProps: [\n [\"isolate\", -4,1,2,18,19,\"\"],\n [\"group\", -26,4,47,76,77,82,87,92,145,147,150,151,153,156,158,161,163,165,167,172,174,176,178,180,181,183,191,\"Statement\",-25,6,13,14,15,16,17,18,19,20,21,22,39,40,41,99,100,102,103,106,118,120,122,125,127,130,\"Expression\",-7,23,24,25,26,27,29,34,\"Type\"],\n [\"openedBy\", 10,\"(\",44,\"{\"],\n [\"closedBy\", 11,\")\",45,\"}\"]\n ],\n propSources: [javaHighlighting],\n skippedNodes: [0,1,2],\n repeatNodeCount: 28,\n tokenData: \"#'f_R!_OX%QXY'fYZ)bZ^'f^p%Qpq'fqr*|rs,^st%Qtu4euv5zvw7[wx8rxyAZyzAwz{Be{|CZ|}Dq}!OE_!O!PFx!P!Q! r!Q!R!,h!R![!0`![!]!>p!]!^!@Q!^!_!@n!_!`!BX!`!a!B{!a!b!Di!b!c!EX!c!}!LT!}#O!Mj#O#P%Q#P#Q!NW#Q#R!Nt#R#S4e#S#T%Q#T#o4e#o#p# h#p#q#!U#q#r##n#r#s#$[#s#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4eS%VV&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS%qO&YSS%tVOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZS&^VOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QS&vP;=`<%l%QS&|UOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZS'cP;=`<%l&Z_'mk&YS%yZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qs#y%Q#y#z'f#z$f%Q$f$g'f$g#BY%Q#BY#BZ'f#BZ$IS%Q$IS$I_'f$I_$I|%Q$I|$JO'f$JO$JT%Q$JT$JU'f$JU$KV%Q$KV$KW'f$KW&FU%Q&FU&FV'f&FV;'S%Q;'S;=`&s<%lO%Q_)iY&YS%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XZ*^Y%yZX^*Xpq*X#y#z*X$f$g*X#BY#BZ*X$IS$I_*X$I|$JO*X$JT$JU*X$KV$KW*X&FU&FV*XV+TX#tP&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QU+wV#_Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT,aXOY,|YZ%lZr,|rs3Ys#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T-PXOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT-qX&YSOY-lYZ%lZr-lrs.^s#O-l#O#P.x#P;'S-l;'S;=`2|<%lO-lT.cVcPOY&ZYZ%lZr&Zrs&ys;'S&Z;'S;=`'`<%lO&ZT.}V&YSOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT/iW&YSOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0UWOY0RZr0Rrs0ns#O0R#O#P0s#P;'S0R;'S;=`1V<%lO0RP0sOcPP0vTOY0RYZ0RZ;'S0R;'S;=`1V<%lO0RP1YP;=`<%l0RT1`XOY,|YZ%lZr,|rs1{s#O,|#O#P2d#P;'S,|;'S;=`3S<%lO,|T2QUcPOY&ZYZ%lZr&Zs;'S&Z;'S;=`'`<%lO&ZT2gVOY-lYZ/dZr-lrs1]s;'S-l;'S;=`2|<%lO-lT3PP;=`<%l-lT3VP;=`<%l,|T3_VcPOY&ZYZ%lZr&Zrs3ts;'S&Z;'S;=`'`<%lO&ZT3yR&WSXY4SYZ4`pq4SP4VRXY4SYZ4`pq4SP4eO&XP_4lb&YS&PZOY%QYZ%lZr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o$g%Q$g;'S4e;'S;=`5t<%lO4e_5wP;=`<%l4eU6RX#hQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU6uV#]Q&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV7cZ&nR&YSOY%QYZ%lZr%Qrs%qsv%Qvw8Uw!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QU8]V#aQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT8wZ&YSOY9jYZ%lZr9jrs:xsw9jwx%Qx#O9j#O#P<S#P;'S9j;'S;=`AT<%lO9jT9oX&YSOY%QYZ%lZr%Qrs%qsw%Qwx:[x;'S%Q;'S;=`&s<%lO%QT:cVbP&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT:{XOY&ZYZ%lZr&Zrs&ysw&Zwx;hx;'S&Z;'S;=`'`<%lO&ZT;mVbPOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT<XZ&YSOY<zYZ%lZr<zrs=rsw<zwx9jx#O<z#O#P9j#P;'S<z;'S;=`?^<%lO<zT=PZ&YSOY<zYZ%lZr<zrs=rsw<zwx:[x#O<z#O#P%Q#P;'S<z;'S;=`?^<%lO<zT=uZOY>hYZ%lZr>hrs?dsw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hT>kZOY<zYZ%lZr<zrs=rsw<zwx:[x#O<z#O#P%Q#P;'S<z;'S;=`?^<%lO<zT?aP;=`<%l<zT?gZOY>hYZ%lZr>hrs@Ysw>hwx;hx#O>h#O#P&Z#P;'S>h;'S;=`@}<%lO>hP@]VOY@YZw@Ywx@rx#O@Y#P;'S@Y;'S;=`@w<%lO@YP@wObPP@zP;=`<%l@YTAQP;=`<%l>hTAWP;=`<%l9j_AbVZZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBOVYR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVBnX$ZP&YS#gQOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVCbZ#fR&YSOY%QYZ%lZr%Qrs%qs{%Q{|DT|!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QVD[V#rR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVDxVqR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QVEf[#fR&YSOY%QYZ%lZr%Qrs%qs}%Q}!ODT!O!_%Q!_!`6n!`!aF[!a;'S%Q;'S;=`&s<%lO%QVFcV&xR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_GPZWY&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PGr!P!Q%Q!Q![IQ![;'S%Q;'S;=`&s<%lO%QVGwX&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!PHd!P;'S%Q;'S;=`&s<%lO%QVHkV&qR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTIXc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#R%Q#R#SNz#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTJkV&YS`POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QTKV]&YSOY%QYZ%lZr%Qrs%qs{%Q{|LO|}%Q}!OLO!O!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLTX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![;'S%Q;'S;=`&s<%lO%QTLwc&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![!f%Q!f!gJd!g!h%Q!h!iJd!i#R%Q#R#SNS#S#W%Q#W#XJd#X#Y%Q#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QTNXZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![Lp![#R%Q#R#SNS#S;'S%Q;'S;=`&s<%lO%QT! PZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![#R%Q#R#SNz#S;'S%Q;'S;=`&s<%lO%Q_! y]&YS#gQOY%QYZ%lZr%Qrs%qsz%Qz{!!r{!P%Q!P!Q!)e!Q!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%Q_!!wX&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!#iT&YSOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!#{TOz!#xz{!$[{;'S!#x;'S;=`!$y<%lO!#xZ!$_VOz!#xz{!$[{!P!#x!P!Q!$t!Q;'S!#x;'S;=`!$y<%lO!#xZ!$yOQZZ!$|P;=`<%l!#x_!%SXOY!%oYZ!#dZr!%ors!'ysz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!%rXOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{;'S!!r;'S;=`!'s<%lO!!r_!&dZ&YSOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!'^V&YSQZOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!'vP;=`<%l!!r_!'|XOY!%oYZ!#dZr!%ors!#xsz!%oz{!(i{;'S!%o;'S;=`!)_<%lO!%o_!(lZOY!!rYZ!#dZr!!rrs!%Psz!!rz{!&_{!P!!r!P!Q!'V!Q;'S!!r;'S;=`!'s<%lO!!r_!)bP;=`<%l!%o_!)lV&YSPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!*WVPZOY!*mYZ%lZr!*mrs!+_s;'S!*m;'S;=`!,b<%lO!*m_!*rVPZOY!)eYZ%lZr!)ers!*Rs;'S!)e;'S;=`!+X<%lO!)e_!+[P;=`<%l!)e_!+dVPZOY!*mYZ%lZr!*mrs!+ys;'S!*m;'S;=`!,b<%lO!*mZ!,OSPZOY!+yZ;'S!+y;'S;=`!,[<%lO!+yZ!,_P;=`<%l!+y_!,eP;=`<%l!*mT!,ou&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!d%Q!d!e!3j!e!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o!q%Q!q!r!5h!r!z%Q!z!{!7`!{#R%Q#R#S!2r#S#U%Q#U#V!3j#V#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a#c%Q#c#d!5h#d#l%Q#l#m!7`#m;'S%Q;'S;=`&s<%lO%QT!/Za&YS`POY%QYZ%lZr%Qrs%qs!Q%Q!Q![IQ![!f%Q!f!gJd!g!hKQ!h!iJd!i#W%Q#W#XJd#X#YKQ#Y#ZJd#Z;'S%Q;'S;=`&s<%lO%QT!0gi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!/S!P!Q%Q!Q![!0`![!f%Q!f!gJd!g!hKQ!h!iJd!i!n%Q!n!o!2U!o#R%Q#R#S!2r#S#W%Q#W#XJd#X#YKQ#Y#ZJd#Z#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!2]V&YS_POY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT!2wZ&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!0`![#R%Q#R#S!2r#S;'S%Q;'S;=`&s<%lO%QT!3oY&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S;'S%Q;'S;=`&s<%lO%QT!4f`&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!R!4_!R!S!4_!S!n%Q!n!o!2U!o#R%Q#R#S!3j#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!5mX&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y;'S%Q;'S;=`&s<%lO%QT!6a_&YS_POY%QYZ%lZr%Qrs%qs!Q%Q!Q!Y!6Y!Y!n%Q!n!o!2U!o#R%Q#R#S!5h#S#`%Q#`#a!2U#a;'S%Q;'S;=`&s<%lO%QT!7e_&YSOY%QYZ%lZr%Qrs%qs!O%Q!O!P!8d!P!Q%Q!Q![!:r![!c%Q!c!i!:r!i#T%Q#T#Z!:r#Z;'S%Q;'S;=`&s<%lO%QT!8i]&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i#T%Q#T#Z!9b#Z;'S%Q;'S;=`&s<%lO%QT!9gc&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i!r%Q!r!sKQ!s#R%Q#R#S!8d#S#T%Q#T#Z!9b#Z#d%Q#d#eKQ#e;'S%Q;'S;=`&s<%lO%QT!:yi&YS_POY%QYZ%lZr%Qrs%qs!O%Q!O!P!<h!P!Q%Q!Q![!:r![!c%Q!c!i!:r!i!n%Q!n!o!2U!o!r%Q!r!sKQ!s#R%Q#R#S!=r#S#T%Q#T#Z!:r#Z#`%Q#`#a!2U#a#d%Q#d#eKQ#e;'S%Q;'S;=`&s<%lO%QT!<ma&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!9b![!c%Q!c!i!9b!i!r%Q!r!sKQ!s#T%Q#T#Z!9b#Z#d%Q#d#eKQ#e;'S%Q;'S;=`&s<%lO%QT!=w]&YSOY%QYZ%lZr%Qrs%qs!Q%Q!Q![!:r![!c%Q!c!i!:r!i#T%Q#T#Z!:r#Z;'S%Q;'S;=`&s<%lO%QV!>wX#pR&YSOY%QYZ%lZr%Qrs%qs![%Q![!]!?d!];'S%Q;'S;=`&s<%lO%QV!?kV&vR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!@XV!PR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!@uY&_Z&YSOY%QYZ%lZr%Qrs%qs!^%Q!^!_!Ae!_!`+p!`;'S%Q;'S;=`&s<%lO%QU!AlX#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV!B`X!bR&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`;'S%Q;'S;=`&s<%lO%QV!CSY&^R&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`+p!`!a!Cr!a;'S%Q;'S;=`&s<%lO%QU!CyY#iQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`!a!Ae!a;'S%Q;'S;=`&s<%lO%Q_!DrV&bX#oQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!E`X%}Z&YSOY%QYZ%lZr%Qrs%qs#]%Q#]#^!E{#^;'S%Q;'S;=`&s<%lO%QV!FQX&YSOY%QYZ%lZr%Qrs%qs#b%Q#b#c!Fm#c;'S%Q;'S;=`&s<%lO%QV!FrX&YSOY%QYZ%lZr%Qrs%qs#h%Q#h#i!G_#i;'S%Q;'S;=`&s<%lO%QV!GdX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!HP#Y;'S%Q;'S;=`&s<%lO%QV!HUX&YSOY%QYZ%lZr%Qrs%qs#f%Q#f#g!Hq#g;'S%Q;'S;=`&s<%lO%QV!HvX&YSOY%QYZ%lZr%Qrs%qs#Y%Q#Y#Z!Ic#Z;'S%Q;'S;=`&s<%lO%QV!IhX&YSOY%QYZ%lZr%Qrs%qs#T%Q#T#U!JT#U;'S%Q;'S;=`&s<%lO%QV!JYX&YSOY%QYZ%lZr%Qrs%qs#V%Q#V#W!Ju#W;'S%Q;'S;=`&s<%lO%QV!JzX&YSOY%QYZ%lZr%Qrs%qs#X%Q#X#Y!Kg#Y;'S%Q;'S;=`&s<%lO%QV!KnV&tR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_!L[b&RZ&YSOY%QYZ%lZr%Qrs%qst%Qtu!LTu!Q%Q!Q![!LT![!c%Q!c!}!LT!}#R%Q#R#S!LT#S#T%Q#T#o!LT#o$g%Q$g;'S!LT;'S;=`!Md<%lO!LT_!MgP;=`<%l!LT_!MqVuZ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV!N_VsR&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QU!N{X#eQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`;'S%Q;'S;=`&s<%lO%QV# oV}R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#!_Z'OX#dQ&YSOY%QYZ%lZr%Qrs%qs!_%Q!_!`6n!`#p%Q#p#q##Q#q;'S%Q;'S;=`&s<%lO%QU##XV#bQ&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QV##uV|R&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%QT#$cV#uP&YSOY%QYZ%lZr%Qrs%qs;'S%Q;'S;=`&s<%lO%Q_#%Ru&YS%yZ&PZOX%QXY'fYZ)bZ^'f^p%Qpq'fqr%Qrs%qst%Qtu4eu!Q%Q!Q![4e![!c%Q!c!}4e!}#R%Q#R#S4e#S#T%Q#T#o4e#o#y%Q#y#z'f#z$f%Q$f$g'f$g#BY4e#BY#BZ#$x#BZ$IS4e$IS$I_#$x$I_$I|4e$I|$JO#$x$JO$JT4e$JT$JU#$x$JU$KV4e$KV$KW#$x$KW&FU4e&FU&FV#$x&FV;'S4e;'S;=`5t<%lO4e\",\n tokenizers: [0, 1, 2, 3],\n topRules: {\"Program\":[0,3],\"ClassContent\":[1,194]},\n dynamicPrecedences: {\"27\":1,\"232\":-1,\"243\":-1},\n specialized: [{term: 231, get: (value) => spec_identifier[value] || -1}],\n tokenPrec: 7144\n});\n\nexport { parser };\n","import { parser } from '@lezer/java';\nimport { LRLanguage, indentNodeProp, continuedIndent, flatIndent, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nA language provider based on the [Lezer Java\nparser](https://github.com/lezer-parser/java), extended with\nhighlighting and indentation information.\n*/\nconst javaLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"java\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n IfStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|else\\b)/ }),\n TryStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|catch|finally)\\b/ }),\n LabeledStatement: flatIndent,\n SwitchBlock: context => {\n let after = context.textAfter, closed = /^\\s*\\}/.test(after), isCase = /^\\s*(case|default)\\b/.test(after);\n return context.baseIndent + (closed ? 0 : isCase ? 1 : 2) * context.unit;\n },\n Block: /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n BlockComment: () => null,\n Statement: /*@__PURE__*/continuedIndent({ except: /^{/ })\n }),\n /*@__PURE__*/foldNodeProp.add({\n [\"Block SwitchBlock ClassBody ElementValueArrayInitializer ModuleBody EnumBody \" +\n \"ConstructorBody InterfaceBody ArrayInitializer\"]: foldInside,\n BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; }\n })\n ]\n }),\n languageData: {\n commentTokens: { line: \"//\", block: { open: \"/*\", close: \"*/\" } },\n indentOnInput: /^\\s*(?:case |default:|\\{|\\})$/\n }\n});\n/**\nJava language support.\n*/\nfunction java() {\n return new LanguageSupport(javaLanguage);\n}\n\nexport { java, javaLanguage };\n","import { ExternalTokenizer, LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst castOpen = 1,\n HeredocString = 2,\n interpolatedStringContent = 275,\n EscapeSequence = 3,\n afterInterpolation = 276,\n automaticSemicolon = 277,\n eof = 278,\n abstract = 4,\n and = 5,\n array = 6,\n as = 7,\n Boolean = 8,\n _break = 9,\n _case = 10,\n _catch = 11,\n clone = 12,\n _const = 13,\n _continue = 14,\n _default = 15,\n declare = 16,\n _do = 17,\n echo = 18,\n _else = 19,\n elseif = 20,\n enddeclare = 21,\n endfor = 22,\n endforeach = 23,\n endif = 24,\n endswitch = 25,\n endwhile = 26,\n _enum = 27,\n _extends = 28,\n final = 29,\n _finally = 30,\n fn = 31,\n _for = 32,\n foreach = 33,\n from = 34,\n _function = 35,\n global = 36,\n goto = 37,\n _if = 38,\n _implements = 39,\n include = 40,\n include_once = 41,\n _instanceof = 42,\n insteadof = 43,\n _interface = 44,\n list = 45,\n match = 46,\n namespace = 47,\n _new = 48,\n _null = 49,\n or = 50,\n print = 51,\n readonly = 52,\n _require = 53,\n require_once = 54,\n _return = 55,\n _switch = 56,\n _throw = 57,\n trait = 58,\n _try = 59,\n unset = 60,\n use = 61,\n _var = 62,\n Visibility = 63,\n _while = 64,\n xor = 65,\n _yield = 66;\n\nconst keywordMap = {\n abstract,\n and,\n array,\n as,\n true: Boolean,\n false: Boolean,\n break: _break,\n case: _case,\n catch: _catch,\n clone,\n const: _const,\n continue: _continue,\n declare,\n default: _default,\n do: _do,\n echo,\n else: _else,\n elseif,\n enddeclare,\n endfor,\n endforeach,\n endif,\n endswitch,\n endwhile,\n enum: _enum,\n extends: _extends,\n final,\n finally: _finally,\n fn,\n for: _for,\n foreach,\n from,\n function: _function,\n global,\n goto,\n if: _if,\n implements: _implements,\n include,\n include_once,\n instanceof: _instanceof,\n insteadof,\n interface: _interface,\n list,\n match,\n namespace,\n new: _new,\n null: _null,\n or,\n print,\n readonly,\n require: _require,\n require_once,\n return: _return,\n switch: _switch,\n throw: _throw,\n trait,\n try: _try,\n unset,\n use,\n var: _var,\n public: Visibility,\n private: Visibility,\n protected: Visibility,\n while: _while,\n xor,\n yield: _yield,\n __proto__: null,\n};\n\nfunction keywords(name) {\n let found = keywordMap[name.toLowerCase()];\n return found == null ? -1 : found\n}\n\nfunction isSpace(ch) {\n return ch == 9 || ch == 10 || ch == 13 || ch == 32\n}\n\nfunction isASCIILetter(ch) {\n return ch >= 97 && ch <= 122 || ch >= 65 && ch <= 90\n}\n\nfunction isIdentifierStart(ch) {\n return ch == 95 || ch >= 0x80 || isASCIILetter(ch)\n}\n\nfunction isHex(ch) {\n return ch >= 48 && ch <= 55 || ch >= 97 && ch <= 102 || ch >= 65 && ch <= 70 /* 0-9, a-f, A-F */\n}\n\nconst castTypes = {\n int: true, integer: true, bool: true, boolean: true,\n float: true, double: true, real: true, string: true,\n array: true, object: true, unset: true,\n __proto__: null\n};\n\nconst expression = new ExternalTokenizer(input => {\n if (input.next == 40 /* '(' */) {\n input.advance();\n let peek = 0;\n while (isSpace(input.peek(peek))) peek++;\n let name = \"\", next;\n while (isASCIILetter(next = input.peek(peek))) {\n name += String.fromCharCode(next);\n peek++;\n }\n while (isSpace(input.peek(peek))) peek++;\n if (input.peek(peek) == 41 /* ')' */ && castTypes[name.toLowerCase()])\n input.acceptToken(castOpen);\n } else if (input.next == 60 /* '<' */ && input.peek(1) == 60 && input.peek(2) == 60) {\n for (let i = 0; i < 3; i++) input.advance();\n while (input.next == 32 /* ' ' */ || input.next == 9 /* '\\t' */) input.advance();\n let quoted = input.next == 39; /* \"'\" */\n if (quoted) input.advance();\n if (!isIdentifierStart(input.next)) return\n let tag = String.fromCharCode(input.next);\n for (;;) {\n input.advance();\n if (!isIdentifierStart(input.next) && !(input.next >= 48 && input.next <= 55) /* 0-9 */) break\n tag += String.fromCharCode(input.next);\n }\n if (quoted) {\n if (input.next != 39) return\n input.advance();\n }\n if (input.next != 10 /* '\\n' */ && input.next != 13 /* '\\r' */) return\n for (;;) {\n let lineStart = input.next == 10 || input.next == 13;\n input.advance();\n if (input.next < 0) return\n if (lineStart) {\n while (input.next == 32 /* ' ' */ || input.next == 9 /* '\\t' */) input.advance();\n let match = true;\n for (let i = 0; i < tag.length; i++) {\n if (input.next != tag.charCodeAt(i)) { match = false; break }\n input.advance();\n }\n if (match) return input.acceptToken(HeredocString)\n }\n }\n }\n});\n\nconst eofToken = new ExternalTokenizer(input => {\n if (input.next < 0) input.acceptToken(eof);\n});\n\nconst semicolon = new ExternalTokenizer((input, stack) => {\n if (input.next == 63 /* '?' */ && stack.canShift(automaticSemicolon) && input.peek(1) == 62 /* '>' */)\n input.acceptToken(automaticSemicolon);\n});\n\nfunction scanEscape(input) {\n let after = input.peek(1);\n if (after == 110 /* 'n' */ || after == 114 /* 'r' */ || after == 116 /* 't' */ ||\n after == 118 /* 'v' */ || after == 101 /* 'e' */ || after == 102 /* 'f' */ ||\n after == 92 /* '\\\\' */ || after == 36 /* '\"' */ || after == 34 /* '$' */ ||\n after == 123 /* '{' */)\n return 2\n\n if (after >= 48 && after <= 55 /* '0'-'7' */) {\n let size = 2, next;\n while (size < 5 && (next = input.peek(size)) >= 48 && next <= 55) size++;\n return size\n }\n\n if (after == 120 /* 'x' */ && isHex(input.peek(2))) {\n return isHex(input.peek(3)) ? 4 : 3\n }\n\n if (after == 117 /* 'u' */ && input.peek(2) == 123 /* '{' */) {\n for (let size = 3;; size++) {\n let next = input.peek(size);\n if (next == 125 /* '}' */) return size == 2 ? 0 : size + 1\n if (!isHex(next)) break\n }\n }\n\n return 0\n}\n\nconst interpolated = new ExternalTokenizer((input, stack) => {\n let content = false;\n for (;; content = true) {\n if (input.next == 34 /* '\"' */ || input.next < 0 ||\n input.next == 36 /* '$' */ && (isIdentifierStart(input.peek(1)) || input.peek(1) == 123 /* '{' */) ||\n input.next == 123 /* '{' */ && input.peek(1) == 36 /* '$' */) {\n break\n } else if (input.next == 92 /* '\\\\' */) {\n let escaped = scanEscape(input);\n if (escaped) {\n if (content) break\n else return input.acceptToken(EscapeSequence, escaped)\n }\n } else if (!content && (\n input.next == 91 /* '[' */ ||\n input.next == 45 /* '-' */ && input.peek(1) == 62 /* '>' */ && isIdentifierStart(input.peek(2)) ||\n input.next == 63 /* '?' */ && input.peek(1) == 45 && input.peek(2) == 62 && isIdentifierStart(input.peek(3))\n ) && stack.canShift(afterInterpolation)) {\n break\n }\n input.advance();\n }\n if (content) input.acceptToken(interpolatedStringContent);\n});\n\nconst phpHighlighting = styleTags({\n \"Visibility abstract final static\": tags.modifier,\n \"for foreach while do if else elseif switch try catch finally return throw break continue default case\": tags.controlKeyword,\n \"endif endfor endforeach endswitch endwhile declare enddeclare goto match\": tags.controlKeyword,\n \"and or xor yield unset clone instanceof insteadof\": tags.operatorKeyword,\n \"function fn class trait implements extends const enum global interface use var\": tags.definitionKeyword,\n \"include include_once require require_once namespace\": tags.moduleKeyword,\n \"new from echo print array list as\": tags.keyword,\n null: tags.null,\n Boolean: tags.bool,\n VariableName: tags.variableName,\n \"NamespaceName/...\": tags.namespace,\n \"NamedType/...\": tags.typeName,\n Name: tags.name,\n \"CallExpression/Name\": tags.function(tags.variableName),\n \"LabelStatement/Name\": tags.labelName,\n \"MemberExpression/Name\": tags.propertyName,\n \"MemberExpression/VariableName\": tags.special(tags.propertyName),\n \"ScopedExpression/ClassMemberName/Name\": tags.propertyName,\n \"ScopedExpression/ClassMemberName/VariableName\": tags.special(tags.propertyName),\n \"CallExpression/MemberExpression/Name\": tags.function(tags.propertyName),\n \"CallExpression/ScopedExpression/ClassMemberName/Name\": tags.function(tags.propertyName),\n \"MethodDeclaration/Name\": tags.function(tags.definition(tags.variableName)),\n \"FunctionDefinition/Name\": tags.function(tags.definition(tags.variableName)),\n \"ClassDeclaration/Name\": tags.definition(tags.className),\n UpdateOp: tags.updateOperator,\n ArithOp: tags.arithmeticOperator,\n \"LogicOp IntersectionType/&\": tags.logicOperator,\n BitOp: tags.bitwiseOperator,\n CompareOp: tags.compareOperator,\n ControlOp: tags.controlOperator,\n AssignOp: tags.definitionOperator,\n \"$ ConcatOp\": tags.operator,\n LineComment: tags.lineComment,\n BlockComment: tags.blockComment,\n Integer: tags.integer,\n Float: tags.float,\n String: tags.string,\n ShellExpression: tags.special(tags.string),\n \"=> ->\": tags.punctuation,\n \"( )\": tags.paren,\n \"#[ [ ]\": tags.squareBracket,\n \"${ { }\": tags.brace,\n \"-> ?->\": tags.derefOperator,\n \", ; :: : \\\\\": tags.separator,\n \"PhpOpen PhpClose\": tags.processingInstruction,\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_name = {__proto__:null,static:325, STATIC:325, class:351, CLASS:351};\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"%#[Q`OWOOQhQaOOP%oO`OOOOO#t'#Hh'#HhO%tO#|O'#DuOOO#u'#Dx'#DxQ&SOWO'#DxO&XO$VOOOOQ#u'#Dy'#DyO&lQaO'#D}O'[QdO'#EQO+QQdO'#IqO+_QdO'#ERO-RQaO'#EXO/bQ`O'#EUO/gQ`O'#E_O2UQaO'#E_O2]Q`O'#EgO2bQ`O'#EqO-RQaO'#EqO2mQpO'#FOO2rQ`O'#FOOOQS'#Iq'#IqO2wQ`O'#ExOOQS'#Ih'#IhO5SQdO'#IeO9UQeO'#F]O-RQaO'#FlO-RQaO'#FmO-RQaO'#FnO-RQaO'#FoO-RQaO'#FoO-RQaO'#FrOOQO'#Ir'#IrO9cQ`O'#FxOOQO'#Ht'#HtO9kQ`O'#HXO:VQ`O'#FsO:bQ`O'#HfO:mQ`O'#GPO:uQaO'#GQO-RQaO'#G`O-RQaO'#GcO;bOrO'#GfOOQS'#JP'#JPOOQS'#JO'#JOOOQS'#Ie'#IeO/bQ`O'#GmO/bQ`O'#GoO/bQ`O'#GtOhQaO'#GvO;iQ`O'#GwO;nQ`O'#GzO:]Q`O'#G}O;sQeO'#HOO;sQeO'#HPO;sQeO'#HQO;}Q`O'#HRO<SQ`O'#HTO<XQaO'#HUO>hQ`O'#HVO:]Q`O'#HWO>mQ`O'#HWO;}Q`O'#HXO:]Q`O'#HZO:]Q`O'#H[O:]Q`O'#H]O>rQ`O'#H`O>}Q`O'#HaO<XQaO'#HeOOQ#u'#Ic'#IcOOQ#u'#Hj'#HjQhQaOOO:]Q`O'#HYO:QQ`O'#HYO?]O#|O'#DsPOOO)CDT)CDTOOO#t-E;f-E;fOOO#u,5:d,5:dOOO#u'#Hi'#HiO&XO$VOOO?hQ$VO'#IbOOOO'#Ib'#IbQOOOOOOOQ#y,5:i,5:iO?oQaO,5:iOOQ#u,5:k,5:kO?vQaO,5:nO?}QaO,5;VO@UQpO,5;WOBsQaO'#EuOOQS,5;`,5;`OBzQ`O,5;pOOQP'#Fd'#FdO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xO-RQaO,5;xOOQ#u'#Iv'#IvOOQS,5<z,5<zOOQ#u,5:m,5:mODsQ`O,5:sODzQ`O'#FsOESQ`O'#FsOE[Q`O,5:pOEaQaO'#E`OOQS,5:y,5:yOGeQ`O'#IjO<XQaO'#EbO<XQaO'#IjOOQS'#Ij'#IjOGlQ`O'#IiOGtQ`O,5:yO/lQaO,5:yOGyQaO'#EhOOQS,5;R,5;ROOQS,5;],5;]OHTQ`O,5;]OHsQdO'#FQOJxQ`O'#HrO2mQpO,5;jOOQS,5;j,5;jOJ}QpO,5;jOKSQtO'#EQOKaQpO,5;dO2wQ`O'#E|OOQS'#E}'#E}OOQS'#Ip'#IpOKlQaO,5:xO-RQaO,5;uOOQS,5;w,5;wO-RQaO,5;wOKsQdO,5<WOLTQdO,5<XOLeQdO,5<YOLuQdO,5<ZON|QdO,5<ZO! TQdO,5<^O! eQ`O'#FyO! pQ`O'#IuO! xQ`O,5<dOOQO-E;r-E;rO! }Q`O'#I}O:]Q`O,5=rO!!VQ`O,5=rO;}Q`O,5=sO:]Q`O,5=wO:]Q`O,5=tO!![Q`O,5=tOOQS'#EQ'#EQO!!aQ`O'#FuO!!wQ`O,5<_O!#SQ`O,5<_O!#[Q`O,5?iO!#aQ`O,5<_O!#iQ`O,5<kO!#qQdO'#GYO!$PQdO'#I|O!$[QdO,5>QO!$dQ`O,5<kO!#[Q`O,5<kO!$lQdO,5<lO!$|Q`O,5<lO!%[Q`O,5<lO!%rQdO,5<zO!'wQdO,5<}O!(XOrO'#IPOOOQ'#JS'#JSO-RQaO'#GkOOOQ'#IP'#IPO!(yOrO,5=QOOQS,5=Q,5=QO!)QQaO,5=XO!)XQ`O,5=ZO!)aQeO,5=`O!)kQ`O,5=bO!)pQaO'#GxO!)aQeO,5=cO<XQaO'#G{O!)aQeO,5=fO!$[QdO,5=iO+_QdO,5=jOOQ#u,5=j,5=jO+_QdO,5=kOOQ#u,5=k,5=kO+_QdO,5=lOOQ#u,5=l,5=lO!)wQ`O,5=mO:]Q`O,5=oO!*PQdO'#JUOOQS'#JU'#JUO!$[QdO,5=pO!+iQaO,5=qO!-xQ`O'#GWO!-}QdO'#I{O!$[QdO,5=rOOQ#u,5=s,5=sO!.YQ`O,5=uO!.]Q`O,5=vO!.bQ`O,5=wO!.mQdO,5=zOOQ#u,5=z,5=zO2mQpO,5={O!.xQ`O,5={O!.}QdO'#JVO!$[QdO,5={O!/]Q`O,5={O!/eQdO'#IgO!$[QdO,5>POOQ#u-E;h-E;hO!1QQ`O,5=tOOO#u,5:_,5:_O!1]O#|O,5:_OOO#u-E;g-E;gOOOO,5>|,5>|OOQ#y1G0T1G0TO!1eQ`O1G0YO-RQaO1G0YO!2wQ`O1G0qOOQS1G0q1G0qOOQS'#Eo'#EoOOQS'#Il'#IlO-RQaO'#IlOOQS1G0r1G0rO!4ZQ`O'#IoO!5pQ`O'#IqO!5}QaO'#EwOOQO'#Io'#IoO!6XQ`O'#InO!6aQ`O,5;aO-RQaO'#FXOOQS'#FW'#FWOOQS1G1[1G1[O!6fQdO1G1dO!8kQdO1G1dO!:WQdO1G1dO!;sQdO1G1dO!=`QdO1G1dO!>{QdO1G1dO!@hQdO1G1dO!BTQdO1G1dO!CpQdO1G1dO!E]QdO1G1dO!FxQdO1G1dO!HeQdO1G1dO!JQQdO1G1dO!KmQdO1G1dO!MYQdO1G1dO!NuQdO1G1dOOQT1G0_1G0_O!#[Q`O,5<_O#!bQaO'#EYOOQS1G0[1G0[O#!iQ`O,5:zOEdQaO,5:zO#!nQaO,5;OO#!uQdO,5:|O#$tQdO,5?UO#&sQaO'#HmO#'TQ`O,5?TOOQS1G0e1G0eO#']Q`O1G0eO#'bQ`O'#IkO#(zQ`O'#IkO#)SQ`O,5;SOG|QaO,5;SOOQS1G0w1G0wOOQO,5>^,5>^OOQO-E;p-E;pOOQS1G1U1G1UO#)pQdO'#FQO#+uQ`O'#HsOJ}QpO1G1UO2wQ`O'#HpO#+zQtO,5;eO2wQ`O'#HqO#,iQtO,5;gO#-WQaO1G1OOOQS,5;h,5;hO#/gQtO'#FQO#/tQdO1G0dO-RQaO1G0dO#1aQdO1G1aO#2|QdO1G1cOOQO,5<e,5<eO#3^Q`O'#HuO#3lQ`O,5?aOOQO1G2O1G2OO:]Q`O,5?iO!$[QdO1G3^O:]Q`O1G3^OOQ#u1G3_1G3_O#3tQ`O1G3cO!1QQ`O1G3`O:]Q`O1G3`O#4PQpO'#FvO#4_Q`O'#FvO#4oQ`O'#FvO#4zQ`O'#FvO#5SQ`O'#FzO#5XQ`O'#F{OOQO'#It'#ItO#5`Q`O'#IsO#5hQ`O,5<aOOQS1G1y1G1yO2wQ`O1G1yO#5mQ`O1G1yO#5rQ`O1G1yO!#[Q`O1G5TO#5}QdO1G5TO!#[Q`O1G1yO#6]Q`O1G2VO!#[Q`O1G2VO<XQaO,5<tO#6eQdO'#H}O#6sQdO,5?hOOQ#u1G3l1G3lO-RQaO1G2VO2wQ`O1G2VO#7OQdO1G2WO9cQ`O'#GSO9cQ`O'#GTO#9bQ`O'#GUOOQS1G2W1G2WO!.]Q`O1G2WO!1TQ`O1G2WO!1QQ`O1G2WO!$|Q`O1G2WO:]O`O,5=RO#:[O`O,5=RO#:gO!bO,5=SO#:uQ`O,5=VOOOQ-E;}-E;}OOQS1G2l1G2lO#:|QaO'#GnO#;gQ$VO1G2sO#@gQ`O1G2sO#@rQ`O'#GpO#@}Q`O'#GsOOQ#u1G2u1G2uO#AYQ`O1G2uOOQ#u'#Gu'#GuOOQ#u'#JT'#JTOOQ#u1G2z1G2zO#A_Q`O1G2zO/bQ`O1G2|O#AdQaO,5=dO#AkQ`O,5=dOOQ#u1G2}1G2}O#ApQ`O1G2}O#AuQ`O,5=gOOQ#u1G3Q1G3QO#CXQ`O1G3QOOQ#u1G3T1G3TOOQ#u1G3U1G3UOOQ#u1G3V1G3VOOQ#u1G3W1G3WO#C^Q`O'#IUO;}Q`O'#IUO#CcQ$VO1G3XO#HiQ`O1G3ZO<XQaO'#ITO#HnQdO,5=eOOQ#u1G3[1G3[O#HyQ`O1G3]O<XQaO,5<rO#IOQdO'#H|O#I^QdO,5?gOOQ#u1G3^1G3^OOQ#u1G3a1G3aO!.]Q`O1G3aOOQ#u1G3b1G3bO#IiQ`O'#H^OOQ#u1G3c1G3cO#JfQ`O1G3cO#JkQ`O1G3cOOQ#u1G3f1G3fO#J|Q`O1G3gO#KRQpO1G3gO#KZQdO'#IWO#KlQdO,5?qO:]Q`O,5?qOOQ#u1G3g1G3gO2mQpO1G3gO#KwQ`O1G3gO!$[QdO1G3gO#K|QeO'#HkO#L^QdO,5?ROOQ#u1G3k1G3kOOQ#u1G3`1G3`O!.]Q`O1G3`O!1TQ`O1G3`OOO#u1G/y1G/yO-RQaO7+%tO#LlQdO7+%tOOQS7+&]7+&]O#NXQ`O,5?WO!+iQaO,5;bO#N`Q`O,5;cO$ uQaO'#HoO$!PQ`O,5?YOOQS1G0{1G0{O$!XQ`O,5;sO$!`Q`O'#EZO$!eQ`O'#IfO$!mQ`O,5:tOOQS1G0f1G0fO$!rQ`O1G0fO$!wQ`O1G0jO<XQaO1G0jOOQO,5>X,5>XOOQO-E;k-E;kOOQS7+&P7+&PO!+iQaO,5;TO$$^QaO'#HnO$$hQ`O,5?VOOQS1G0n1G0nO$$pQ`O1G0nPOQO'#FQ'#FQOOQO,5>_,5>_OOQO-E;q-E;qOOQS7+&p7+&pOOQS,5>[,5>[OOQS-E;n-E;nO$$uQtO,5>]OOQS-E;o-E;oO$%dQdO7+&jO$'iQtO'#FQO$'vQdO7+&OOOQS1G0j1G0jOOQO,5>a,5>aOOQO-E;s-E;sOOQ#u7+(x7+(xO!$[QdO7+(xOOQ#u7+(}7+(}O#JfQ`O7+(}O#JkQ`O7+(}OOQ#u7+(z7+(zO!.]Q`O7+(zO!1TQ`O7+(zO!1QQ`O7+(zO$)cQ`O,5<bO$)mQ`O,5<bO$)xQ`O,5<fO$)}QpO,5<bO$*]Q`O,5<bO!+iQaO,5<bOOQO,5<f,5<fO$*eQpO,5<gO$*pQ`O,5<gO$+OQ`O'#HwO$+iQ`O,5?_OOQS1G1{1G1{O$+qQpO7+'eO$+|Q`O'#GOO$,XQ`O7+'eOOQS7+'e7+'eO2wQ`O7+'eO#5mQ`O7+'eO$,aQdO7+*oO2wQ`O7+*oO$,oQ`O7+'eO-RQaO7+'qO2wQ`O7+'qO$,zQ`O7+'qO$-SQdO1G2`OOQS,5>i,5>iOOQS-E;{-E;{O$.lQdO7+'qO$.|QpO7+'qO$/XQdO'#IxOOQO,5<n,5<nOOQO,5<o,5<oO$/jQpO'#GXO$/uQ`O'#GXOOQO'#Iz'#IzOOQO'#H{'#H{O$0iQ`O'#GXO#JkQ`O'#GVO$1YQdO'#GXO!.mQdO'#GZO9cQ`O'#G[OOQO'#Iy'#IyOOQO'#Hz'#HzO$1eQ`O,5<pOOQ#y,5<p,5<pOOQS7+'r7+'rO!.]Q`O7+'rO!1TQ`O7+'rO!1QQ`O7+'rOOOQ1G2m1G2mO:]O`O1G2mO$2_O!bO1G2nO$2mO`O'#GiO$2rO`O1G2nOOOQ1G2q1G2qO$2wQaO,5=YO/bQ`O'#IQO$3bQ$VO7+(_OhQaO7+(_O/bQ`O'#IRO$8bQ`O7+(_O!$[QdO7+(_O$8mQ`O7+(_O$8rQaO'#GqO$;RQ`O'#GrOOQO'#IS'#ISO$;ZQ`O,5=[OOQ#u,5=[,5=[O$;fQ`O,5=_O!$[QdO7+(aO!$[QdO7+(fO!$[QdO7+(hO$;qQaO1G3OO$;xQ`O1G3OO$;}QaO1G3OO!$[QdO7+(iO<XQaO1G3RO!$[QdO7+(lO2wQ`O'#HSO;}Q`O,5>pOOQ#u,5>p,5>pOOQ#u-E<S-E<SO$<UQaO7+(uO$<mQdO,5>oOOQS-E<R-E<RO!$[QdO7+(wO$>VQdO1G2^OOQS,5>h,5>hOOQS-E;z-E;zOOQ#u7+({7+({O$?oQ`O'#GXO:]Q`O'#H_OOQO'#IV'#IVO$@fQ`O,5=xOOQ#u,5=x,5=xO$AcQ!bO'#EQO$AzQ!bO7+(}O$BYQpO7+)RO#KRQpO7+)RO$BbQ`O'#HbO!$[QdO7+)RO$BpQdO,5>rOOQS-E<U-E<UO$COQdO1G5]O$CZQ`O7+)RO#KRQpO7+)ROOQ#u7+)R7+)RO$C`QdO,5>VOOQS-E;i-E;iO$D{QdO<<I`OOQS1G4r1G4rO$FhQ`O1G0|OOQO,5>Z,5>ZOOQO-E;m-E;mOOQS1G1_1G1_O$8rQaO,5:uO$G}QaO'#HlO$H[Q`O,5?QOOQS1G0`1G0`OOQS7+&Q7+&QO$HdQ`O7+&UO$IyQ`O1G0oO$K`Q`O,5>YOOQO,5>Y,5>YOOQO-E;l-E;lOOQS7+&Y7+&YOOQS7+&U7+&UOOQ#u<<Ld<<LdOOQ#u<<Li<<LiO$AzQ!bO<<LiOOQ#u<<Lf<<LfO!.]Q`O<<LfO!1TQ`O<<LfO$LxQ`O1G1|O$MTQ`O1G2QO!+iQaO1G1|OOQO1G2Q1G2QO$MYQ`O1G1|O$MdQ`O1G1|O$NyQ`O1G2RO% XQ`O'#F|O!+iQaO1G2ROOQO1G2R1G2ROOQO,5>c,5>cOOQO-E;u-E;uOOQS<<KP<<KPO% aQ`O'#IwO% iQ`O'#IwO% nQ`O,5<jO2wQ`O<<KPO$+qQpO<<KPO% sQ`O<<KPO2wQ`O<<NZO% {QtO<<NZO#5mQ`O<<KPO%!^QdO<<K]O%!nQpO<<K]O-RQaO<<K]O2wQ`O<<K]O%!yQdO'#HyO%#bQdO,5?dO$1YQdO,5<sO$/jQpO,5<sO%#sQ`O,5<sO#JkQ`O,5<qO!.mQdO,5<uOOQO-E;y-E;yO%$dQ!bO,5<qO%$oQ!bO'#IqO!$[QdO,5<qOOQO,5<s,5<sOOQO,5<u,5<uO%$}QdO,5<vOOQO-E;x-E;xOOQ#y1G2[1G2[OOQS<<K^<<K^O!.]Q`O<<K^O!1TQ`O<<K^OOOQ7+(X7+(XO%%YO`O7+(YOOOO,5=T,5=TOOOQ7+(Y7+(YOhQaO,5>lOOQ#u-E<O-E<OOhQaO<<KyOOQ#u<<Ky<<KyO$8mQ`O,5>mOOQO-E<P-E<PO!$[QdO<<KyO$8mQ`O<<KyO%%_Q`O<<KyO%%dQ`O,5=]O%&yQaO,5=^OOQO-E<Q-E<QOOQ#u1G2v1G2vOOQ#u<<K{<<K{OOQ#u<<LQ<<LQOOQ#u<<LS<<LSOOQT7+(j7+(jO%'ZQ`O7+(jO%'`QaO7+(jO%'gQ`O7+(jOOQ#u<<LT<<LTO%'lQ`O7+(mO%)RQ`O7+(mOOQ#u<<LW<<LWO%)WQpO,5=nOOQ#u1G4[1G4[O%)fQ`O<<LaOOQ#u<<Lc<<LcO:]Q`O,5=yO%)kQdO,5=yOOQO-E<T-E<TOOQ#u1G3d1G3dO%)vQ!bO,5;eO%*XQ!bO,5;gO#JfQ`O<<LiO%*jQ!bO'#FQP%+OQpO<<LmO!$[QdO<<LmO%+WQ`O'#HcO9cQ`O'#HcO%+cQ`O'#JWO%+kQ`O,5=|OOQ#u<<Lm<<LmO:]Q`O1G4^O%+pQdO7+*wO$BYQpO<<LmO#KRQpO<<LmO%+{Q`O1G0aOOQO,5>W,5>WOOQO-E;j-E;jO!+iQaO,5;UOOQ#uANBTANBTO#JfQ`OANBTOOQ#uANBQANBQO!.]Q`OANBQO!+iQaO7+'hOOQO7+'l7+'lO%-bQ`O7+'hO%.wQ`O7+'hO%/SQ`O7+'lO!+iQaO7+'mOOQO7+'m7+'mO%/XQdO'#F}OOQO'#Hv'#HvO%/jQ`O,5<hOOQO,5<h,5<hO%/rQ`O7+'mO%1XQ`O'#HxO%1gQ`O,5?cO%1gQ`O,5?cOOQO1G2U1G2UO$+qQpOAN@kOOQSAN@kAN@kO2wQ`OAN@kO%1oQtOANCuO%2QQ`OAN@kO-RQaOAN@wO%2YQdOAN@wO%2jQpOAN@wOOQS,5>e,5>eOOQS-E;w-E;wOOQO1G2_1G2_O$1YQdO1G2_O$/jQpO1G2_O#JkQ`O1G2]O!.mQdO1G2aO%$dQ!bO1G2]O!$[QdO1G2]OOQO1G2a1G2aOOQO1G2]1G2]O%2uQaO'#G]OOQO1G2b1G2bOOQSAN@xAN@xO!.]Q`OAN@xOOOQ<<Kt<<KtOOQ#u1G4W1G4WOOQ#uANAeANAeOOQO1G4X1G4XO%4tQ`OANAeO!$[QdOANAeO%4yQaO1G2wO%5ZQaO1G2xOOQT<<LU<<LUO%5kQ`O<<LUO%5pQaO<<LUO-RQaO,5=hOOQT<<LX<<LXOOQO1G3Y1G3YO%5wQ`O1G3YO!)aQeOANA{O%5|QdO1G3eOOQO1G3e1G3eO%6XQ`O1G3eO%6aQ!bO,5>]O%6rQ!bO'#FQO!$[QdOANBXOOQ#uANBXANBXO:]Q`O,5=}O%7WQ`O,5=}O%7cQ`O'#IXO%7wQ`O,5?rOOQS1G3h1G3hOOQS7+)x7+)xP%+OQpOANBXO%8PQ`O1G0pOOQ#uG27oG27oOOQ#uG27lG27lO%9fQ`O<<KSO!+iQaO<<KSOOQO<<KW<<KWO%:{Q`O<<KXOOQO,5<i,5<iO-RQaO,5<iO%<bQ`O,5<iOOQO-E;t-E;tOOQO1G2S1G2SOOQO,5>d,5>dO%<jQ`O,5>dOOQO-E;v-E;vO%<oQ`O1G4}OOQSG26VG26VO$+qQpOG26VO2wQ`OG26VO%<wQdOG26cO-RQaOG26cOOQO7+'y7+'yO$1YQdO7+'yO%$dQ!bO7+'wO!$[QdO7+'wOOQO7+'{7+'{OOQO7+'w7+'wO%=XQ`OLD+}O%>hQ`O'#IqO%>rQ`O'#IhO!$[QdO'#IOO%@lQaO,5<wOOQO,5<w,5<wOOQSG26dG26dO!$[QdOG27POOQ#uG27PG27PO%BkQaO7+(cOOQTANApANApO%B{Q`OANApO%CQQ`O1G3SOOQO7+(t7+(tOOQ#uG27gG27gO%CXQ`OG27gOOQO7+)P7+)PO%C^Q`O7+)PO!$[QdO7+)POOQ#uG27sG27sOOQO1G3i1G3iO:]Q`O1G3iO%CfQ`O'#HdO9cQ`O'#HdOOQO,5>s,5>sOOQO-E<V-E<VP!$[QdOG27sO%CqQ`OAN@nO+_QdO1G2TOOQO1G2T1G2TO-RQaO1G2TOOQO1G4O1G4OOOQSLD+qLD+qO$+qQpOLD+qO%EWQdOLD+}OOQO<<Ke<<KeO!$[QdO<<KcOOQO<<Kc<<KcO:]Q`O,5<xO%EhQ`O,5<yOOQP,5>j,5>jOOQP-E;|-E;|OOQO1G2c1G2cOOQ#uLD,kLD,kOOQTG27[G27[O!$[QdOLD-RO!$[QdO<<LkOOQO<<Lk<<LkOOQO7+)T7+)TO:]Q`O,5>OO%EpQ`O,5>OPOQ#uLD-_LD-_OOQO7+'o7+'oO+_QdO7+'oOOQS!$( ]!$( ]OOQOAN@}AN@}OOQS1G2d1G2dOOQS1G2e1G2eO%E{QdO1G2eOOQ#u!$(!m!$(!mOOQOANBVANBVOOQO1G3j1G3jO:]Q`O1G3jOOQO<<KZ<<KZOOQS7+(P7+(POOQO7+)U7+)UO%FWQpO'#FOO%F]QpO'#FOO%FWQpO,5;jO%F]QpO,5;jO%FbQpO,5;jO%FgQpO,5;jO#JkQ`O'#E|O%FlQdO,5<lO%HbQaO,5;OO%FbQpO1G1UO%FgQpO1G1UO#JkQ`O'#HpO#JkQ`O'#HqO-RQaO1G0jO%HiQ`O'#FOO%HnQ`O'#FOO%HsQaO'#GQO#-WQaO'#G`O#-WQaO'#GcO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO#-WQaO,5;xO%H}QdO'#IjO%JmQdO'#IjO#-WQaO'#EbO#-WQaO'#IjO%LrQaO,5:xO#-WQaO,5;uO#-WQaO,5;wO%LyQdO,5<WO%NoQdO,5<XO&!eQdO,5<YO&$ZQdO,5<ZO&&PQdO,5<ZO&&aQdO,5<^O&(VQdO,5<}O#-WQaO1G0YO&){QdO1G1dO&+qQdO1G1dO&-gQdO1G1dO&/]QdO1G1dO&1RQdO1G1dO&2wQdO1G1dO&4mQdO1G1dO&6cQdO1G1dO&8XQdO1G1dO&9}QdO1G1dO&;sQdO1G1dO&=iQdO1G1dO&?_QdO1G1dO&ATQdO1G1dO&ByQdO1G1dO&DoQdO,5:|O&FeQdO,5?UO&HZQdO1G0dO#-WQaO1G0dO&JPQdO1G1aO&KuQdO1G1cO#-WQaO1G2VO#-WQaO7+%tO&MkQdO7+%tO' aQdO7+&OO#-WQaO7+'qO'#VQdO7+'qO'${QdO<<I`O'&qQdO<<K]O#-WQaO<<K]O#-WQaOAN@wO'(gQdOAN@wO'*]QdOG26cO#-WQaOG26cO',RQdOLD+}O'-wQaO,5;OO'/vQaO1G0jO'1rQdO'#IeO'2PQeO'#F]O'5vQeO'#F]O#-WQaO'#FlO'/vQaO'#FlO#-WQaO'#FmO'/vQaO'#FmO#-WQaO'#FnO'/vQaO'#FnO#-WQaO'#FoO'/vQaO'#FoO#-WQaO'#FoO'/vQaO'#FoO#-WQaO'#FrO'/vQaO'#FrO'9|QaO,5:nO':TQ`O,5<kO':]Q`O1G0YO'/vQaO1G1OO';oQ`O1G2VO';wQ`O7+'qO'<PQpO7+'qO'<[QpO<<K]O'<gQpOAN@wO'<rQaO'#GQO'/vQaO'#G`O'/vQaO'#GcO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO,5;xO'/vQaO'#EbO'/vQaO'#IjO'>tQaO,5:xO'/vQaO,5;uO'/vQaO,5;wO'@sQdO,5<WO'BxQdO,5<XO'D}QdO,5<YO'GSQdO,5<ZO'IXQdO,5<ZO'IxQdO,5<^O'K}QdO,5<}O'/vQaO1G0YO'NSQdO1G1dO(!XQdO1G1dO($^QdO1G1dO(&cQdO1G1dO((hQdO1G1dO(*mQdO1G1dO(,rQdO1G1dO(.wQdO1G1dO(0|QdO1G1dO(3RQdO1G1dO(5WQdO1G1dO(7]QdO1G1dO(9bQdO1G1dO(;gQdO1G1dO(=lQdO1G1dO(?qQdO,5:|O(AvQdO,5?UO(C{QdO1G0dO'/vQaO1G0dO(FQQdO1G1aO(HVQdO1G1cO'/vQaO1G2VO'/vQaO7+%tO(J[QdO7+%tO(LaQdO7+&OO'/vQaO7+'qO(NfQdO7+'qO)!kQdO<<I`O)$pQdO<<K]O'/vQaO<<K]O'/vQaOAN@wO)&uQdOAN@wO)(zQdOG26cO'/vQaOG26cO)+PQdOLD+}O)-UQaO,5;OO#-WQaO1G0jO)-]Q`O'#GPO)-eQpO,5;dO)-pQ`O,5<kO!#[Q`O,5<kO!#[Q`O1G2VO2wQ`O1G2VO2wQ`O7+'qO2wQ`O<<K]O)-xQdO,5<lO)/}QdO'#IjO)1vQdO'#IeO)2dQaO,5:nO)2kQ`O,5<kO)2sQ`O1G0YO)4VQ`O1G2VO)4_Q`O7+'qO)4gQpO7+'qO)4rQpO<<K]O)4}QpOAN@wO2wQ`O'#ExO<XQaO'#FlO<XQaO'#FmO<XQaO'#FnO<XQaO'#FoO<XQaO'#FoO<XQaO'#FrO)5YQaO'#GQO<XQaO'#G`O<XQaO'#GcO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO<XQaO,5;xO)5dQ`O'#FsO-RQaO'#EbO-RQaO'#IjO)5lQaO,5:xO<XQaO,5;uO<XQaO,5;wO)5sQdO,5<WO)7rQdO,5<XO)9qQdO,5<YO);pQdO,5<ZO)=oQdO,5<ZO)>YQdO,5<^O)@XQdO,5<lO)BWQdO,5<}O)DVQ`O'#JUO)ElQ`O'#IgO<XQaO1G0YO)GRQdO1G1dO)IQQdO1G1dO)KPQdO1G1dO)MOQdO1G1dO)N}QdO1G1dO*!|QdO1G1dO*${QdO1G1dO*&zQdO1G1dO*(yQdO1G1dO**xQdO1G1dO*,wQdO1G1dO*.vQdO1G1dO*0uQdO1G1dO*2tQdO1G1dO*4sQdO1G1dO*6rQaO,5;OO*6yQdO,5:|O*7ZQdO,5?UO*7kQaO'#HmO*7{Q`O,5?TO*8TQdO1G0dO<XQaO1G0dO*:SQdO1G1aO*<RQdO1G1cO<XQaO1G2VO!+iQaO'#ITO*>QQ`O,5=eO*>YQaO'#HkO*>dQ`O,5?RO<XQaO7+%tO*>lQdO7+%tO*@kQ`O1G0jO!+iQaO1G0jO*BQQdO7+&OO<XQaO7+'qO*DPQdO7+'qO*FOQ`O,5>oO*GeQ`O,5>VO*HzQdO<<I`O*JyQ`O7+&UO*L`QdO<<K]O<XQaO<<K]O<XQaOAN@wO*N_QdOAN@wO+!^QdOG26cO<XQaOG26cO+$]QdOLD+}O+&[QaO,5;OO<XQaO1G0jO+&cQdO'#IjO+'PQ`O'#GPO+'XQ`O,5<kO!#[Q`O,5<kO!#[Q`O1G2VO2wQ`O1G2VO2wQ`O7+'qO2wQ`O<<K]O+'aQdO'#IeO+'}QeO'#F]O+(nQeO'#F]O+*jQaO'#F]O+,SQaO'#F]O!+iQaO'#FlO!+iQaO'#FmO!+iQaO'#FnO!+iQaO'#FoO!+iQaO'#FoO!+iQaO'#FrO+-rQaO'#GQO!+iQaO'#G`O!+iQaO'#GcO+-|QaO,5:nO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO!+iQaO,5;xO+.TQ`O'#IjO$8rQaO'#EbO+/mQaOG26cO$8rQaO'#IjO+1iQ`O'#IiO+1qQaO,5:xO!+iQaO,5;uO!+iQaO,5;wO+1xQ`O,5<WO+3_Q`O,5<XO+4tQ`O,5<YO+6ZQ`O,5<ZO+7pQ`O,5<ZO+9VQ`O,5<^O+:lQ`O,5<kO+:tQ`O,5<lO+<ZQ`O,5<}O+=pQ`O1G0YO!+iQaO1G0YO+?SQ`O1G1dO+@iQ`O1G1dO+BOQ`O1G1dO+CeQ`O1G1dO+DzQ`O1G1dO+FaQ`O1G1dO+GvQ`O1G1dO+I]Q`O1G1dO+JrQ`O1G1dO+LXQ`O1G1dO+MnQ`O1G1dO, TQ`O1G1dO,!jQ`O1G1dO,$PQ`O1G1dO,%fQ`O1G1dO,&{Q`O1G0dO!+iQaO1G0dO,(bQ`O1G1aO,)wQ`O1G1cO,+^Q`O1G2VO$8rQaO,5<tO!+iQaO1G2VO!+iQaO7+%tO,+fQ`O7+%tO,,{Q`O7+&OO!+iQaO7+'qO,.bQ`O7+'qO,.jQ`O7+'qO,0PQpO7+'qO,0[Q`O<<I`O,1qQ`O<<K]O,3WQpO<<K]O!+iQaO<<K]O!+iQaOAN@wO,3cQ`OAN@wO,4xQpOAN@wO,5TQ`OG26cO!+iQaOG26cO,6jQ`OLD+}O,8PQaO,5;OO!+iQaO1G0jO,8WQ`O'#IjO$8rQaO'#FlO$8rQaO'#FmO$8rQaO'#FnO$8rQaO'#FoO$8rQaO'#FoO+/mQaO'#FoO$8rQaO'#FrO,9pQaO'#GQO,9zQaO'#GQO$8rQaO'#G`O+/mQaO'#G`O$8rQaO'#GcO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO$8rQaO,5;xO+/mQaO,5;xO,;|Q`O'#FsO!+iQaO'#EbO!+iQaO'#IjO,<UQaO,5:xO,<]QaO,5:xO$8rQaO,5;uO+/mQaO,5;uO$8rQaO,5;wO,>[QdO,5<WO,?}QdO,5<XO,ApQdO,5<YO,CcQdO,5<ZO,EUQdO,5<ZO,FwQ`O,5<ZO,HWQdO,5<^O,IyQdO,5<lO%=XQ`O,5<lO,KlQdO,5<}O$8rQaO1G0YO+/mQaO1G0YO,M_QdO1G1dO- QQ`O1G1dO-!aQdO1G1dO-$SQ`O1G1dO-%cQdO1G1dO-'UQ`O1G1dO-(eQdO1G1dO-*WQ`O1G1dO-+gQdO1G1dO--YQ`O1G1dO-.iQdO1G1dO-0[Q`O1G1dO-1kQdO1G1dO-3^Q`O1G1dO-4mQdO1G1dO-6`Q`O1G1dO-7oQdO1G1dO-9bQ`O1G1dO-:qQdO1G1dO-<dQ`O1G1dO-=sQdO1G1dO-?fQ`O1G1dO-@uQdO1G1dO-BhQ`O1G1dO-CwQdO1G1dO-EjQ`O1G1dO-FyQdO1G1dO-HlQ`O1G1dO-I{QdO1G1dO-KnQ`O1G1dO-L}Q`O,5:|O-NdQ`O,5?UO. yQdO1G0dO.#lQ`O1G0dO$8rQaO1G0dO+/mQaO1G0dO.${QdO1G1aO.&nQ`O1G1aO.'}QdO1G1cO$8rQaO1G2VO$8rQaO7+%tO+/mQaO7+%tO.)pQdO7+%tO.+cQ`O7+%tO.,rQdO7+&OO..eQ`O7+&OO$8rQaO7+'qO./tQdO7+'qO.1gQdO<<I`O.3YQ`O<<I`O.4iQdO<<K]O$8rQaO<<K]O$8rQaOAN@wO.6[QdOAN@wO.7}QdOG26cO$8rQaOG26cO.9pQdOLD+}O.;cQaO,5;OO.;jQaO,5;OO$8rQaO1G0jO+/mQaO1G0jO.=iQ`O'#IjO.>{QdO'#IjO.BbQ`O'#IeO.BoQ`O'#GPO.BwQaO,5:nO.COQ`O,5<kO.CWQdO'#GYO.CiQ`O,5<kO!#[Q`O,5<kO.CqQ`O1G0YO.ETQdO,5:|O.FvQdO,5?UO.HiQ`O1G2VO!#[Q`O1G2VO.HqQdO'#H}O.ISQdO,5?hO2wQ`O1G2VO2wQ`O7+'qO.IbQ`O7+'qO.IjQdO1G2`O.KVQpO7+'qO.KbQpO<<K]O2wQ`O<<K]O.KmQpOAN@wO.KxQdO'#IeO.LcQ`O'#IeO.NVQaO,5:nO.N^QaO,5:nO.NeQ`O,5<kO.NmQ`O7+'qO.NuQ`O1G0YO/!XQ`O1G0YO/#kQ`O1G2VO/#sQ`O7+'qO/#{QpO7+'qO/$WQpOAN@wO/$cQpO<<K]O/$nQpOAN@wO/$yQ`O'#GPO/%RQ`O'#FsO/%ZQ`O,5<kO/%cQdO'#I|O!#[Q`O,5<kO!#[Q`O1G2VO2wQ`O1G2VO2wQ`O7+'qO2wQ`O<<K]O/%qQ`O'#GPO/%yQ`O,5<kO/&RQ`O,5<kO!#[Q`O,5<kO!#[Q`O1G2VO!#[Q`O1G2VO2wQ`O1G2VO2wQ`O<<K]O2wQ`O7+'qO2wQ`O<<K]O/&ZQ`O'#FsO/&cQ`O'#FsO/&kQ`O'#Fs\",\n stateData: \"/'Q~O!eOS!fOS'SOS!hQQ~O!jTO'TRO~OPgOQ|OS!lOU_OW}OX!XO[mO]!_O^!WO`![Oa!SOb!]Ok!dOm!lOowOp!TOq!UOsuOt!gOu!VOv!POxkOykO|!bO}aO!O^O!P!eO!QxO!R}O!TpO!VlO!WlO!X!YO!Y!QO!ZzO![!cO!]!ZO!^!^O!_!fO!a!`O!b!RO!djO!nWO!pXO!z]O#X`O#dhO#fbO#gcO#sdO$[oO$dnO$eoO$hqO$krO$u!kO%TyO%U!OO%W}O%X}O%`|O'WYO'u{O~O!h!mO~O'TRO!j!iX&|!iX'Q!iX~O!j!pO~O!e!qO!f!qO!h!mO'Q!tO'S!qO~PhO!o!vO~PhO!n!tX#T!tX#s#vX'P!tX!y!tX#P!tX!p!tX~OT!tXz!tX!S!tX!c!tX!r!tX!w!tX!z!tX#X!tX#a!tX#b!tX#y!tX$R!tX$S!tX$T!tX$U!tX$V!tX$X!tX$Y!tX$Z!tX$[!tX$]!tX$^!tX$_!tX%T!tX#O!tX#Y!tX!o!tXV!tX#|!tX$O!tXw!tX{!tX~P&sOT'eXz'eX!S'eX!c'eX!w'eX!z'eX#T'eX#X'eX#a'eX#b'eX#y'eX$R'eX$S'eX$T'eX$U'eX$V'eX$X'eX$Y'eX$Z'eX$['eX$]'eX$^'eX$_'eX%T'eX~O!r!xO!n'eX'P'eX~P)dOT#SOz#QO!S#TO!c#UO!n#bO!w!yO!z!|O#T#PO#X!zO#a!{O#b!{O#y#OO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO'P#bO~OPgOQ|OU_OW}O[mOowOs#fOxkOykO}aO!O^O!QxO!R}O!TpO!VlO!WlO!ZzO!djO!z]O#X`O#dhO#fbO#gcO#sdO$[oO$dnO$eoO$hqO%TyO%U!OO%W}O%X}O%`|O'WYO'u{O~O!z]O~O!z#iO~OP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#T#mO#V#lO#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O#Y']P~O#O#qO~P/lO!z#rO~O#d#tO#fbO#gcO~O'a#vO~O#s#zO~OU$OO!R$OO!w#}O#s3hO'W#{O~OT'XXz'XX!S'XX!c'XX!n'XX!w'XX!z'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX'P'XX!y'XX!o'XX~O#|$QO$O$RO~P3YOP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{OT$PXz$PX!S$PX!c$PX!n$PX!w$PX#a$PX#b$PX#y$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX'P$PX!y$PX!o$PX~Or$TO#T8eO#V8dO~P5^O#sdO'WYO~OS$fO]$aOk$dOm$fOs$`O!a$bO$krO$u$eO~O!z$hO#T$jO'W$gO~Oo$mOs$lO#d$nO~O!z$hO#T$rO~O!U$uO$u$tO~P-ROR${O!p$zO#d$yO#g$zO&}${O~O't$}O~P;PO!z%SO~O!z%UO~O!n#bO'P#bO~P-RO!pXO~O!z%`O~OP7wOQ|OU_OW}O[7zOo>uOs#fOx7xOy7xO}aO!O^O!Q8OO!R}O!T7}O!V7yO!W7yO!Z8QO!d:QO!z]O#X`O#dhO#fbO#gcO#sdO$[7|O$d7{O$e7|O$hqO%T8PO%U!OO%W}O%X}O%`|O'WYO'u{O~O!z%dO~O]$aO~O!pXO#sdO'WYO~O]%rOs%rO#s%nO'WYO~O!j%wO'Q%wO'TRO~O'Q%zO~PhO!o%{O~PhO!r%}O~P<XO#Y&PO~P<XO!p&SO#d&RO'a&QO~OPgOQ|OU_OW}O[:WOo?jOs#fOx:UOy:UO}aO!O^O!Q:[O!R}O!T:ZO!V:VO!W:VO!Z:^O!d:TO!z]O#V&WO#X`O#dhO#fbO#gcO#sdO$[:YO$d:XO$e:YO$hqO%T:]O%U!OO%W}O%X}O%`|O'WYO'u{O~O!y'bP~P@aO!p&[O#d&]O'W$gO~OT#SOz#QO!S#TO!c#UO!w!yO!z!|O#T#PO#X!zO#a!{O#b!{O#y#OO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO~O!y&oO~PCVO!z$hO#T&pO~Oo$mOs$lO~O!p&qO~O#O&tO#T=PO#V=OO!y']P~P<XOT8TOz8RO!S8UO!c8VO!w:_O!z!|O#T#PO#X!zO#a!{O#b!{O#y#OO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O'^X#Y'^X~O#P&uO~PEqO#O&xO#Y']X~O#Y&zO~O#O'PO!y'_P~P<XO!o'QO~PCVO!n#uX#T#uX#s#tX'P#uX!y#uX#P#uX!p#uX~OT#uXz#uX!S#uX!c#uX!w#uX!z#uX#X#uX#a#uX#b#uX#y#uX$R#uX$S#uX$T#uX$U#uX$V#uX$X#uX$Y#uX$Z#uX$[#uX$]#uX$^#uX$_#uX%T#uX#O#uX#Y#uX!o#uXV#uX!r#uX#|#uX$O#uXw#uX~PH[O#s'RO~O'a'UO~O#n!tX#V!tX#d!tX~P&sO!y']O#T'ZO#n'XO~O#T'aO~P-RO!n$`a'P$`a!y$`a!o$`a~PCVO!n$aa'P$aa!y$aa!o$aa~PCVO!n$ba'P$ba!y$ba!o$ba~PCVO!n$ca'P$ca!y$ca!o$ca~PCVO!z!|O#X!zO#a!{O#b!{O#y#OO%T#cOT$ca!S$ca!c$ca!n$ca!w$ca#T$ca$R$ca$S$ca$T$ca$U$ca$V$ca$X$ca$Y$ca$Z$ca$[$ca$]$ca$^$ca$_$ca'P$ca!y$ca!o$ca~Oz#QO~PMVO!n$fa'P$fa!y$fa!o$fa~PCVO!z!|O#O$mX#Y$mX~O#O'eO#Y'iX~O#Y'gO~O#T'hO'W$gO~O]'jO~O$u'nO~O!a'tO#T'rO#V'sO#d'qO$krO!y'gP~P2wO!_'zO!pXO!r'yO~O!z$hO'W$gO~O!z$hO~O!z$hO#T(OO~O!z$hO#T(QO~O#|(RO!n$|X#O$|X'P$|X~O#O(SO!n'pX'P'pX~O!n#bO'P#bO~O!r(WO#P(VO~O!n$ta'P$ta!y$ta!o$ta~PCVOl(YOw(ZO!p([O!z!|O~O$u(aO~O!z!|O#X!zO#a!{O#b!{O#y#OO~OT%Saz%Sa!S%Sa!c%Sa!n%Sa!w%Sa#T%Sa$R%Sa$S%Sa$T%Sa$U%Sa$V%Sa$X%Sa$Y%Sa$Z%Sa$[%Sa$]%Sa$^%Sa$_%Sa%T%Sa'P%Sa!y%Sa#O%Sa#P%Sa#Y%Sa!o%Sa!r%SaV%Sa#|%Sa$O%Sa!p%Sa~P!%aO!n%Va'P%Va!y%Va!o%Va~PCVO#X(dO#a(bO#b(bO'O(cOR&sX!p&sX#d&sX#g&sX&}&sX't&sX~O't(gO~P;PO!r(hO~PhO!p(kO!r(lO~O!r(hO'P(oO~PhO!b(sO~O!n(tO~P<XOZ)POn)QO~OT8TOz8RO!S8UO!c8VO!w:_O#O)TO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'xX'P'xX~P!%aOPgOQ|OU_OW}O[:WOo?jOs#fOx:UOy:UO}aO!O^O!Q:[O!R}O!T:ZO!V:VO!W:VO!Z:^O!d:TO!z]O#X`O#dhO#fbO#gcO#sdO$[:YO$d:XO$e:YO$hqO%T:]O%U!OO%W}O%X}O%`|O'WYO'u{O~O#|)XO~O#O)YO!n'oX'P'oX~Ol(YO!p([O~Ow(ZO!p)`O!r)cO~O!n#bO!pXO'P#bO~O#s)fO~OV)iO#O)gO!n'yX'P'yX~O#s)kO'WYO~OT8TOz8RO!S8UO!c8VO!w:_O#O)nO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'ZX'P'ZX#P'ZX~P!%aOl(YOw(ZO!p([O~O!j)tO'Q)tO~OT8TOz8RO!S8UO!c8VO!r)uO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO#Y)wO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'cX#O'cX~P!%aO!r)yO!y'eX#O'eX~P)dO!y#kX#O#kX~P!+iO#O){O!y'bX~O!y)}O~O%T#cOT$Qiz$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi$_$Qi'P$Qi!y$Qi#O$Qi#P$Qi#Y$Qi!o$Qi!r$QiV$Qi#|$Qi$O$Qi!p$Qi~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!c#UO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOT#SOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cO!S$Qi!c$Qi!n$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO#T#PO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$Z#^O$[#_O$^#aO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi~P!%aOz#QO$_#aO%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi~P!%aO_*PO~P<XO!y*SO~O#T*VO~P<XOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O#Ua#Y#Ua#P#Ua!n#Ua'P#Ua!r#Ua!y#Ua!o#UaV#Ua!p#Ua~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O'^a#Y'^a#P'^a!n'^a'P'^a!r'^a!y'^a!o'^aV'^a!p'^a~P!%aO#T#mO#V#lO#O&aX#Y&aX~P<XO#O&xO#Y']a~O#Y*YO~OT8TOz8RO!S8UO!c8VO!w:_O#O*[O#P*ZO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y'_X~P!%aO#O*[O!y'_X~O!y*^O~O!n#wX#T#wX#s#tX'P#wX!y#wX#P#wX!p#wX~OT#wXz#wX!S#wX!c#wX!w#wX!z#wX#X#wX#a#wX#b#wX#y#wX$R#wX$S#wX$T#wX$U#wX$V#wX$X#wX$Y#wX$Z#wX$[#wX$]#wX$^#wX$_#wX%T#wX#O#wX#Y#wX!o#wXV#wX!r#wX#|#wX$O#wXw#wX~P#)XO#s*aO~O#n'XO!y#ma#T#ma#V#ma#d#ma!p#ma#P#ma!n#ma'P#ma~O#T'ZO!y#oa#n#oa#V#oa#d#oa!p#oa#P#oa!n#oa'P#oa~OPgOQ|OU_OW}O[5jOo7dOs#fOx5fOy5fO}aO!O^O!Q3xO!R}O!T5pO!V5hO!W5hO!Z3zO!d5dO!z]O#X`O#dhO#fbO#gcO#sdO$[5nO$d5lO$e5nO$hqO%T3yO%U!OO%W}O%X}O%`|O'WYO'u{O~O#n#uX#V#uX#d#uX~PH[Oz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT#Qi!S#Qi!c#Qi!n#Qi'P#Qi!y#Qi!o#Qi~P!%aOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT#}i!S#}i!c#}i!n#}i'P#}i!y#}i!o#}i~P!%aO!n$Pi'P$Pi!y$Pi!o$Pi~PCVO#sdO'WYO#O&iX#Y&iX~O#O'eO#Y'ia~Ow(ZO!p)`O!r*rO~O#T*wO#V*yO#d*xO#n'XO~O#T*{O#V*yO#d*xO$krO~P2wO#|*|O!y$jX#O$jX~O#V*yO#d*xO~O#d*}O~O#d+PO~P2wO#O+QO!y'gX~O!y+SO~O!z+UO~O!_+YO!pXO!r+XO~O!r+[O!p'qi!n'qi'P'qi~O!r+_O#P+^O~O#d$nO!n&qX#O&qX'P&qX~O#O(SO!n'pa'P'pa~OT$tiz$ti!S$ti!c$ti!n$ti!w$ti!z$ti#T$ti#X$ti#a$ti#b$ti#y$ti#|#ha$O#ha$R$ti$S$ti$T$ti$U$ti$V$ti$X$ti$Y$ti$Z$ti$[$ti$]$ti$^$ti$_$ti%T$ti'P$ti!y$ti#O$ti#P$ti#Y$ti!o$ti!r$tiV$ti!p$ti~OS+kO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o+uO#d>xO$hqO$krO~P2wO#X+|O#a+{O#b+{O~O#d,OO%W,OO%^+}O'W$gO~O!o,PO~PCVOc%bXd%bXh%bXj%bXf%bXg%bXe%bX~PhOc,TOd,ROP%aiQ%aiS%aiU%aiW%aiX%ai[%ai]%ai^%ai`%aia%aib%aik%aim%aio%aip%aiq%ais%ait%aiu%aiv%aix%aiy%ai|%ai}%ai!O%ai!P%ai!Q%ai!R%ai!T%ai!V%ai!W%ai!X%ai!Y%ai!Z%ai![%ai!]%ai!^%ai!_%ai!a%ai!b%ai!d%ai!n%ai!p%ai!z%ai#X%ai#d%ai#f%ai#g%ai#s%ai$[%ai$d%ai$e%ai$h%ai$k%ai$u%ai%T%ai%U%ai%W%ai%X%ai%`%ai&|%ai'W%ai'u%ai'Q%ai!o%aih%aij%aif%aig%aiY%ai_%aii%aie%ai~Oc,XOd,UOh,WO~OY,YO_,ZO!o,^O~OY,YO_,ZOi%gX~Oi,`O~Oj,aO~O!n,cO~P<XO!n,eO~Of,fO~OT8TOV,gOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOg,hO~O!z,iO~OZ)POn)QOP%uiQ%uiS%uiU%uiW%uiX%ui[%ui]%ui^%ui`%uia%uib%uik%uim%uio%uip%uiq%uis%uit%uiu%uiv%uix%uiy%ui|%ui}%ui!O%ui!P%ui!Q%ui!R%ui!T%ui!V%ui!W%ui!X%ui!Y%ui!Z%ui![%ui!]%ui!^%ui!_%ui!a%ui!b%ui!d%ui!n%ui!p%ui!z%ui#X%ui#d%ui#f%ui#g%ui#s%ui$[%ui$d%ui$e%ui$h%ui$k%ui$u%ui%T%ui%U%ui%W%ui%X%ui%`%ui&|%ui'W%ui'u%ui'Q%ui!o%uic%uid%uih%uij%uif%uig%uiY%ui_%uii%uie%ui~O#|,mO~O#O)TO!n%ma'P%ma~O!y,pO~O'W$gO!n&pX#O&pX'P&pX~O#O)YO!n'oa'P'oa~OS+kOY,vO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o,yO#d>xO$hqO$krO~P2wO!p)`O~OU$OO!R$OO!w3nO#s3iO'W,zO~O#s,|O~O!p-OO'a'UO~O#sdO'WYO!n&zX#O&zX'P&zX~O#O)gO!n'ya'P'ya~O#s-UO~O!n&_X#O&_X'P&_X#P&_X~P<XO#O)nO!n'Za'P'Za#P'Za~Oz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT!vq!S!vq!c!vq!n!vq!w!vq'P!vq!y!vq!o!vq~P!%aO!o-ZO~PCVOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ka#O#ka~P!%aO!y&cX#O&cX~P@aO#O){O!y'ba~O!o-_O~PCVO#P-`O~O#O-aO!o'YX~O!o-cO~O!y-dO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O#Wi#Y#Wi~P!%aO!y&bX#O&bX~P<XO#O*[O!y'_a~O!y-jO~O#n'XO!y&ea#T&ea#V&ea#d&ea!p&ea#P&ea!n&ea'P&ea~OT#lqz#lq!S#lq!c#lq!n#lq!w#lq#T#lq#|#lq$O#lq$R#lq$S#lq$T#lq$U#lq$V#lq$X#lq$Y#lq$Z#lq$[#lq$]#lq$^#lq$_#lq%T#lq'P#lq!y#lq#O#lq#P#lq#Y#lq!o#lq!r#lqV#lq!p#lq~P!%aO#n#wX#V#wX#d#wX~P#)XOz#QO!w!yO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT#Qq!S#Qq!c#Qq!n#Qq'P#Qq!y#Qq!o#Qq~P!%aO#V-sO#d-rO~P2wO#|-tO!y$ja#O$ja~O#d-uO~O#T-vO#V-sO#d-rO#n'XO~O#V-sO#d-rO~O#T'ZO#d-xO#n'XO~O!p-yO#|-zO!y$oa#O$oa~O!a'tO#T'rO#V'sO#d'qO$krO!y&kX#O&kX~P2wO#O+QO!y'ga~O!pXO#T'ZO#n'XO~O#T.QO#d.PO!y'kP~O!pXO!r.SO~O!r.VO!p'qq!n'qq'P'qq~O!_.XO!pXO!r.SO~O!r.]O#P.[O~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n$|i#O$|i'P$|i~P!%aO!n$sq'P$sq!y$sq!o$sq~PCVO#P.[O#T'ZO#n'XO~O#O.^Ow'lX!p'lX!n'lX'P'lX~O#T'ZO#d>xO#n'XO~OS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO$krO~P2wOS+kO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO!n#bO!p-yO'P#bO~OS+kO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o.mO#d>xO$hqO$krO~P2wO#d.rO%W.rO%^+}O'W$gO~O%W.sO~O#Y.tO~Oc%bad%bah%baj%baf%bag%bae%ba~PhOc.wOd,ROP%aqQ%aqS%aqU%aqW%aqX%aq[%aq]%aq^%aq`%aqa%aqb%aqk%aqm%aqo%aqp%aqq%aqs%aqt%aqu%aqv%aqx%aqy%aq|%aq}%aq!O%aq!P%aq!Q%aq!R%aq!T%aq!V%aq!W%aq!X%aq!Y%aq!Z%aq![%aq!]%aq!^%aq!_%aq!a%aq!b%aq!d%aq!n%aq!p%aq!z%aq#X%aq#d%aq#f%aq#g%aq#s%aq$[%aq$d%aq$e%aq$h%aq$k%aq$u%aq%T%aq%U%aq%W%aq%X%aq%`%aq&|%aq'W%aq'u%aq'Q%aq!o%aqh%aqj%aqf%aqg%aqY%aq_%aqi%aqe%aq~Oc.|Od,UOh.{O~O!r(hO~OP7wOQ|OU_OW}O[<ROo?sOs#fOx<POy<PO}aO!O^O!Q<WO!R}O!T<VO!V<QO!W<QO!Z<[O!d:RO!z]O#X`O#dhO#fbO#gcO#sdO$[<TO$d<SO$e<TO$hqO%T<YO%U!OO%W}O%X}O%`|O'WYO'u{O~O!n/PO!r/PO~OY,YO_,ZO!o/RO~OY,YO_,ZOi%ga~O!y/VO~P!+iO!n/XO~O!n/XO~P<XOQ|OW}O!R}O%W}O%X}O%`|O'u{O~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n&wa#O&wa'P&wa~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n$zi#O$zi'P$zi~P!%aOS+kOY/cO].cOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO$krO~P2wOS+kOY,vO]+nOm+kOs$`O!U+kO!_+qO!`+kO!a+kO!o/fO#d>xO$hqO$krO~P2wOw!tX!p!tX#T!tX#n!tX#s#vX#|!tX'W!tX~Ow(ZO!p)`O#T3tO#n3sO~O!p-OO'a&fa~O]/nOs/nO#sdO'WYO~OV/rO!n&za#O&za'P&za~O#O)gO!n'yi'P'yi~O#s/tO~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n&_a#O&_a'P&_a#P&_a~P!%aOz#QO#T#PO$R#RO$S#VO$T#WO$U#XO$V#YO$X#[O$Y#]O$Z#^O$[#_O$]#`O$^#aO$_#aO%T#cOT!vy!S!vy!c!vy!n!vy!w!vy'P!vy!y!vy!o!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#ji#O#ji~P!%aO_*PO!o&`X#O&`X~P<XO#O-aO!o'Ya~OT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O#Wq#Y#Wq~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#]i#O#]i~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P/yO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y&ba#O&ba~P!%aO#|0OO!y$ji#O$ji~O#d0PO~O#V0SO#d0RO~P2wOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ji#O$ji~P!%aO!p-yO#|0TO!y$oi#O$oi~O!o0YO'W$gO~O#O0[O!y'kX~O#d0^O~O!y0_O~O!pXO!r0bO~O#T'ZO#n'XO!p'qy!n'qy'P'qy~O!n$sy'P$sy!y$sy!o$sy~PCVO#P0eO#T'ZO#n'XO~O#sdO'WYOw&mX!p&mX#O&mX!n&mX'P&mX~O#O.^Ow'la!p'la!n'la'P'la~OS+kO]0mOm+kOs$`O!U+kO!`+kO!a+kO#d>xO$hqO~P2wO#T3tO#n3sO'W$gO~O#|)XO#T'eX#n'eX'W'eX~O!n#bO!p0sO'P#bO~O#Y0wO~Oh0|O~OT<aOz<]O!S<cO!c<eO!n0}O!r0}O!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO~P!%aOY%fa_%fa!o%fai%fa~PhO!y1PO~O!y1PO~P!+iO!n1RO~OT8TOz8RO!S8UO!c8VO!w:_O!y1TO#P1SO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aO!y1TO~O!y1UO#T'ZO#d1VO#n'XO~O!y1WO~O!n#bO#|1ZO'P#bO~O#n3sOw#ma!p#ma#T#ma'W#ma~O#T3tOw#oa!p#oa#n#oa'W#oa~Ow#uX!p#uX#T#uX#n#uX#s#tX'W#uX~O!p-OO'a*`O~OV1`O!o&VX#O&VX~O#O1bO!o'zX~O!o1dO~O#O)gO!n'yq'P'yq~OT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!o!}i#O!}i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jq#O$jq~P!%aO#|1kO!y$jq#O$jq~O#d1lO~O!n#bO!pXO!z$hO#P1oO'P#bO~O!o1rO'W$gO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oq#O$oq~P!%aO#T1tO#d1sO!y&lX#O&lX~O#O0[O!y'ka~O#T'ZO#n'XO!p'q!R!n'q!R'P'q!R~O!pXO!r1yO~O!n$s!R'P$s!R!y$s!R!o$s!R~PCVO#P1{O#T'ZO#n'XO~OP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!Q<XO!T:rO!V:rO!W:rO!Z:rO!d:SO!o2XO!z]O#X`O#dhO#fbO#gcO#sdO$[<UO$d:rO$e<UO$hqO%T<ZO%U!OO'WYO~P$<UOh2ZO~OY%ei_%ei!o%eii%ei~PhOY%fi_%fi!o%fii%fi~PhO!y2^O~O!y2^O~P!+iO!y2aO~O!n#bO#|2eO'P#bO~O%W2fO%`2fO~O#n3sOw&ea!p&ea#T&ea'W&ea~Ow#wX!p#wX#T#wX#n#wX#s#tX'W#wX~OV2iO!o&Va#O&Va~O]2kOs2kO#sdO'WYO!o&{X#O&{X~O#O1bO!o'za~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#^i#O#^i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$jy#O$jy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$oy#O$oy~P!%aO!pXO#P2rO~O#d2sO~O#O0[O!y'ki~O!n$s!Z'P$s!Z!y$s!Z!o$s!Z~PCVOT<bOz<^O!S<dO!c<fO!w?_O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cO~P!%aOV2{O{2zO~P)dOV2{O{2zOT'[Xz'[X!S'[X!c'[X!w'[X!z'[X#T'[X#X'[X#a'[X#b'[X#y'[X#|'[X$O'[X$R'[X$S'[X$T'[X$U'[X$V'[X$X'[X$Y'[X$Z'[X$['[X$]'[X$^'[X$_'[X%T'[X~OP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!Q<XO!T:rO!V:rO!W:rO!Z:rO!d:SO!o3OO!z]O#X`O#dhO#fbO#gcO#sdO$[<UO$d:rO$e<UO$hqO%T<ZO%U!OO'WYO~P$<UOY%eq_%eq!o%eqi%eq~PhO!y3QO~O!y%pi~PCVOe3RO~O%W3SO%`3SO~OV3VO!o&WX#O&WX~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$j!R#O$j!R~P!%aO!n$s!c'P$s!c!y$s!c!o$s!c~PCVO!a3`O'W$gO~OV3dO!o&Wa#O&Wa~O'W$gO!n%Ri'P%Ri~O'a'_O~O'a/jO~O'a*iO~O'a1]O~OT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ta#|$ta$O$ta'P$ta!y$ta!o$ta#O$ta~P!%aO#T3uO~P-RO#s3lO~O#s3mO~O!U$uO$u$tO~P#-WOT8TOz8RO!S8UO!c8VO!w:_O#P3pO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X'P'^X!y'^X!o'^X~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#P5aO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O'^X#Y'^X#|'^X$O'^X!n'^X'P'^X!r'^X!y'^X!o'^XV'^X!p'^X~P!%aO#T5OO~P#-WOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$`a#|$`a$O$`a'P$`a!y$`a!o$`a#O$`a~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$aa#|$aa$O$aa'P$aa!y$aa!o$aa#O$aa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ba#|$ba$O$ba'P$ba!y$ba!o$ba#O$ba~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$ca#|$ca$O$ca'P$ca!y$ca!o$ca#O$ca~P!%aOz3{O#|$ca$O$ca#O$ca~PMVOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$fa#|$fa$O$fa'P$fa!y$fa!o$fa#O$fa~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n%Va#|%Va$O%Va'P%Va!y%Va!o%Va#O%Va~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!S$Qi!c$Qi!n$Qi#|$Qi$O$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O#T#PO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$Z4XO$[4YO$^4[O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOz3{O$_4[O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!w$Qi#T$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi'P$Qi!y$Qi!o$Qi#O$Qi~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n#Ua#|#Ua$O#Ua'P#Ua!y#Ua!o#Ua#O#Ua~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n'^a#|'^a$O'^a'P'^a!y'^a!o'^a#O'^a~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qi!S#Qi!c#Qi!n#Qi#|#Qi$O#Qi'P#Qi!y#Qi!o#Qi#O#Qi~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#}i!S#}i!c#}i!n#}i#|#}i$O#}i'P#}i!y#}i!o#}i#O#}i~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$Pi#|$Pi$O$Pi'P$Pi!y$Pi!o$Pi#O$Pi~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vq!S!vq!c!vq!n!vq!w!vq#|!vq$O!vq'P!vq!y!vq!o!vq#O!vq~P!%aOz3{O!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT#Qq!S#Qq!c#Qq!n#Qq#|#Qq$O#Qq'P#Qq!y#Qq!o#Qq#O#Qq~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sq#|$sq$O$sq'P$sq!y$sq!o$sq#O$sq~P!%aOz3{O#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cOT!vy!S!vy!c!vy!n!vy!w!vy#|!vy$O!vy'P!vy!y!vy!o!vy#O!vy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$sy#|$sy$O$sy'P$sy!y$sy!o$sy#O$sy~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!R#|$s!R$O$s!R'P$s!R!y$s!R!o$s!R#O$s!R~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!Z#|$s!Z$O$s!Z'P$s!Z!y$s!Z!o$s!Z#O$s!Z~P!%aOT3}Oz3{O!S4OO!c4PO!w5rO#T#PO$R3|O$S4QO$T4RO$U4SO$V4TO$X4VO$Y4WO$Z4XO$[4YO$]4ZO$^4[O$_4[O%T#cO!n$s!c#|$s!c$O$s!c'P$s!c!y$s!c!o$s!c#O$s!c~P!%aOP7wOU_O[5kOo9xOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!V5iO!W5iO!Z5}O!d5eO!z]O#T5bO#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO%T5|O%U!OO'WYO~P$<UOP7wOU_O[5kOo9xOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!V5iO!W5iO!Z5}O!d5eO!z]O#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO%T5|O%U!OO'WYO~P$<UO#|4aO$O4bO#O'XX~P3YOP7wOU_O[5kOo9xOr4cOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!V5iO!W5iO!Z5}O!d5eO!z]O#T4`O#V4_O#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO%T5|O%U!OO'WYOT$PXz$PX!S$PX!c$PX!n$PX!w$PX#a$PX#b$PX#y$PX#|$PX$O$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX'P$PX!y$PX!o$PX#O$PX~P$<UOP7wOU_O[5kOo9xOr6dOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!V5iO!W5iO!Z5}O!d5eO!z]O#T6aO#V6`O#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO%T5|O%U!OO'WYOT$PXz$PX!S$PX!c$PX!w$PX#O$PX#P$PX#Y$PX#a$PX#b$PX#y$PX#|$PX$O$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX!n$PX'P$PX!r$PX!y$PX!o$PXV$PX!p$PX~P$<UO!r4kO~P<XO!r7iO#P5RO~OT8TOz8RO!S8UO!c8VO!r5SO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aO!r7jO#P5VO~O!r7kO#P5ZO~O#P5ZO#T'ZO#n'XO~O#P5[O#T'ZO#n'XO~O#P5_O#T'ZO#n'XO~OP7wOU_O[5kOo9xOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!U$uO!V5iO!W5iO!Z5}O!d5eO!z]O#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO$u$tO%T5|O%U!OO'WYO~P$<UOP7wOU_O[5kOo9xOs#fOx5gOy5gO}aO!O^O!Q5{O!T5qO!V5iO!W5iO!Z5}O!d5eO!z]O#T7PO#X`O#dhO#fbO#gcO#sdO$[5oO$d5mO$e5oO$hqO%T5|O%U!OO'WYO~P$<UOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$`a#P$`a#Y$`a#|$`a$O$`a!n$`a'P$`a!r$`a!y$`a!o$`aV$`a!p$`a~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$aa#P$aa#Y$aa#|$aa$O$aa!n$aa'P$aa!r$aa!y$aa!o$aaV$aa!p$aa~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$ba#P$ba#Y$ba#|$ba$O$ba!n$ba'P$ba!r$ba!y$ba!o$baV$ba!p$ba~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$ca#P$ca#Y$ca#|$ca$O$ca!n$ca'P$ca!r$ca!y$ca!o$caV$ca!p$ca~P!%aOz6OO#O$ca#P$ca#Y$ca#|$ca$O$ca!r$caV$ca!p$ca~PMVOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$fa#P$fa#Y$fa#|$fa$O$fa!n$fa'P$fa!r$fa!y$fa!o$faV$fa!p$fa~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O%Va#P%Va#Y%Va#|%Va$O%Va!n%Va'P%Va!r%Va!y%Va!o%VaV%Va!p%Va~P!%aOz6OO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi#|$Qi$O$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi#|$Qi$O$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT6QOz6OO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO!S$Qi#O$Qi#P$Qi#Y$Qi#|$Qi$O$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT6QOz6OO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi#|$Qi$O$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO#T#PO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO#T#PO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO#T#PO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO#T#PO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO$[6]O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO$Z6[O$[6]O$^6_O$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz6OO$_6_O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi#|$Qi$O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O#Ua#P#Ua#Y#Ua#|#Ua$O#Ua!n#Ua'P#Ua!r#Ua!y#Ua!o#UaV#Ua!p#Ua~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O'^a#P'^a#Y'^a#|'^a$O'^a!n'^a'P'^a!r'^a!y'^a!o'^aV'^a!p'^a~P!%aOz6OO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT#Qi!S#Qi!c#Qi#O#Qi#P#Qi#Y#Qi#|#Qi$O#Qi!n#Qi'P#Qi!r#Qi!y#Qi!o#QiV#Qi!p#Qi~P!%aOz6OO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT#}i!S#}i!c#}i#O#}i#P#}i#Y#}i#|#}i$O#}i!n#}i'P#}i!r#}i!y#}i!o#}iV#}i!p#}i~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$Pi#P$Pi#Y$Pi#|$Pi$O$Pi!n$Pi'P$Pi!r$Pi!y$Pi!o$PiV$Pi!p$Pi~P!%aOz6OO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT!vq!S!vq!c!vq!w!vq#O!vq#P!vq#Y!vq#|!vq$O!vq!n!vq'P!vq!r!vq!y!vq!o!vqV!vq!p!vq~P!%aOz6OO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT#Qq!S#Qq!c#Qq#O#Qq#P#Qq#Y#Qq#|#Qq$O#Qq!n#Qq'P#Qq!r#Qq!y#Qq!o#QqV#Qq!p#Qq~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$sq#P$sq#Y$sq#|$sq$O$sq!n$sq'P$sq!r$sq!y$sq!o$sqV$sq!p$sq~P!%aOz6OO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cOT!vy!S!vy!c!vy!w!vy#O!vy#P!vy#Y!vy#|!vy$O!vy!n!vy'P!vy!r!vy!y!vy!o!vyV!vy!p!vy~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$sy#P$sy#Y$sy#|$sy$O$sy!n$sy'P$sy!r$sy!y$sy!o$syV$sy!p$sy~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$s!R#P$s!R#Y$s!R#|$s!R$O$s!R!n$s!R'P$s!R!r$s!R!y$s!R!o$s!RV$s!R!p$s!R~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$s!Z#P$s!Z#Y$s!Z#|$s!Z$O$s!Z!n$s!Z'P$s!Z!r$s!Z!y$s!Z!o$s!ZV$s!Z!p$s!Z~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$s!c#P$s!c#Y$s!c#|$s!c$O$s!c!n$s!c'P$s!c!r$s!c!y$s!c!o$s!cV$s!c!p$s!c~P!%aO#T7cO~P#-WO!z$hO#T7gO~O!y5uO#T'ZO#n'XO~O!z$hO#T7hO~OT6QOz6OO!S6RO!c6SO!w7oO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO#O$ta#P$ta#Y$ta#|$ta$O$ta!n$ta'P$ta!r$ta!y$ta!o$taV$ta!p$ta~P!%aOT6QOz6OO!S6RO!c6SO!w7oO#P7bO#T#PO$R6PO$S6TO$T6UO$U6VO$V6WO$X6YO$Y6ZO$Z6[O$[6]O$]6^O$^6_O$_6_O%T#cO!n'^X#|'^X$O'^X'P'^X!y'^X!o'^X#O'^X~P!%aO#|6bO$O6cO#O'XX#P'XX#Y'XX!r'XXV'XX!p'XX~P3YO!r6lO~P<XO!r9|O#P7SO~OT8TOz8RO!S8UO!c8VO!r7TO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aO!r9}O#P7WO~O!r:OO#P7[O~O#P7[O#T'ZO#n'XO~O#P7]O#T'ZO#n'XO~O#P7`O#T'ZO#n'XO~O!U$uO$u$tO~P<XOo7fOs$lO~O#T9ZO~P<XOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$`a#P$`a#Y$`a!n$`a'P$`a!r$`a!y$`a!o$`aV$`a!p$`a~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$aa#P$aa#Y$aa!n$aa'P$aa!r$aa!y$aa!o$aaV$aa!p$aa~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$ba#P$ba#Y$ba!n$ba'P$ba!r$ba!y$ba!o$baV$ba!p$ba~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$ca#P$ca#Y$ca!n$ca'P$ca!r$ca!y$ca!o$caV$ca!p$ca~P!%aOz8RO#O$ca#P$ca#Y$ca!r$caV$ca!p$ca~PMVOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$fa#P$fa#Y$fa!n$fa'P$fa!r$fa!y$fa!o$faV$fa!p$fa~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$ta#P$ta#Y$ta!n$ta'P$ta!r$ta!y$ta!o$taV$ta!p$ta~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O%Va#P%Va#Y%Va!n%Va'P%Va!r%Va!y%Va!o%VaV%Va!p%Va~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#O9_O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'xX~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#O9aO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'ZX~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOT8TOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!S$Qi!c$Qi#O$Qi#P$Qi#Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO#T#PO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$Z8_O$[8`O$^8bO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aOz8RO$_8bO%T#cOT$Qi!S$Qi!c$Qi!w$Qi#O$Qi#P$Qi#T$Qi#Y$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi!n$Qi'P$Qi!r$Qi!y$Qi!o$QiV$Qi!p$Qi~P!%aO#T9fO~P!+iO!n#Ua'P#Ua!y#Ua!o#Ua~PCVO!n'^a'P'^a!y'^a!o'^a~PCVO#T=PO#V=OO!y&aX#O&aX~P<XO#O9WO!y']a~Oz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT#Qi!S#Qi!c#Qi#O#Qi#P#Qi#Y#Qi!n#Qi'P#Qi!r#Qi!y#Qi!o#QiV#Qi!p#Qi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT#}i!S#}i!c#}i#O#}i#P#}i#Y#}i!n#}i'P#}i!r#}i!y#}i!o#}iV#}i!p#}i~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$Pi#P$Pi#Y$Pi!n$Pi'P$Pi!r$Pi!y$Pi!o$PiV$Pi!p$Pi~P!%aO#O9_O!y%ma~O!y&_X#O&_X~P!+iO#O9aO!y'Za~Oz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT!vq!S!vq!c!vq!w!vq#O!vq#P!vq#Y!vq!n!vq'P!vq!r!vq!y!vq!o!vqV!vq!p!vq~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wi#O#Wi~P!%aOz8RO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT#Qq!S#Qq!c#Qq#O#Qq#P#Qq#Y#Qq!n#Qq'P#Qq!r#Qq!y#Qq!o#QqV#Qq!p#Qq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sq#P$sq#Y$sq!n$sq'P$sq!r$sq!y$sq!o$sqV$sq!p$sq~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&wa#O&wa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y&_a#O&_a~P!%aOz8RO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cOT!vy!S!vy!c!vy!w!vy#O!vy#P!vy#Y!vy!n!vy'P!vy!r!vy!y!vy!o!vyV!vy!p!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Wq#O#Wq~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$sy#P$sy#Y$sy!n$sy'P$sy!r$sy!y$sy!o$syV$sy!p$sy~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!R#P$s!R#Y$s!R!n$s!R'P$s!R!r$s!R!y$s!R!o$s!RV$s!R!p$s!R~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!Z#P$s!Z#Y$s!Z!n$s!Z'P$s!Z!r$s!Z!y$s!Z!o$s!ZV$s!Z!p$s!Z~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO#O$s!c#P$s!c#Y$s!c!n$s!c'P$s!c!r$s!c!y$s!c!o$s!cV$s!c!p$s!c~P!%aO#T9vO~P<XO#P9uO!n'^X'P'^X!r'^X!y'^X!o'^XV'^X!p'^X~PEqO!z$hO#T9zO~O!z$hO#T9{O~O#|8fO$O8gO#O'XX#P'XX#Y'XX!r'XXV'XX!p'XX~P3YOr8hO#T#mO#V#lO#O$PX#P$PX#Y$PX!r$PXV$PX!p$PX~P5^Or=UO#T:sO#V:qOT$PXz$PX!S$PX!c$PX!n$PX!r$PX!w$PX#a$PX#b$PX#y$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX!o$PX#O$PX!p$PX'P$PX~P<XOr:rO#T:rO#V:rOT$PXz$PX!S$PX!c$PX!w$PX#a$PX#b$PX#y$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX~P<XOr:wO#T=PO#V=OOT$PXz$PX!S$PX!c$PX!w$PX!y$PX#O$PX#a$PX#b$PX#y$PX$R$PX$S$PX$T$PX$U$PX$V$PX$X$PX$Y$PX$Z$PX$]$PX$^$PX$_$PX~P<XO!U$uO$u$tO~P!+iO!r8sO~P<XOT8TOz8RO!S8UO!c8VO!w:_O#P9TO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y'^X#O'^X~P!%aOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!Q<XO!T:rO!V:rO!W:rO!Z:rO!d:SO!z]O#X`O#dhO#fbO#gcO#sdO$[<UO$d:rO$e<UO$hqO%T<ZO%U!OO'WYO~P$<UO#O9WO!y']X~O#T;eO~P!+iOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$`a#O$`a~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$aa#O$aa~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ba#O$ba~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ca#O$ca~P!%aOz:`O%T#cOT$ca!S$ca!c$ca!w$ca!y$ca#O$ca#T$ca$R$ca$S$ca$T$ca$U$ca$V$ca$X$ca$Y$ca$Z$ca$[$ca$]$ca$^$ca$_$ca~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$fa#O$fa~P!%aO!r?SO#P9^O~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$ta#O$ta~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y%Va#O%Va~P!%aOT8TOz8RO!S8UO!c8VO!r9cO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!y$Qi#O$Qi~P!%aOT:bOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!S$Qi!c$Qi!y$Qi#O$Qi~P!%aOz:`O#T#PO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi~P!%aOz:`O#T#PO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi~P!%aOz:`O#T#PO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi~P!%aOz:`O#T#PO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz:`O$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi~P!%aOz:`O$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi~P!%aOz:`O$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi~P!%aOz:`O$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi~P!%aOz:`O$Z:lO$[:mO$^:oO$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi~P!%aOz:`O$_:oO%T#cOT$Qi!S$Qi!c$Qi!w$Qi!y$Qi#O$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qi!S#Qi!c#Qi!y#Qi#O#Qi~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#}i!S#}i!c#}i!y#}i#O#}i~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$Pi#O$Pi~P!%aO!r?TO#P9hO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vq!S!vq!c!vq!w!vq!y!vq#O!vq~P!%aOz:`O!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT#Qq!S#Qq!c#Qq!y#Qq#O#Qq~P!%aO!r?YO#P9oO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sq#O$sq~P!%aO#P9oO#T'ZO#n'XO~Oz:`O#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cOT!vy!S!vy!c!vy!w!vy!y!vy#O!vy~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$sy#O$sy~P!%aO#P9pO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!R#O$s!R~P!%aO#P9sO#T'ZO#n'XO~OT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!Z#O$s!Z~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y$s!c#O$s!c~P!%aO#T;}O~P!+iOT8TOz8RO!S8UO!c8VO!w:_O#P;|O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!y'^X#O'^X~P!%aO!U$uO$u$tO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!Q<XO!T:rO!U$uO!V:rO!W:rO!Z:rO!d:SO!z]O#X`O#dhO#fbO#gcO#sdO$[<UO$d:rO$e<UO$hqO$u$tO%T<ZO%U!OO'WYO~P$<UOo9yOs$lO~O#T>VO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!Q<XO!T:rO!V:rO!W:rO!Z:rO!d:SO!z]O#T>WO#X`O#dhO#fbO#gcO#sdO$[<UO$d:rO$e<UO$hqO%T<ZO%U!OO'WYO~P$<UOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$`a!r$`a!o$`a#O$`a!p$`a'P$`a~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$aa!r$aa!o$aa#O$aa!p$aa'P$aa~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$ba!r$ba!o$ba#O$ba!p$ba'P$ba~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$ca!r$ca!o$ca#O$ca!p$ca'P$ca~P!%aOz<]O%T#cOT$ca!S$ca!c$ca!n$ca!r$ca!w$ca#T$ca$R$ca$S$ca$T$ca$U$ca$V$ca$X$ca$Y$ca$Z$ca$[$ca$]$ca$^$ca$_$ca!o$ca#O$ca!p$ca'P$ca~P!%aOz<^O%T#cOT$ca!S$ca!c$ca!w$ca#T$ca$R$ca$S$ca$T$ca$U$ca$V$ca$X$ca$Y$ca$Z$ca$[$ca$]$ca$^$ca$_$ca~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$fa!r$fa!o$fa#O$fa!p$fa'P$fa~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$ta!r$ta!o$ta#O$ta!p$ta'P$ta~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n%Va!r%Va!o%Va#O%Va!p%Va'P%Va~P!%aOz<]O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi~P!%aOz<]O!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O!w?_O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi~P!%aOT<aOz<]O!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!S$Qi!n$Qi!r$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOT<bOz<^O!c<fO!w?_O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cO!S$Qi~P!%aOT<aOz<]O!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!S$Qi!c$Qi!n$Qi!r$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOT<bOz<^O!w?_O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cO!S$Qi!c$Qi~P!%aOz<]O#T#PO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi$R$Qi$S$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O#T#PO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi$R$Qi$S$Qi~P!%aOz<]O#T#PO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi$R$Qi$S$Qi$T$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O#T#PO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi$R$Qi$S$Qi$T$Qi~P!%aOz<]O#T#PO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O#T#PO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi~P!%aOz<]O#T#PO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O#T#PO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz<]O$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi~P!%aOz<]O$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi~P!%aOz<]O$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi~P!%aOz<]O$[<wO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O$[<xO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$]$Qi~P!%aOz<]O$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi~P!%aOz<]O$Z<uO$[<wO$^<{O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O$Z<vO$[<xO$^<|O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$]$Qi~P!%aOz<]O$_<{O%T#cOT$Qi!S$Qi!c$Qi!n$Qi!r$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi!o$Qi#O$Qi!p$Qi'P$Qi~P!%aOz<^O$_<|O%T#cOT$Qi!S$Qi!c$Qi!w$Qi#T$Qi$R$Qi$S$Qi$T$Qi$U$Qi$V$Qi$X$Qi$Y$Qi$Z$Qi$[$Qi$]$Qi$^$Qi~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y#Ua#O#Ua~P!%aOT:bOz:`O!S:cO!c:dO!w>vO#T#PO$R:aO$S:eO$T:fO$U:gO$V:hO$X:jO$Y:kO$Z:lO$[:mO$]:nO$^:oO$_:oO%T#cO!y'^a#O'^a~P!%aOz<]O!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT#Qi!S#Qi!c#Qi!n#Qi!r#Qi!o#Qi#O#Qi!p#Qi'P#Qi~P!%aOz<^O!w?_O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT#Qi!S#Qi!c#Qi~P!%aOz<]O!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT#}i!S#}i!c#}i!n#}i!r#}i!o#}i#O#}i!p#}i'P#}i~P!%aOz<^O!w?_O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT#}i!S#}i!c#}i~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$Pi!r$Pi!o$Pi#O$Pi!p$Pi'P$Pi~P!%aOz<]O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT!vq!S!vq!c!vq!n!vq!r!vq!w!vq!o!vq#O!vq!p!vq'P!vq~P!%aOz<^O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT!vq!S!vq!c!vq!w!vq~P!%aOz<]O!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT#Qq!S#Qq!c#Qq!n#Qq!r#Qq!o#Qq#O#Qq!p#Qq'P#Qq~P!%aOz<^O!w?_O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT#Qq!S#Qq!c#Qq~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$sq!r$sq!o$sq#O$sq!p$sq'P$sq~P!%aOz<]O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cOT!vy!S!vy!c!vy!n!vy!r!vy!w!vy!o!vy#O!vy!p!vy'P!vy~P!%aOz<^O#T#PO$R<`O$S<hO$T<jO$U<lO$V<nO$X<rO$Y<tO$Z<vO$[<xO$]<zO$^<|O$_<|O%T#cOT!vy!S!vy!c!vy!w!vy~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$sy!r$sy!o$sy#O$sy!p$sy'P$sy~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$s!R!r$s!R!o$s!R#O$s!R!p$s!R'P$s!R~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$s!Z!r$s!Z!o$s!Z#O$s!Z!p$s!Z'P$s!Z~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$s!c!r$s!c!o$s!c#O$s!c!p$s!c'P$s!c~P!%aO#T>pO~P$8rOP7wOU_O[:rOo?tOs#fOx:rOy:rO}aO!O^O!Q<XO!T:rO!V:rO!W:rO!Z:rO!d:SO!z]O#T>qO#X`O#dhO#fbO#gcO#sdO$[<UO$d:rO$e<UO$hqO%T<ZO%U!OO'WYO~P$<UOT8TOz8RO!S8UO!c8VO!w:_O#P>oO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!w:_O#P>nO#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO!n'^X!r'^X!o'^X#O'^X!p'^X'P'^X~P!%aOT'XXz'XX!S'XX!c'XX!w'XX!z'XX#O'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX~O#|:uO$O:vO!y'XX~P.@qO!z$hO#T>zO~O!r;SO~P<XO!z$hO#T?PO~O#|;iO!n$|X!p$|X#O$|X'P$|X~O!r?pO#P;jO~OT8TOz8RO!S8UO!c8VO!r;kO!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n#Ua!r#Ua!o#Ua#O#Ua!p#Ua'P#Ua~P!%aOT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n'^a!r'^a!o'^a#O'^a!p'^a'P'^a~P!%aO!r?qO#P;nO~O#d>xO!n&qX!p&qX#O&qX'P&qX~O#O?QO!n'pa!p'pa'P'pa~O!r?rO#P;uO~OT<aOz<]O!S<cO!c<eO!w?^O#T#PO$R<_O$S<gO$T<iO$U<kO$V<mO$X<qO$Y<sO$Z<uO$[<wO$]<yO$^<{O$_<{O%T#cO!n$|i!p$|i#O$|i'P$|i~P!%aO#P;uO#T'ZO#n'XO~O#P;vO#T'ZO#n'XO~O#P;zO#T'ZO#n'XO~O#|=QO$O=SO!n'XX!r'XX!o'XX!p'XX'P'XX~P.@qO#|=RO$O=TOT'XXz'XX!S'XX!c'XX!w'XX!z'XX#T'XX#X'XX#a'XX#b'XX#y'XX$R'XX$S'XX$T'XX$U'XX$V'XX$X'XX$Y'XX$Z'XX$['XX$]'XX$^'XX$_'XX%T'XX~O!r=aO~P<XO!r=bO~P<XO!r?yO#P>[O~O!r?zO#P:rO~OT8TOz8RO!S8UO!c8VO!r>]O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aOT8TOz8RO!S8UO!c8VO!r>^O!w:_O#T#PO$R8SO$S8WO$T8XO$U8YO$V8ZO$X8]O$Y8^O$Z8_O$[8`O$]8aO$^8bO$_8bO%T#cO~P!%aO!r?{O#P>cO~O!r?|O#P>hO~O#P>hO#T'ZO#n'XO~O#P:rO#T'ZO#n'XO~O#P>iO#T'ZO#n'XO~O#P>lO#T'ZO#n'XO~O!z$hO#T?nO~Oo>wOs$lO~O!z$hO#T?oO~O#O?QO!n'pX!p'pX'P'pX~O!z$hO#T?vO~O!z$hO#T?wO~O!z$hO#T?xO~Oo?lOs$lO~Oo?uOs$lO~Oo?tOs$lO~O%X$]%W$k!e$^#d%`#g'u'W#f~\",\n goto: \"%1O'{PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP'|P(TPP(Z(^PPP(vP(^*o(^6cP6cPP>cFxF{PP6cGR! RP! UP! UPPGR! e! h! lGRGRPP! oP! rPPGR!)u!0q!0qGR!0uP!0u!0u!0u!2PP!;g!<T!<a!FP!F_P!Na!NdP6cP6c6cPPPPP!NgPPPPPPP6c6c6c6cPP6c6cP#&T#'|P#(Q#(t#'|#'|#(z#)^#)b6c6cP#)k#*R#*|#,Q#,W#,Q#,f#,Q#,Q#,z#,}#,}6cPP6cPP#-R#5S#5S#5WP#5^P(^#5b(^#5z#5}#5}#6T(^#6W(^(^#6^#6a(^#6j#6m(^(^(^(^(^#6p(^(^(^(^(^(^(^(^(^#6s#7V(^(^#7Z#7k#7n(^(^P#7q#7x#8O#8k#8u#8{#9V#9^#9d#:h#;j#;z#<d#=`#=f#=l#=r#=|#>S#>Y#>h#>n#>x#?O#?U#?[#?b#?l#?v#?|#@S#@^PPPPPPPP#@d#@hP#A^$(h$(k$(u$1R$1_$1t$1zP$1}$2Q$2W$5[$?Y$Gr$Gu$G{$HO$Kb$Ke$Kn$Kv$LQ$Li$MP$Mz%'}PP%0O%0S%0`%0u%0{Q!nQT!qV!rQUOR%x!mRVO}!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]|!hPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q%_!ZQ%h!aQ%m!eQ'k$cQ'x$iQ)d%lQ+W'{Q,k)QU.O+T+V+]Q.j+pQ/`,jS0a.T.UQ0q.dQ1n0VS1w0`0dQ2Q0nQ2q1pQ2t1xR3[2u|ZPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]2lf]`cgjklmnoprxyz!W!X!Y!]!e!f!g!y!z#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%S%U%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(t)T)X)`)c)g)n)u)y*V*Z*[*r*w*|+Q+X+[+^+_+j+m+q+t,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b/X/n/y0O0T0b0e1R1S1b1k1o1y1{2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|S$ku$`Q%W!V^%e!_$a'j)Y.f0o2OQ%i!bQ%j!cQ%k!dQ%v!kS&V!|){Q&]#OQ'l$dQ'm$eS'|$j'hQ)S%`Q*v'nQ+z(bQ,O(dQ-S)iU.g+n.c0mQ.q+{Q.r+|Q/d,vS0V-y0XQ1X/cQ1e/rS2T0s2WQ2h1`Q3U2iQ3^2zQ3_2{Q3c3VQ3f3`R3g3d0{!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q#h^Q%O!PQ%P!QQ%Q!RQ,b(sQ.u,RR.y,UR&r#hQ*Q&qR/w-a0{hPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#j_k#n`j#i#q&t&x5d5e9W:Q:R:S:TR#saT&}#r'PR-h*[R&R!{0zhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R#tb-x!}[#e#k#u$U$V$W$X$Y$Z$v$w%X%Z%]%a%s%|&O&U&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&v&w&|'`'b'c(e(x)v)x)z*O*U*h*j+a+d,n,q-W-Y-[-e-f-g-w.Y/O/[/v0Q0Z0f1g1j1m1z2S2`2o2p2v3Z4]4^4d4e4f4g4h4i4j4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}5P5Q5T5U5W5X5Y5]5^5`5t6e6f6g6h6i6j6k6m6n6o6p6q6r6s6t6u6v6w6x6y6z6{6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7m7q8i8j8k8l8m8n8p8q8r8t8u8v8w8x8y8z8{8|8}9O9P9Q9R9S9U9V9Y9[9]9d9e9g9i9j9k9l9m9n9q9r9t9w:p:x:y:z:{:|:};Q;R;T;U;V;W;X;Y;Z;[;];^;_;`;a;b;c;d;f;g;l;m;p;r;s;w;y;{<O=V=W=X=Y=Z=[=]=`=c=d=e=f=g=h=i=j=k=l=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}>O>P>Q>R>S>T>U>X>Y>Z>_>`>a>b>d>e>f>g>j>k>m>r>s>{>|>}?V?b?cQ'd$[Y(X$s8o;P=^=_S(]3o7lQ(`$tR+y(aT&X!|){#a$Pg#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|3yfPVX]`cgjklmnoprxyz!S!W!X!Y!]!e!f!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r#}$Q$R$T$h$z%O%Q%S%T%U%V%d%r%}&S&W&[&q&t&u&x'P'X'Z']'a'e'p't'y(R(V(W(Y(Z([(h(t)T)X)`)c)g)n)u)y){*V*Z*[*r*w*|+Q+X+[+^+_+j+m+n+q+t,Q,T,Y,c,e,g,i,u,x-O-`-a-t-v-z.S.V.[.].^.b.c.u.w/P/X/n/y0O0T0b0e0m0s0}1O1R1S1W1b1k1o1y1{2W2]2k2r3n3p3s3t3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7i7j7k7o7w7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v9|9}:O:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?S?T?Y?^?_?p?q?r?y?z?{?|[#wd#x3h3i3j3kh'V#z'W)f,}-U/k/u1f3l3m3q3rQ)e%nR-T)kY#yd%n)k3h3iV'T#x3j3k1dePVX]`cjklmnoprxyz!S!W!X!Y!]!e!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a'e(R(V(Y(Z(h(t)T)X)g)n)u)y){*V*Z*[*|+^+q,Q,T,Y,c,e,g-O-`-a-t-z.[.^.u.w/P/X/n/y0O0T0e0s0}1O1R1S1W1b1k1o1{2W2]2k2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_Q%o!fQ)l%r#O3vg#}$h'X'Z'p't'y(W([)`*w+Q+X+[+_+j+m+t,i,u,x-v.S.V.].b0b1y7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|a3w)c*r+n.c0m3n3s3tY'T#z)f-U3l3mZ*c'W,}/u3q3r0vhPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0}1O1R1S1W1k1o1{2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T2U0s2WR&^#OR&]#O!r#Z[#e#u$U$V$W$X$Z$s$w%X%Z%]&`&a&b&c&d&e&f&g'`'b'c(e)v)x*O*j+d-Y.Y0f1z2`2p2v3Z9U9V!Y4U3o4d4e4f4g4i4j4l4m4n4o4p4q4r4s4{4|4}5P5Q5T5U5W5X5Y5]5^5`!^6X4^6e6f6g6h6j6k6m6n6o6p6q6r6s6t6|6}7O7Q7R7U7V7X7Y7Z7^7_7a7l7m#b8[#k%a%s%|&O&v&w&|(x*U+a,n,q-W-e-g/[4]5t7q8i8j8k8l8n8o8p8t8u8v8w8x8y8z8{9Y9[9]9d9g9i9l9n9q9r9t9w:p;R<O>r>s>{?b?c!|:i&U)z-[-f-w0Q0Z1g1j1m2o8q8r9e9j9k9m:x:y:z:{:};P;Q;T;U;V;W;X;Y;Z;[;d;f;g;l;m;p;r;s;w;y;{>R>S!`<o/O/v=V=W=X=Y=]=^=`=c=e=g=i=k=m=o=q>T>X>Z>_>a>d>e>g>j>k>m>|>}?Vo<p2S=_=d=f=h=j=l=n=p=r>U>Y>`>b>fS$iu#fQ$qwU'{$j$l&pQ'}$kS(P$m$rQ+Z'|Q+](OQ+`(QQ1p0VQ5s7dS5v7f7gQ5w7hQ7p9xS7r9y9zQ7s9{Q;O>uS;h>w>zQ;o?PQ>y?jS?O?l?nQ?U?oQ?`?sS?a?t?wS?d?u?vR?e?xT'u$h+Q!csPVXt!S!j!r!s!w$h%O%Q%T%V'p([(h)`+Q+j+t,Q,T,u,x.u.w/P0}1O1W2]Q$]rR*l'eQ-{+PQ.i+oQ0U-xQ0j.`Q1|0kR2w1}T0W-y0XQ+V'zQ.U+YR0d.XQ(_$tQ)^%iQ)s%vQ*u'mS+x(`(aQ-q*vR.p+yQ(^$tQ)b%kQ)r%vQ*q'lS*t'm)sU+w(_(`(aS-p*u*vS.o+x+yQ/i,{Q/{-nQ/}-qR0v.pQ(]$tQ)]%iQ)_%jQ)q%vU*s'm)r)sW+v(^(_(`(aQ,t)^U-o*t*u*vU.n+w+x+yS/|-p-qS0u.o.pQ1i/}R2Y0vX+r([)`+t,xb%f!_$a'j+n.c.f0m0o2OR,r)YQ$ovS+b(S?Qg?m([)`+i+j+m+t,u,x.a.b0lR0t.kT2V0s2W0}|PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$y{$|Q,O(dR.r+|T${{$|Q(j%OQ(r%QQ(w%TQ(z%VQ.},XQ0z.yQ0{.|R2c1WR(m%PX,[(k(l,],_R(n%PX(p%Q%T%V1WR%T!T_%b!]%S(t,c,e/X1RR%V!UR/],gR,j)PQ)a%kS*p'l)bS-m*q,{S/z-n/iR1h/{T,w)`,xQ-P)fU/l,|,}-UU1^/k/t/uR2n1fR/o-OR2l1bSSO!mR!oSQ!rVR%y!rQ!jPS!sV!rQ!wX[%u!j!s!w,Q1O2]Q,Q(hQ1O/PR2]0}Q)o%sS-X)o9bR9b8rQ-b*QR/x-bQ&y#oS*X&y9XR9X:tS*]&|&}R-i*]Q)|&YR-^)|!j'Y#|'o*f*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*e'Y/g]/g,{-n.f0o1[2O!h'[#|'o*z+O+T+e+i.T.W.Z.a/_0`0c0g0l1x2u5x5y5z7e7t7u7v;q;t;x?W?X?Z?f?g?h?iS*g'[/hZ/h,{-n.f0o2OU#xd%n)kU'S#x3j3kQ3j3hR3k3iQ'W#z^*b'W,}/k/u1f3q3rQ,})fQ/u-UQ3q3lR3r3m|tPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]W$_t'p+j,uS'p$h+QS+j([+tT,u)`,xQ'f$]R*m'fQ0X-yR1q0XQ+R'vR-}+RQ0].PS1u0]1vR1v0^Q._+fR0i._Q+t([R.l+tW+m([)`+t,xS.b+j,uT.e+m.bQ)Z%fR,s)ZQ(T$oS+c(T?RR?R?mQ2W0sR2}2WQ$|{R(f$|Q,S(iR.v,SQ,V(jR.z,VQ,](kQ,_(lT/Q,],_Q)U%aS,o)U9`R9`8qQ)R%_R,l)RQ,x)`R/e,xQ)h%pS-R)h/sR/s-SQ1c/oR2m1cT!uV!rj!iPVX!j!r!s!w(h,Q/P0}1O2]Q%R!SQ(i%OW(p%Q%T%V1WQ.x,TQ0x.uR0y.w|[PVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q#e]U#k`#q&xQ#ucQ$UkQ$VlQ$WmQ$XnQ$YoQ$ZpQ$sx^$vy3y5|8P:]<Y<ZQ$wzQ%X!WQ%Z!XQ%]!YW%a!]%S(t,eU%s!g&q-aQ%|!yQ&O!zS&U!|){^&_#Q3{6O8R:`<]<^Q&`#RQ&a#SQ&b#TQ&c#UQ&d#VQ&e#WQ&f#XQ&g#YQ&h#ZQ&i#[Q&j#]Q&k#^Q&l#_Q&m#`Q&n#aQ&v#lQ&w#mS&|#r'PQ'`$QQ'b$RQ'c$TQ(e$zQ(x%UQ)v%}Q)x&SQ)z&WQ*O&[Q*U&uS*h']5uQ*j'a^*k3p5a7b9u;|>n>oQ+a(RQ+d(VQ,n)TQ,q)XQ-W)nQ-Y)uQ-[)yQ-e*VQ-f*ZQ-g*[^-k3u5b7c9v;}>p>qQ-w*|Q.Y+^Q/O,YQ/[,gQ/v-`Q0Q-tQ0Z-zQ0f.[Q1g/yQ1j0OQ1m0TQ1z0eU2S0s2W:rQ2`1SQ2o1kQ2p1oQ2v1{Q3Z2rQ3o3xQ4]jQ4^5eQ4d5fQ4e5hQ4f5jQ4g5lQ4h5nQ4i5pQ4j3zQ4l3|Q4m3}Q4n4OQ4o4PQ4p4QQ4q4RQ4r4SQ4s4TQ4t4UQ4u4VQ4v4WQ4w4XQ4x4YQ4y4ZQ4z4[Q4{4_Q4|4`Q4}4aQ5P4bQ5Q4cQ5T4kQ5U5OQ5W5RQ5X5SQ5Y5VQ5]5ZQ5^5[Q5`5_Q5t5rQ6e5gQ6f5iQ6g5kQ6h5mQ6i5oQ6j5qQ6k5}Q6m6PQ6n6QQ6o6RQ6p6SQ6q6TQ6r6UQ6s6VQ6t6WQ6u6XQ6v6YQ6w6ZQ6x6[Q6y6]Q6z6^Q6{6_Q6|6`Q6}6aQ7O6bQ7Q6cQ7R6dQ7U6lQ7V7PQ7X7SQ7Y7TQ7Z7WQ7^7[Q7_7]Q7a7`Q7l5{Q7m5dQ7q7oQ8i7xQ8j7yQ8k7zQ8l7{Q8m7|Q8n7}Q8o8OQ8p8QU8q,c/X1RQ8r%dQ8t8SQ8u8TQ8v8UQ8w8VQ8x8WQ8y8XQ8z8YQ8{8ZQ8|8[Q8}8]Q9O8^Q9P8_Q9Q8`Q9R8aQ9S8bQ9U8dQ9V8eQ9Y8fQ9[8gQ9]8hQ9d8sQ9e9TQ9g9ZQ9i9^Q9j9_Q9k9aQ9l9cQ9m9fQ9n9hQ9q9oQ9r9pQ9t9sQ9w:QU:p#i&t9WQ:x:UQ:y:VQ:z:WQ:{:XQ:|:YQ:}:ZQ;P:[Q;Q:^Q;R:_Q;T:aQ;U:bQ;V:cQ;W:dQ;X:eQ;Y:fQ;Z:gQ;[:hQ;]:iQ;^:jQ;_:kQ;`:lQ;a:mQ;b:nQ;c:oQ;d:uQ;f:vQ;g:wQ;l;SQ;m;eQ;p;jQ;r;kQ;s;nQ;w;uQ;y;vQ;{;zQ<O:TQ=V<PQ=W<QQ=X<RQ=Y<SQ=Z<TQ=[<UQ=]<VQ=^<WQ=_<XQ=`<[Q=c<_Q=d<`Q=e<aQ=f<bQ=g<cQ=h<dQ=i<eQ=j<fQ=k<gQ=l<hQ=m<iQ=n<jQ=o<kQ=p<lQ=q<mQ=r<nQ=s<oQ=t<pQ=u<qQ=v<rQ=w<sQ=x<tQ=y<uQ=z<vQ={<wQ=|<xQ=}<yQ>O<zQ>P<{Q>Q<|Q>R=OQ>S=PQ>T=QQ>U=RQ>X=SQ>Y=TQ>Z=UQ>_=aQ>`=bQ>a>VQ>b>WQ>d>[Q>e>]Q>f>^Q>g>cQ>j>hQ>k>iQ>m>lQ>r:SQ>s:RQ>{>vQ>|:qQ>}:sQ?V;iQ?b?^R?c?_R*R&qQ%t!gQ)W%dT*P&q-a$WiPVX]cklmnopxyz!S!W!X!Y!j!r!s!w#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%O%Q%T%V%}&S&['a(V(h)u+^,Q,T.[.u.w/P0e0}1O1S1W1o1{2]2r3p3u8d8e!t5c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x7n5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`:P`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l>t!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x?[,Y-`:q:s;i<P<Q<R<S<T<V<W<Y<[<]<_<a<c<e<g<i<k<m<o<q<s<u<w<y<{=Q=S=U=a>V>[>]>c>h>i>l>n>p!]?]0s2W:r<U<X<Z<^<`<b<d<f<h<j<l<n<p<r<t<v<x<z<|=R=T=b>W>^>o>qQ#p`Q&s#iQ&{#qR*T&tS#o`#q^$Sj5d5e:Q:R:S:TS*W&x9WT:t#i&tQ'O#rR*_'PR&T!{R&Z!|Q&Y!|R-]){Q#|gS'^#}3nS'o$h+QS*d'X3sU*f'Z*w-vQ*z'pQ+O'tQ+T'yQ+e(WW+i([)`+t,xQ,{)cQ-n*rQ.T+XQ.W+[Q.Z+_U.a+j+m,uQ.f+nQ/_,iQ0`.SQ0c.VQ0g.]Q0l.bQ0o.cQ1[3tQ1x0bQ2O0mQ2u1yQ5x7iQ5y7jQ5z7kQ7e7wQ7t9|Q7u9}Q7v:OQ;q?SQ;t?TQ;x?YQ?W?pQ?X?qQ?Z?rQ?f?yQ?g?zQ?h?{R?i?|0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_#`$Og#}$h'X'Z'p't'y(W([)`)c*r*w+Q+X+[+_+j+m+n+t,i,u,x-v.S.V.].b.c0b0m1y3n3s3t7i7j7k7w9|9}:O?S?T?Y?p?q?r?y?z?{?|S$[r'eQ%l!eS%p!f%rU+f(Y(Z+qQ-Q)gQ/m-OQ0h.^Q1a/nQ2j1bR3W2k|vPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]#Y#g]cklmnopxyz!W!X!Y#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a$Q$R$T$z%}&S&['a(V)u+^.[0e1S1o1{2r3p3u8d8e`+k([)`+j+m+t,u,x.b!t8c']3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5f5h5j5l5n5p7b7c!x<}5a5b5d5e5g5i5k5m5o5q5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`$`?k`j!]!g!y!z#i#l#m#q#r%S%U&q&t&u&x'P(R(t)T)X)n*V*[,e,g-a5r7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8f8g8h8s9W9Z9^9c9h9o9p9s9u9v:Q:R:S:T:_>v?^?_#l?}!|%d&W)y){*Z*|,c-t-z/X/y0O0T1R1k9T9_9a9f:U:V:W:X:Y:Z:[:]:^:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:u:v:w;S;e;j;k;n;u;v;z;|;}=O=P!x@O,Y-`:q:s;i<P<Q<R<S<T<V<W<Y<[<]<_<a<c<e<g<i<k<m<o<q<s<u<w<y<{=Q=S=U=a>V>[>]>c>h>i>l>n>p!]@P0s2W:r<U<X<Z<^<`<b<d<f<h<j<l<n<p<r<t<v<x<z<|=R=T=b>W>^>o>qR'w$hQ'v$hR-|+QR$^rQ#d[Q%Y!WQ%[!XQ%^!YQ(U$pQ({%WQ(|%XQ(}%ZQ)O%]Q)V%cQ)[%gQ)d%lQ)j%qQ)p%tQ*n'iQ-V)mQ-l*oQ.i+oQ.j+pQ.x,WQ/S,`Q/T,aQ/U,bQ/Z,fQ/^,hQ/b,pQ/q-PQ0j.`Q0q.dQ0r.hQ0t.kQ0y.{Q1Y/dQ1_/lQ1n0VQ1|0kQ2Q0nQ2R0pQ2[0|Q2d1XQ2g1^Q2w1}Q2y2PQ2|2VQ3P2ZQ3T2fQ3X2nQ3Y2pQ3]2xQ3a3RQ3b3SR3e3ZR.R+UQ+g(YQ+h(ZR.k+qS+s([+tT,w)`,xa+l([)`+j+m+t,u,x.bQ%g!_Q'i$aQ*o'jQ.h+nS0p.c.fS2P0m0oR2x2OQ$pvW+o([)`+t,xW.`+i+j+m,uS0k.a.bR1}0l|!aPVX!S!j!r!s!w%O%Q%T%V(h,Q,T.u.w/P0}1O1W2]Q$ctW+p([)`+t,xU.d+j+m,uR0n.b0z!OPVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_R/a,m0}}PVX]`cjklmnopxyz!S!W!X!Y!]!g!j!r!s!w!y!z!|#Q#R#S#T#U#V#W#X#Y#Z#[#]#^#_#`#a#i#l#m#q#r$Q$R$T$z%O%Q%S%T%U%V%d%}&S&W&[&q&t&u&x'P']'a(R(V(h(t)T)X)n)u)y){*V*Z*[*|+^,Q,T,Y,c,e,g,m-`-a-t-z.[.u.w/P/X/y0O0T0e0s0}1O1R1S1W1k1o1{2W2]2r3p3u3x3y3z3{3|3}4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4_4`4a4b4c4k5O5R5S5V5Z5[5_5a5b5d5e5f5g5h5i5j5k5l5m5n5o5p5q5r5u5{5|5}6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6]6^6_6`6a6b6c6d6l7P7S7T7W7[7]7`7b7c7o7x7y7z7{7|7}8O8P8Q8R8S8T8U8V8W8X8Y8Z8[8]8^8_8`8a8b8d8e8f8g8h8s9T9W9Z9^9_9a9c9f9h9o9p9s9u9v:Q:R:S:T:U:V:W:X:Y:Z:[:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:q:r:s:u:v:w;S;e;i;j;k;n;u;v;z;|;}<P<Q<R<S<T<U<V<W<X<Y<Z<[<]<^<_<`<a<b<c<d<e<f<g<h<i<j<k<l<m<n<o<p<q<r<s<t<u<v<w<x<y<z<{<|=O=P=Q=R=S=T=U=a=b>V>W>[>]>^>c>h>i>l>n>o>p>q>v?^?_T$x{$|Q(q%QQ(v%TQ(y%VR2b1WQ%c!]Q(u%SQ,d(tQ/W,cQ/Y,eQ1Q/XR2_1RQ%q!fR)m%rR/p-O\",\n nodeNames: \"⚠ ( HeredocString EscapeSequence abstract LogicOp array as Boolean break case catch clone const continue default declare do echo else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final finally fn for foreach from function global goto if implements include include_once LogicOp insteadof interface list match namespace new null LogicOp print readonly require require_once return switch throw trait try unset use var Visibility while LogicOp yield LineComment BlockComment TextInterpolation PhpClose Text PhpOpen Template TextInterpolation EmptyStatement ; } { Block : LabelStatement Name ExpressionStatement ConditionalExpression LogicOp MatchExpression ) ( ParenthesizedExpression MatchBlock MatchArm , => AssignmentExpression ArrayExpression ValueList & VariadicUnpacking ... Pair [ ] ListExpression ValueList Pair Pair SubscriptExpression MemberExpression -> ?-> Name VariableName DynamicVariable $ ${ CallExpression ArgList NamedArgument SpreadArgument CastExpression UnionType LogicOp IntersectionType OptionalType NamedType QualifiedName \\\\ NamespaceName Name NamespaceName Name ScopedExpression :: ClassMemberName DynamicMemberName AssignOp UpdateExpression UpdateOp YieldExpression BinaryExpression LogicOp LogicOp LogicOp BitOp BitOp BitOp CompareOp CompareOp BitOp ArithOp ConcatOp ArithOp ArithOp IncludeExpression RequireExpression CloneExpression UnaryExpression ControlOp LogicOp PrintIntrinsic FunctionExpression static ParamList Parameter #[ Attributes Attribute VariadicParameter PropertyParameter PropertyHooks PropertyHook UseList ArrowFunction NewExpression class BaseClause ClassInterfaceClause DeclarationList ConstDeclaration VariableDeclarator PropertyDeclaration VariableDeclarator MethodDeclaration UseDeclaration UseList UseInsteadOfClause UseAsClause UpdateExpression ArithOp ShellExpression ThrowExpression Integer Float String MemberExpression SubscriptExpression UnaryExpression ArithOp Interpolation String IfStatement ColonBlock SwitchStatement Block CaseStatement DefaultStatement ColonBlock WhileStatement EmptyStatement DoStatement ForStatement ForSpec SequenceExpression ForeachStatement ForSpec Pair GotoStatement ContinueStatement BreakStatement ReturnStatement TryStatement CatchDeclarator DeclareStatement EchoStatement UnsetStatement ConstDeclaration FunctionDefinition ClassDeclaration InterfaceDeclaration TraitDeclaration EnumDeclaration EnumBody EnumCase NamespaceDefinition NamespaceUseDeclaration UseGroup UseClause UseClause GlobalDeclaration FunctionStaticDeclaration Program\",\n maxTerm: 318,\n nodeProps: [\n [\"group\", -36,2,8,49,82,84,86,89,94,95,103,107,108,112,113,116,120,126,132,137,139,140,154,155,156,157,160,161,173,174,188,190,191,192,193,194,200,\"Expression\",-28,75,79,81,83,201,203,208,210,211,214,217,218,219,220,221,223,224,225,226,227,228,229,230,231,234,235,239,240,\"Statement\",-4,121,123,124,125,\"Type\"],\n [\"isolate\", -4,67,68,71,200,\"\"],\n [\"openedBy\", 70,\"phpOpen\",77,\"{\",87,\"(\",102,\"#[\"],\n [\"closedBy\", 72,\"phpClose\",78,\"}\",88,\")\",165,\"]\"]\n ],\n propSources: [phpHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 32,\n tokenData: \"!GQ_R!]OX$zXY&^YZ'sZ]$z]^&^^p$zpq&^qr)Rrs+Pst+otu2buv5evw6rwx8Vxy>]yz>yz{?g{|@}|}Bb}!OCO!O!PDh!P!QKT!Q!R!!o!R![!$q![!]!,P!]!^!-a!^!_!-}!_!`!1S!`!a!2d!a!b!3t!b!c!7^!c!d!7z!d!e!9Y!e!}!7z!}#O!;b#O#P!<O#P#Q!<l#Q#R!=Y#R#S!7z#S#T!=y#T#U!7z#U#V!9Y#V#o!7z#o#p!Cs#p#q!Da#q#r!Ev#r#s!Fd#s$f$z$f$g&^$g&j!7z&j$I_$z$I_$I`&^$I`$KW$z$KW$KX&^$KX;'S$z;'S;=`&W<%l?HT$z?HT?HU&^?HUO$zP%PV'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zP%kO'TPP%nWOY$zYZ%fZ!a$z!b;'S$z;'S;=`&W<%l~$z~O$z~~%fP&ZP;=`<%l$z_&ed'TP'S^OX$zXY&^YZ'sZ]$z]^&^^p$zpq&^q!^$z!^!_%k!_$f$z$f$g&^$g$I_$z$I_$I`&^$I`$KW$z$KW$KX&^$KX;'S$z;'S;=`&W<%l?HT$z?HT?HU&^?HUO$z_'zW'TP'S^XY(dYZ(d]^(dpq(d$f$g(d$I_$I`(d$KW$KX(d?HT?HU(d^(iW'S^XY(dYZ(d]^(dpq(d$f$g(d$I_$I`(d$KW$KX(d?HT?HU(dR)YW$eQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`)r!`;'S$z;'S;=`&W<%lO$zR)yW$XQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`*c!`;'S$z;'S;=`&W<%lO$zR*jV$XQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV+YV'tS'TP'uQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_+v]'TP!e^OY,oYZ%fZ],o]^$z^!^,o!^!_-i!_!a,o!a!b/y!b!},o!}#O1f#O;'S,o;'S;=`/s<%lO,o_,vZ'TP!e^OY,oYZ%fZ],o]^$z^!^,o!^!_-i!_!a,o!a!b/y!b;'S,o;'S;=`/s<%lO,o_-nZ!e^OY,oYZ%fZ],o]^$z^!a,o!a!b.a!b;'S,o;'S;=`/s<%l~,o~O,o~~%f^.dWOY.|YZ/nZ].|]^/n^!`.|!a;'S.|;'S;=`/h<%lO.|^/RV!e^OY.|Z].|^!a.|!a!b.a!b;'S.|;'S;=`/h<%lO.|^/kP;=`<%l.|^/sO!e^_/vP;=`<%l,o_0OZ'TPOY,oYZ0qZ],o]^0x^!^,o!^!_-i!_!`,o!`!a$z!a;'S,o;'S;=`/s<%lO,o_0xO'TP!e^_1PV'TP!e^OY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_1oZ'TP$kQ!e^OY,oYZ%fZ],o]^$z^!^,o!^!_-i!_!a,o!a!b/y!b;'S,o;'S;=`/s<%lO,o_2i`'TP#fQOY$zYZ%fZ!^$z!^!_%k!_!c$z!c!}3k!}#R$z#R#S3k#S#T$z#T#o3k#o#p4w#p$g$z$g&j3k&j;'S$z;'S;=`&W<%lO$z_3ra'TP#d^OY$zYZ%fZ!Q$z!Q![3k![!^$z!^!_%k!_!c$z!c!}3k!}#R$z#R#S3k#S#T$z#T#o3k#o$g$z$g&j3k&j;'S$z;'S;=`&W<%lO$zV5OV'TP#gUOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR5lW'TP$^QOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR6]V$OQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_6yY#T^'TPOY$zYZ%fZv$zvw7iw!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR7pV$TQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR8^Z'TP%`QOY8VYZ9PZw8Vwx;_x!^8V!^!_;{!_#O8V#O#P<y#P;'S8V;'S;=`>V<%lO8VR9WV'TP%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ9rV%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X<%lO9mQ:^O%`QQ:aRO;'S9m;'S;=`:j;=`O9mQ:oW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l9m<%lO9mQ;[P;=`<%l9mR;fV'TP%`QOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR<Q]%`QOY8VYZ9PZw8Vwx;_x!a8V!a!b9m!b#O8V#O#P<y#P;'S8V;'S;=`>V<%l~8V~O8V~~%fR=OW'TPOY8VYZ9PZ!^8V!^!_;{!_;'S8V;'S;=`=h;=`<%l9m<%lO8VR=mW%`QOw9mwx:Xx#O9m#O#P:^#P;'S9m;'S;=`;X;=`<%l8V<%lO9mR>YP;=`<%l8VR>dV!zQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV?QV!yU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR?nY'TP$^QOY$zYZ%fZz$zz{@^{!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR@eW$_Q'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRAUY$[Q'TPOY$zYZ%fZ{$z{|At|!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zRA{V%TQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRBiV#OQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_CXZ$[Q%^W'TPOY$zYZ%fZ}$z}!OAt!O!^$z!^!_%k!_!`6U!`!aCz!a;'S$z;'S;=`&W<%lO$zVDRV#aU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVDo['TP$]QOY$zYZ%fZ!O$z!O!PEe!P!Q$z!Q![Fs![!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zVEjX'TPOY$zYZ%fZ!O$z!O!PFV!P!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zVF^V#VU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRFz_'TP%XQOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#SJc#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zRHO]'TPOY$zYZ%fZ{$z{|Hw|}$z}!OHw!O!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRH|X'TPOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zRIpZ'TP%XQOY$zYZ%fZ!Q$z!Q![Ii![!^$z!^!_%k!_#R$z#R#SHw#S;'S$z;'S;=`&W<%lO$zRJhX'TPOY$zYZ%fZ!Q$z!Q![Fs![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_K[['TP$^QOY$zYZ%fZz$zz{LQ{!P$z!P!Q,o!Q!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$z_LVX'TPOYLQYZLrZzLQz{N_{!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_LwT'TPOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MZTOzMWz{Mj{;'SMW;'S;=`NX<%lOMW^MmVOzMWz{Mj{!PMW!P!QNS!Q;'SMW;'S;=`NX<%lOMW^NXO!f^^N[P;=`<%lMW_NdZ'TPOYLQYZLrZzLQz{N_{!PLQ!P!Q! V!Q!^LQ!^!_! s!_;'SLQ;'S;=`!!i<%lOLQ_! ^V!f^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_! vZOYLQYZLrZzLQz{N_{!aLQ!a!bMW!b;'SLQ;'S;=`!!i<%l~LQ~OLQ~~%f_!!lP;=`<%lLQZ!!vm'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!d$z!d!e!&o!e!g$z!g!hGy!h!q$z!q!r!(a!r!z$z!z!{!){!{#R$z#R#S!%}#S#U$z#U#V!&o#V#X$z#X#YGy#Y#c$z#c#d!(a#d#l$z#l#m!){#m;'S$z;'S;=`&W<%lO$zZ!$xa'TP%WYOY$zYZ%fZ!O$z!O!PFs!P!Q$z!Q![!$q![!^$z!^!_%k!_!g$z!g!hGy!h#R$z#R#S!%}#S#X$z#X#YGy#Y;'S$z;'S;=`&W<%lO$zZ!&SX'TPOY$zYZ%fZ!Q$z!Q![!$q![!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!&tY'TPOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!'k['TP%WYOY$zYZ%fZ!Q$z!Q!R!'d!R!S!'d!S!^$z!^!_%k!_#R$z#R#S!&o#S;'S$z;'S;=`&W<%lO$zZ!(fX'TPOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zZ!)YZ'TP%WYOY$zYZ%fZ!Q$z!Q!Y!)R!Y!^$z!^!_%k!_#R$z#R#S!(a#S;'S$z;'S;=`&W<%lO$zZ!*Q]'TPOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zZ!+Q_'TP%WYOY$zYZ%fZ!Q$z!Q![!*y![!^$z!^!_%k!_!c$z!c!i!*y!i#R$z#R#S!){#S#T$z#T#Z!*y#Z;'S$z;'S;=`&W<%lO$zR!,WX!rQ'TPOY$zYZ%fZ![$z![!]!,s!]!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!,zV#yQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!-hV!nU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!.S[$YQOY$zYZ%fZ!^$z!^!_!.x!_!`!/i!`!a*c!a!b!0]!b;'S$z;'S;=`&W<%l~$z~O$z~~%fR!/PW$ZQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!/pX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a*c!a;'S$z;'S;=`&W<%lO$zP!0bR!jP!_!`!0k!r!s!0p#d#e!0pP!0pO!jPP!0sQ!j!k!0y#[#]!0yP!0|Q!r!s!0k#d#e!0k_!1ZX#|Y'TPOY$zYZ%fZ!^$z!^!_%k!_!`)r!`!a!1v!a;'S$z;'S;=`&W<%lO$zV!1}V#PU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!2kX$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`!3W!`!a!.x!a;'S$z;'S;=`&W<%lO$zR!3_V$YQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!3{[!wQ'TPOY$zYZ%fZ}$z}!O!4q!O!^$z!^!_%k!_!`$z!`!a!6P!a!b!6m!b;'S$z;'S;=`&W<%lO$zV!4vX'TPOY$zYZ%fZ!^$z!^!_%k!_!`$z!`!a!5c!a;'S$z;'S;=`&W<%lO$zV!5jV#bU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!6WV!h^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!6tW$RQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!7eV$dQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!8Ta'aS'TP'WYOY$zYZ%fZ!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$z_!9ce'aS'TP'WYOY$zYZ%fZr$zrs!:tsw$zwx8Vx!Q$z!Q![!7z![!^$z!^!_%k!_!c$z!c!}!7z!}#R$z#R#S!7z#S#T$z#T#o!7z#o$g$z$g&j!7z&j;'S$z;'S;=`&W<%lO$zR!:{V'TP'uQOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zV!;iV#XU'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!<VV#s^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!<sV#YQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!=aW$VQ'TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`;'S$z;'S;=`&W<%lO$zR!>OZ'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%lO!=yR!>vV'TPO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?`VO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s<%lO!?]Q!?xRO;'S!?];'S;=`!@R;=`O!?]Q!@UWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!?]<%lO!?]Q!@sO%UQQ!@vP;=`<%l!?]R!@|]OY!=yYZ!>qZ!a!=y!a!b!?]!b#O!=y#O#P!Au#P#S!=y#S#T!CP#T;'S!=y;'S;=`!Cm<%l~!=y~O!=y~~%fR!AzW'TPOY!=yYZ!>qZ!^!=y!^!_!@y!_;'S!=y;'S;=`!Bd;=`<%l!?]<%lO!=yR!BgWO#O!?]#O#P!?u#P#S!?]#S#T!@n#T;'S!?];'S;=`!@s;=`<%l!=y<%lO!?]R!CWV%UQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!CpP;=`<%l!=y_!CzV!p^'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z_!DjY$UQ#n['TPOY$zYZ%fZ!^$z!^!_%k!_!`6U!`#p$z#p#q!EY#q;'S$z;'S;=`&W<%lO$zR!EaV$SQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!E}V!oQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$zR!FkV$eQ'TPOY$zYZ%fZ!^$z!^!_%k!_;'S$z;'S;=`&W<%lO$z\",\n tokenizers: [expression, interpolated, semicolon, 0, 1, 2, 3, eofToken],\n topRules: {\"Template\":[0,73],\"Program\":[1,241]},\n dynamicPrecedences: {\"298\":1},\n specialized: [{term: 284, get: (value, stack) => (keywords(value) << 1), external: keywords},{term: 284, get: (value) => spec_name[value] || -1}],\n tokenPrec: 29889\n});\n\nexport { parser };\n","import { parser } from '@lezer/php';\nimport { parseMixed } from '@lezer/common';\nimport { html } from '@codemirror/lang-html';\nimport { LRLanguage, indentNodeProp, continuedIndent, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\n\n/**\nA language provider based on the [Lezer PHP\nparser](https://github.com/lezer-parser/php), extended with\nhighlighting and indentation information.\n*/\nconst phpLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"php\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n IfStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|else\\b|elseif\\b|endif\\b)/ }),\n TryStatement: /*@__PURE__*/continuedIndent({ except: /^\\s*({|catch\\b|finally\\b)/ }),\n SwitchBody: context => {\n let after = context.textAfter, closed = /^\\s*\\}/.test(after), isCase = /^\\s*(case|default)\\b/.test(after);\n return context.baseIndent + (closed ? 0 : isCase ? 1 : 2) * context.unit;\n },\n ColonBlock: cx => cx.baseIndent + cx.unit,\n \"Block EnumBody DeclarationList\": /*@__PURE__*/delimitedIndent({ closing: \"}\" }),\n ArrowFunction: cx => cx.baseIndent + cx.unit,\n \"String BlockComment\": () => null,\n Statement: /*@__PURE__*/continuedIndent({ except: /^({|end(for|foreach|switch|while)\\b)/ })\n }),\n /*@__PURE__*/foldNodeProp.add({\n \"Block EnumBody DeclarationList SwitchBody ArrayExpression ValueList\": foldInside,\n ColonBlock(tree) { return { from: tree.from + 1, to: tree.to }; },\n BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; }\n })\n ]\n }),\n languageData: {\n commentTokens: { block: { open: \"/*\", close: \"*/\" }, line: \"//\" },\n indentOnInput: /^\\s*(?:case |default:|end(?:if|for(?:each)?|switch|while)|else(?:if)?|\\{|\\})$/,\n wordChars: \"$\",\n closeBrackets: { stringPrefixes: [\"b\", \"B\"] }\n }\n});\n/**\nPHP language support.\n*/\nfunction php(config = {}) {\n let support = [], base;\n if (config.baseLanguage === null) ;\n else if (config.baseLanguage) {\n base = config.baseLanguage;\n }\n else {\n let htmlSupport = html({ matchClosingTags: false });\n support.push(htmlSupport.support);\n base = htmlSupport.language;\n }\n return new LanguageSupport(phpLanguage.configure({\n wrap: base && parseMixed(node => {\n if (!node.type.isTop)\n return null;\n return {\n parser: base.parser,\n overlay: node => node.name == \"Text\"\n };\n }),\n top: config.plain ? \"Program\" : \"Template\"\n }), support);\n}\n\nexport { php, phpLanguage };\n","import { syntaxTree, indentNodeProp, continuedIndent, foldNodeProp, LRLanguage, LanguageSupport } from '@codemirror/language';\nimport { styleTags, tags } from '@lezer/highlight';\nimport { ExternalTokenizer, LRParser } from '@lezer/lr';\nimport { ifNotIn, completeFromList } from '@codemirror/autocomplete';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst whitespace = 36,\n LineComment = 1,\n BlockComment = 2,\n String$1 = 3,\n Number = 4,\n Bool = 5,\n Null = 6,\n ParenL = 7,\n ParenR = 8,\n BraceL = 9,\n BraceR = 10,\n BracketL = 11,\n BracketR = 12,\n Semi = 13,\n Dot = 14,\n Operator = 15,\n Punctuation = 16,\n SpecialVar = 17,\n Identifier = 18,\n QuotedIdentifier = 19,\n Keyword = 20,\n Type = 21,\n Bits = 22,\n Bytes = 23,\n Builtin = 24;\n\nfunction isAlpha(ch) {\n return ch >= 65 /* Ch.A */ && ch <= 90 /* Ch.Z */ || ch >= 97 /* Ch.a */ && ch <= 122 /* Ch.z */ || ch >= 48 /* Ch._0 */ && ch <= 57 /* Ch._9 */;\n}\nfunction isHexDigit(ch) {\n return ch >= 48 /* Ch._0 */ && ch <= 57 /* Ch._9 */ || ch >= 97 /* Ch.a */ && ch <= 102 /* Ch.f */ || ch >= 65 /* Ch.A */ && ch <= 70 /* Ch.F */;\n}\nfunction readLiteral(input, endQuote, backslashEscapes) {\n for (let escaped = false;;) {\n if (input.next < 0)\n return;\n if (input.next == endQuote && !escaped) {\n input.advance();\n return;\n }\n escaped = backslashEscapes && !escaped && input.next == 92 /* Ch.Backslash */;\n input.advance();\n }\n}\nfunction readDoubleDollarLiteral(input, tag) {\n scan: for (;;) {\n if (input.next < 0)\n return;\n if (input.next == 36 /* Ch.Dollar */) {\n input.advance();\n for (let i = 0; i < tag.length; i++) {\n if (input.next != tag.charCodeAt(i))\n continue scan;\n input.advance();\n }\n if (input.next == 36 /* Ch.Dollar */) {\n input.advance();\n return;\n }\n }\n else {\n input.advance();\n }\n }\n}\nfunction readPLSQLQuotedLiteral(input, openDelim) {\n let matchingDelim = \"[{<(\".indexOf(String.fromCharCode(openDelim));\n let closeDelim = matchingDelim < 0 ? openDelim : \"]}>)\".charCodeAt(matchingDelim);\n for (;;) {\n if (input.next < 0)\n return;\n if (input.next == closeDelim && input.peek(1) == 39 /* Ch.SingleQuote */) {\n input.advance(2);\n return;\n }\n input.advance();\n }\n}\nfunction readWord(input, result) {\n for (;;) {\n if (input.next != 95 /* Ch.Underscore */ && !isAlpha(input.next))\n break;\n if (result != null)\n result += String.fromCharCode(input.next);\n input.advance();\n }\n return result;\n}\nfunction readWordOrQuoted(input) {\n if (input.next == 39 /* Ch.SingleQuote */ || input.next == 34 /* Ch.DoubleQuote */ || input.next == 96 /* Ch.Backtick */) {\n let quote = input.next;\n input.advance();\n readLiteral(input, quote, false);\n }\n else {\n readWord(input);\n }\n}\nfunction readBits(input, endQuote) {\n while (input.next == 48 /* Ch._0 */ || input.next == 49 /* Ch._1 */)\n input.advance();\n if (endQuote && input.next == endQuote)\n input.advance();\n}\nfunction readNumber(input, sawDot) {\n for (;;) {\n if (input.next == 46 /* Ch.Dot */) {\n if (sawDot)\n break;\n sawDot = true;\n }\n else if (input.next < 48 /* Ch._0 */ || input.next > 57 /* Ch._9 */) {\n break;\n }\n input.advance();\n }\n if (input.next == 69 /* Ch.E */ || input.next == 101 /* Ch.e */) {\n input.advance();\n if (input.next == 43 /* Ch.Plus */ || input.next == 45 /* Ch.Dash */)\n input.advance();\n while (input.next >= 48 /* Ch._0 */ && input.next <= 57 /* Ch._9 */)\n input.advance();\n }\n}\nfunction eol(input) {\n while (!(input.next < 0 || input.next == 10 /* Ch.Newline */))\n input.advance();\n}\nfunction inString(ch, str) {\n for (let i = 0; i < str.length; i++)\n if (str.charCodeAt(i) == ch)\n return true;\n return false;\n}\nconst Space = \" \\t\\r\\n\";\nfunction keywords(keywords, types, builtin) {\n let result = Object.create(null);\n result[\"true\"] = result[\"false\"] = Bool;\n result[\"null\"] = result[\"unknown\"] = Null;\n for (let kw of keywords.split(\" \"))\n if (kw)\n result[kw] = Keyword;\n for (let tp of types.split(\" \"))\n if (tp)\n result[tp] = Type;\n for (let kw of (builtin || \"\").split(\" \"))\n if (kw)\n result[kw] = Builtin;\n return result;\n}\nconst SQLTypes = \"array binary bit boolean char character clob date decimal double float int integer interval large national nchar nclob numeric object precision real smallint time timestamp varchar varying \";\nconst SQLKeywords = \"absolute action add after all allocate alter and any are as asc assertion at authorization before begin between both breadth by call cascade cascaded case cast catalog check close collate collation column commit condition connect connection constraint constraints constructor continue corresponding count create cross cube current current_date current_default_transform_group current_transform_group_for_type current_path current_role current_time current_timestamp current_user cursor cycle data day deallocate declare default deferrable deferred delete depth deref desc describe descriptor deterministic diagnostics disconnect distinct do domain drop dynamic each else elseif end end-exec equals escape except exception exec execute exists exit external fetch first for foreign found from free full function general get global go goto grant group grouping handle having hold hour identity if immediate in indicator initially inner inout input insert intersect into is isolation join key language last lateral leading leave left level like limit local localtime localtimestamp locator loop map match method minute modifies module month names natural nesting new next no none not of old on only open option or order ordinality out outer output overlaps pad parameter partial path prepare preserve primary prior privileges procedure public read reads recursive redo ref references referencing relative release repeat resignal restrict result return returns revoke right role rollback rollup routine row rows savepoint schema scroll search second section select session session_user set sets signal similar size some space specific specifictype sql sqlexception sqlstate sqlwarning start state static system_user table temporary then timezone_hour timezone_minute to trailing transaction translation treat trigger under undo union unique unnest until update usage user using value values view when whenever where while with without work write year zone \";\nconst defaults = {\n backslashEscapes: false,\n hashComments: false,\n spaceAfterDashes: false,\n slashComments: false,\n doubleQuotedStrings: false,\n doubleDollarQuotedStrings: false,\n unquotedBitLiterals: false,\n treatBitsAsBytes: false,\n charSetCasts: false,\n plsqlQuotingMechanism: false,\n operatorChars: \"*+\\-%<>!=&|~^/\",\n specialVar: \"?\",\n identifierQuotes: '\"',\n caseInsensitiveIdentifiers: false,\n words: /*@__PURE__*/keywords(SQLKeywords, SQLTypes)\n};\nfunction dialect(spec, kws, types, builtin) {\n let dialect = {};\n for (let prop in defaults)\n dialect[prop] = (spec.hasOwnProperty(prop) ? spec : defaults)[prop];\n if (kws)\n dialect.words = keywords(kws, types || \"\", builtin);\n return dialect;\n}\nfunction tokensFor(d) {\n return new ExternalTokenizer(input => {\n var _a;\n let { next } = input;\n input.advance();\n if (inString(next, Space)) {\n while (inString(input.next, Space))\n input.advance();\n input.acceptToken(whitespace);\n }\n else if (next == 36 /* Ch.Dollar */ && d.doubleDollarQuotedStrings) {\n let tag = readWord(input, \"\");\n if (input.next == 36 /* Ch.Dollar */) {\n input.advance();\n readDoubleDollarLiteral(input, tag);\n input.acceptToken(String$1);\n }\n }\n else if (next == 39 /* Ch.SingleQuote */ || next == 34 /* Ch.DoubleQuote */ && d.doubleQuotedStrings) {\n readLiteral(input, next, d.backslashEscapes);\n input.acceptToken(String$1);\n }\n else if (next == 35 /* Ch.Hash */ && d.hashComments ||\n next == 47 /* Ch.Slash */ && input.next == 47 /* Ch.Slash */ && d.slashComments) {\n eol(input);\n input.acceptToken(LineComment);\n }\n else if (next == 45 /* Ch.Dash */ && input.next == 45 /* Ch.Dash */ &&\n (!d.spaceAfterDashes || input.peek(1) == 32 /* Ch.Space */)) {\n eol(input);\n input.acceptToken(LineComment);\n }\n else if (next == 47 /* Ch.Slash */ && input.next == 42 /* Ch.Star */) {\n input.advance();\n for (let depth = 1;;) {\n let cur = input.next;\n if (input.next < 0)\n break;\n input.advance();\n if (cur == 42 /* Ch.Star */ && input.next == 47 /* Ch.Slash */) {\n depth--;\n input.advance();\n if (!depth)\n break;\n }\n else if (cur == 47 /* Ch.Slash */ && input.next == 42 /* Ch.Star */) {\n depth++;\n input.advance();\n }\n }\n input.acceptToken(BlockComment);\n }\n else if ((next == 101 /* Ch.e */ || next == 69 /* Ch.E */) && input.next == 39 /* Ch.SingleQuote */) {\n input.advance();\n readLiteral(input, 39 /* Ch.SingleQuote */, true);\n input.acceptToken(String$1);\n }\n else if ((next == 110 /* Ch.n */ || next == 78 /* Ch.N */) && input.next == 39 /* Ch.SingleQuote */ &&\n d.charSetCasts) {\n input.advance();\n readLiteral(input, 39 /* Ch.SingleQuote */, d.backslashEscapes);\n input.acceptToken(String$1);\n }\n else if (next == 95 /* Ch.Underscore */ && d.charSetCasts) {\n for (let i = 0;; i++) {\n if (input.next == 39 /* Ch.SingleQuote */ && i > 1) {\n input.advance();\n readLiteral(input, 39 /* Ch.SingleQuote */, d.backslashEscapes);\n input.acceptToken(String$1);\n break;\n }\n if (!isAlpha(input.next))\n break;\n input.advance();\n }\n }\n else if (d.plsqlQuotingMechanism &&\n (next == 113 /* Ch.q */ || next == 81 /* Ch.Q */) && input.next == 39 /* Ch.SingleQuote */ &&\n input.peek(1) > 0 && !inString(input.peek(1), Space)) {\n let openDelim = input.peek(1);\n input.advance(2);\n readPLSQLQuotedLiteral(input, openDelim);\n input.acceptToken(String$1);\n }\n else if (inString(next, d.identifierQuotes)) {\n const endQuote = next == 91 /* Ch.BracketL */ ? 93 /* Ch.BracketR */ : next;\n readLiteral(input, endQuote, false);\n input.acceptToken(QuotedIdentifier);\n }\n else if (next == 40 /* Ch.ParenL */) {\n input.acceptToken(ParenL);\n }\n else if (next == 41 /* Ch.ParenR */) {\n input.acceptToken(ParenR);\n }\n else if (next == 123 /* Ch.BraceL */) {\n input.acceptToken(BraceL);\n }\n else if (next == 125 /* Ch.BraceR */) {\n input.acceptToken(BraceR);\n }\n else if (next == 91 /* Ch.BracketL */) {\n input.acceptToken(BracketL);\n }\n else if (next == 93 /* Ch.BracketR */) {\n input.acceptToken(BracketR);\n }\n else if (next == 59 /* Ch.Semi */) {\n input.acceptToken(Semi);\n }\n else if (d.unquotedBitLiterals && next == 48 /* Ch._0 */ && input.next == 98 /* Ch.b */) {\n input.advance();\n readBits(input);\n input.acceptToken(Bits);\n }\n else if ((next == 98 /* Ch.b */ || next == 66 /* Ch.B */) && (input.next == 39 /* Ch.SingleQuote */ || input.next == 34 /* Ch.DoubleQuote */)) {\n const quoteStyle = input.next;\n input.advance();\n if (d.treatBitsAsBytes) {\n readLiteral(input, quoteStyle, d.backslashEscapes);\n input.acceptToken(Bytes);\n }\n else {\n readBits(input, quoteStyle);\n input.acceptToken(Bits);\n }\n }\n else if (next == 48 /* Ch._0 */ && (input.next == 120 /* Ch.x */ || input.next == 88 /* Ch.X */) ||\n (next == 120 /* Ch.x */ || next == 88 /* Ch.X */) && input.next == 39 /* Ch.SingleQuote */) {\n let quoted = input.next == 39 /* Ch.SingleQuote */;\n input.advance();\n while (isHexDigit(input.next))\n input.advance();\n if (quoted && input.next == 39 /* Ch.SingleQuote */)\n input.advance();\n input.acceptToken(Number);\n }\n else if (next == 46 /* Ch.Dot */ && input.next >= 48 /* Ch._0 */ && input.next <= 57 /* Ch._9 */) {\n readNumber(input, true);\n input.acceptToken(Number);\n }\n else if (next == 46 /* Ch.Dot */) {\n input.acceptToken(Dot);\n }\n else if (next >= 48 /* Ch._0 */ && next <= 57 /* Ch._9 */) {\n readNumber(input, false);\n input.acceptToken(Number);\n }\n else if (inString(next, d.operatorChars)) {\n while (inString(input.next, d.operatorChars))\n input.advance();\n input.acceptToken(Operator);\n }\n else if (inString(next, d.specialVar)) {\n if (input.next == next)\n input.advance();\n readWordOrQuoted(input);\n input.acceptToken(SpecialVar);\n }\n else if (next == 58 /* Ch.Colon */ || next == 44 /* Ch.Comma */) {\n input.acceptToken(Punctuation);\n }\n else if (isAlpha(next)) {\n let word = readWord(input, String.fromCharCode(next));\n input.acceptToken(input.next == 46 /* Ch.Dot */ || input.peek(-word.length - 1) == 46 /* Ch.Dot */\n ? Identifier : (_a = d.words[word.toLowerCase()]) !== null && _a !== void 0 ? _a : Identifier);\n }\n });\n}\nconst tokens = /*@__PURE__*/tokensFor(defaults);\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser$1 = /*@__PURE__*/LRParser.deserialize({\n version: 14,\n states: \"%vQ]QQOOO#wQRO'#DSO$OQQO'#CwO%eQQO'#CxO%lQQO'#CyO%sQQO'#CzOOQQ'#DS'#DSOOQQ'#C}'#C}O'UQRO'#C{OOQQ'#Cv'#CvOOQQ'#C|'#C|Q]QQOOQOQQOOO'`QQO'#DOO(xQRO,59cO)PQQO,59cO)UQQO'#DSOOQQ,59d,59dO)cQQO,59dOOQQ,59e,59eO)jQQO,59eOOQQ,59f,59fO)qQQO,59fOOQQ-E6{-E6{OOQQ,59b,59bOOQQ-E6z-E6zOOQQ,59j,59jOOQQ-E6|-E6|O+VQRO1G.}O+^QQO,59cOOQQ1G/O1G/OOOQQ1G/P1G/POOQQ1G/Q1G/QP+kQQO'#C}O+rQQO1G.}O)PQQO,59cO,PQQO'#Cw\",\n stateData: \",[~OtOSPOSQOS~ORUOSUOTUOUUOVROXSOZTO]XO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O^]ORvXSvXTvXUvXVvXXvXZvX]vX_vX`vXavXbvXcvXdvXevXfvXgvXhvX~OsvX~P!jOa_Ob_Oc_O~ORUOSUOTUOUUOVROXSOZTO^tO_UO`UOa`Ob`Oc`OdUOeUOfUOgUOhUO~OWaO~P$ZOYcO~P$ZO[eO~P$ZORUOSUOTUOUUOVROXSOZTO^QO_UO`UOaPObPOcPOdUOeUOfUOgUOhUO~O]hOsoX~P%zOajObjOcjO~O^]ORkaSkaTkaUkaVkaXkaZka]ka_ka`kaakabkackadkaekafkagkahka~Oska~P'kO^]O~OWvXYvX[vX~P!jOWnO~P$ZOYoO~P$ZO[pO~P$ZO^]ORkiSkiTkiUkiVkiXkiZki]ki_ki`kiakibkickidkiekifkigkihki~Oski~P)xOWkaYka[ka~P'kO]hO~P$ZOWkiYki[ki~P)xOasObsOcsO~O\",\n goto: \"#hwPPPPPPPPPPPPPPPPPPPPPPPPPPx||||!Y!^!d!xPPP#[TYOZeUORSTWZbdfqT[OZQZORiZSWOZQbRQdSQfTZgWbdfqQ^PWk^lmrQl_Qm`RrseVORSTWZbdfq\",\n nodeNames: \"⚠ LineComment BlockComment String Number Bool Null ( ) { } [ ] ; . Operator Punctuation SpecialVar Identifier QuotedIdentifier Keyword Type Bits Bytes Builtin Script Statement CompositeIdentifier Parens Braces Brackets Statement\",\n maxTerm: 38,\n nodeProps: [\n [\"isolate\", -4,1,2,3,19,\"\"]\n ],\n skippedNodes: [0,1,2],\n repeatNodeCount: 3,\n tokenData: \"RORO\",\n tokenizers: [0, tokens],\n topRules: {\"Script\":[0,25]},\n tokenPrec: 0\n});\n\nfunction tokenBefore(tree) {\n let cursor = tree.cursor().moveTo(tree.from, -1);\n while (/Comment/.test(cursor.name))\n cursor.moveTo(cursor.from, -1);\n return cursor.node;\n}\nfunction idName(doc, node) {\n let text = doc.sliceString(node.from, node.to);\n let quoted = /^([`'\"\\[])(.*)([`'\"\\]])$/.exec(text);\n return quoted ? quoted[2] : text;\n}\nfunction plainID(node) {\n return node && (node.name == \"Identifier\" || node.name == \"QuotedIdentifier\");\n}\nfunction pathFor(doc, id) {\n if (id.name == \"CompositeIdentifier\") {\n let path = [];\n for (let ch = id.firstChild; ch; ch = ch.nextSibling)\n if (plainID(ch))\n path.push(idName(doc, ch));\n return path;\n }\n return [idName(doc, id)];\n}\nfunction parentsFor(doc, node) {\n for (let path = [];;) {\n if (!node || node.name != \".\")\n return path;\n let name = tokenBefore(node);\n if (!plainID(name))\n return path;\n path.unshift(idName(doc, name));\n node = tokenBefore(name);\n }\n}\nfunction sourceContext(state, startPos) {\n let pos = syntaxTree(state).resolveInner(startPos, -1);\n let aliases = getAliases(state.doc, pos);\n if (pos.name == \"Identifier\" || pos.name == \"QuotedIdentifier\" || pos.name == \"Keyword\") {\n return { from: pos.from,\n quoted: pos.name == \"QuotedIdentifier\" ? state.doc.sliceString(pos.from, pos.from + 1) : null,\n parents: parentsFor(state.doc, tokenBefore(pos)),\n aliases };\n }\n if (pos.name == \".\") {\n return { from: startPos, quoted: null, parents: parentsFor(state.doc, pos), aliases };\n }\n else {\n return { from: startPos, quoted: null, parents: [], empty: true, aliases };\n }\n}\nconst EndFrom = /*@__PURE__*/new Set(/*@__PURE__*/\"where group having order union intersect except all distinct limit offset fetch for\".split(\" \"));\nfunction getAliases(doc, at) {\n let statement;\n for (let parent = at; !statement; parent = parent.parent) {\n if (!parent)\n return null;\n if (parent.name == \"Statement\")\n statement = parent;\n }\n let aliases = null;\n for (let scan = statement.firstChild, sawFrom = false, prevID = null; scan; scan = scan.nextSibling) {\n let kw = scan.name == \"Keyword\" ? doc.sliceString(scan.from, scan.to).toLowerCase() : null;\n let alias = null;\n if (!sawFrom) {\n sawFrom = kw == \"from\";\n }\n else if (kw == \"as\" && prevID && plainID(scan.nextSibling)) {\n alias = idName(doc, scan.nextSibling);\n }\n else if (kw && EndFrom.has(kw)) {\n break;\n }\n else if (prevID && plainID(scan)) {\n alias = idName(doc, scan);\n }\n if (alias) {\n if (!aliases)\n aliases = Object.create(null);\n aliases[alias] = pathFor(doc, prevID);\n }\n prevID = /Identifier$/.test(scan.name) ? scan : null;\n }\n return aliases;\n}\nfunction maybeQuoteCompletions(openingQuote, closingQuote, completions) {\n return completions.map(c => ({ ...c, label: c.label[0] == openingQuote ? c.label : openingQuote + c.label + closingQuote, apply: undefined }));\n}\nconst Span = /^\\w*$/, QuotedSpan = /^[`'\"\\[]?\\w*[`'\"\\]]?$/;\nfunction isSelfTag(namespace) {\n return namespace.self && typeof namespace.self.label == \"string\";\n}\nclass CompletionLevel {\n constructor(idQuote, idCaseInsensitive) {\n this.idQuote = idQuote;\n this.idCaseInsensitive = idCaseInsensitive;\n this.list = [];\n this.children = undefined;\n }\n child(name) {\n let children = this.children || (this.children = Object.create(null));\n let found = children[name];\n if (found)\n return found;\n if (name && !this.list.some(c => c.label == name))\n this.list.push(nameCompletion(name, \"type\", this.idQuote, this.idCaseInsensitive));\n return (children[name] = new CompletionLevel(this.idQuote, this.idCaseInsensitive));\n }\n maybeChild(name) {\n return this.children ? this.children[name] : null;\n }\n addCompletion(option) {\n let found = this.list.findIndex(o => o.label == option.label);\n if (found > -1)\n this.list[found] = option;\n else\n this.list.push(option);\n }\n addCompletions(completions) {\n for (let option of completions)\n this.addCompletion(typeof option == \"string\" ? nameCompletion(option, \"property\", this.idQuote, this.idCaseInsensitive) : option);\n }\n addNamespace(namespace) {\n if (Array.isArray(namespace)) {\n this.addCompletions(namespace);\n }\n else if (isSelfTag(namespace)) {\n this.addNamespace(namespace.children);\n }\n else {\n this.addNamespaceObject(namespace);\n }\n }\n addNamespaceObject(namespace) {\n for (let name of Object.keys(namespace)) {\n let children = namespace[name], self = null;\n let parts = name.replace(/\\\\?\\./g, p => p == \".\" ? \"\\0\" : p).split(\"\\0\");\n let scope = this;\n if (isSelfTag(children)) {\n self = children.self;\n children = children.children;\n }\n for (let i = 0; i < parts.length; i++) {\n if (self && i == parts.length - 1)\n scope.addCompletion(self);\n scope = scope.child(parts[i].replace(/\\\\\\./g, \".\"));\n }\n scope.addNamespace(children);\n }\n }\n}\nfunction nameCompletion(label, type, idQuote, idCaseInsensitive) {\n if ((new RegExp(\"^[a-z_][a-z_\\\\d]*$\", idCaseInsensitive ? \"i\" : \"\")).test(label))\n return { label, type };\n return { label, type, apply: idQuote + label + getClosingQuote(idQuote) };\n}\nfunction getClosingQuote(openingQuote) {\n return openingQuote === \"[\" ? \"]\" : openingQuote;\n}\n// Some of this is more gnarly than it has to be because we're also\n// supporting the deprecated, not-so-well-considered style of\n// supplying the schema (dotted property names for schemas, separate\n// `tables` and `schemas` completions).\nfunction completeFromSchema(schema, tables, schemas, defaultTableName, defaultSchemaName, dialect) {\n var _a;\n let idQuote = ((_a = dialect === null || dialect === void 0 ? void 0 : dialect.spec.identifierQuotes) === null || _a === void 0 ? void 0 : _a[0]) || '\"';\n let top = new CompletionLevel(idQuote, !!(dialect === null || dialect === void 0 ? void 0 : dialect.spec.caseInsensitiveIdentifiers));\n let defaultSchema = defaultSchemaName ? top.child(defaultSchemaName) : null;\n top.addNamespace(schema);\n if (tables)\n (defaultSchema || top).addCompletions(tables);\n if (schemas)\n top.addCompletions(schemas);\n if (defaultSchema)\n top.addCompletions(defaultSchema.list);\n if (defaultTableName)\n top.addCompletions((defaultSchema || top).child(defaultTableName).list);\n return (context) => {\n let { parents, from, quoted, empty, aliases } = sourceContext(context.state, context.pos);\n if (empty && !context.explicit)\n return null;\n if (aliases && parents.length == 1)\n parents = aliases[parents[0]] || parents;\n let level = top;\n for (let name of parents) {\n while (!level.children || !level.children[name]) {\n if (level == top && defaultSchema)\n level = defaultSchema;\n else if (level == defaultSchema && defaultTableName)\n level = level.child(defaultTableName);\n else\n return null;\n }\n let next = level.maybeChild(name);\n if (!next)\n return null;\n level = next;\n }\n let options = level.list;\n if (level == top && aliases)\n options = options.concat(Object.keys(aliases).map(name => ({ label: name, type: \"constant\" })));\n if (quoted) {\n let openingQuote = quoted[0];\n let closingQuote = getClosingQuote(openingQuote);\n let quoteAfter = context.state.sliceDoc(context.pos, context.pos + 1) == closingQuote;\n return {\n from,\n to: quoteAfter ? context.pos + 1 : undefined,\n options: maybeQuoteCompletions(openingQuote, closingQuote, options),\n validFor: QuotedSpan,\n };\n }\n else {\n return {\n from,\n options: options,\n validFor: Span\n };\n }\n };\n}\nfunction completionType(tokenType) {\n return tokenType == Type ? \"type\" : tokenType == Keyword ? \"keyword\" : \"variable\";\n}\nfunction completeKeywords(keywords, upperCase, build) {\n let completions = Object.keys(keywords)\n .map(keyword => build(upperCase ? keyword.toUpperCase() : keyword, completionType(keywords[keyword])));\n return ifNotIn([\"QuotedIdentifier\", \"String\", \"LineComment\", \"BlockComment\", \".\"], completeFromList(completions));\n}\n\nlet parser = /*@__PURE__*/parser$1.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n Statement: /*@__PURE__*/continuedIndent()\n }),\n /*@__PURE__*/foldNodeProp.add({\n Statement(tree, state) { return { from: Math.min(tree.from + 100, state.doc.lineAt(tree.from).to), to: tree.to }; },\n BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; }\n }),\n /*@__PURE__*/styleTags({\n Keyword: tags.keyword,\n Type: tags.typeName,\n Builtin: /*@__PURE__*/tags.standard(tags.name),\n Bits: tags.number,\n Bytes: tags.string,\n Bool: tags.bool,\n Null: tags.null,\n Number: tags.number,\n String: tags.string,\n Identifier: tags.name,\n QuotedIdentifier: /*@__PURE__*/tags.special(tags.string),\n SpecialVar: /*@__PURE__*/tags.special(tags.name),\n LineComment: tags.lineComment,\n BlockComment: tags.blockComment,\n Operator: tags.operator,\n \"Semi Punctuation\": tags.punctuation,\n \"( )\": tags.paren,\n \"{ }\": tags.brace,\n \"[ ]\": tags.squareBracket\n })\n ]\n});\n/**\nRepresents an SQL dialect.\n*/\nclass SQLDialect {\n constructor(\n /**\n @internal\n */\n dialect, \n /**\n The language for this dialect.\n */\n language, \n /**\n The spec used to define this dialect.\n */\n spec) {\n this.dialect = dialect;\n this.language = language;\n this.spec = spec;\n }\n /**\n Returns the language for this dialect as an extension.\n */\n get extension() { return this.language.extension; }\n /**\n Reconfigure the parser used by this dialect. Returns a new\n dialect object.\n */\n configureLanguage(options, name) {\n return new SQLDialect(this.dialect, this.language.configure(options, name), this.spec);\n }\n /**\n Define a new dialect.\n */\n static define(spec) {\n let d = dialect(spec, spec.keywords, spec.types, spec.builtin);\n let language = LRLanguage.define({\n name: \"sql\",\n parser: parser.configure({\n tokenizers: [{ from: tokens, to: tokensFor(d) }]\n }),\n languageData: {\n commentTokens: { line: \"--\", block: { open: \"/*\", close: \"*/\" } },\n closeBrackets: { brackets: [\"(\", \"[\", \"{\", \"'\", '\"', \"`\"] }\n }\n });\n return new SQLDialect(d, language, spec);\n }\n}\nfunction defaultKeyword(label, type) { return { label, type, boost: -1 }; }\n/**\nReturns a completion source that provides keyword completion for\nthe given SQL dialect.\n*/\nfunction keywordCompletionSource(dialect, upperCase = false, build) {\n return completeKeywords(dialect.dialect.words, upperCase, build || defaultKeyword);\n}\n/**\nReturns a completion sources that provides schema-based completion\nfor the given configuration.\n*/\nfunction schemaCompletionSource(config) {\n return config.schema ? completeFromSchema(config.schema, config.tables, config.schemas, config.defaultTable, config.defaultSchema, config.dialect || StandardSQL)\n : () => null;\n}\nfunction schemaCompletion(config) {\n return config.schema ? (config.dialect || StandardSQL).language.data.of({\n autocomplete: schemaCompletionSource(config)\n }) : [];\n}\n/**\nSQL language support for the given SQL dialect, with keyword\ncompletion, and, if provided, schema-based completion as extra\nextensions.\n*/\nfunction sql(config = {}) {\n let lang = config.dialect || StandardSQL;\n return new LanguageSupport(lang.language, [\n schemaCompletion(config),\n lang.language.data.of({\n autocomplete: keywordCompletionSource(lang, config.upperCaseKeywords, config.keywordCompletion)\n })\n ]);\n}\n/**\nThe standard SQL dialect.\n*/\nconst StandardSQL = /*@__PURE__*/SQLDialect.define({});\n/**\nDialect for [PostgreSQL](https://www.postgresql.org).\n*/\nconst PostgreSQL = /*@__PURE__*/SQLDialect.define({\n charSetCasts: true,\n doubleDollarQuotedStrings: true,\n operatorChars: \"+-*/<>=~!@#%^&|`?\",\n specialVar: \"\",\n keywords: SQLKeywords + \"abort abs absent access according ada admin aggregate alias also always analyse analyze array_agg array_max_cardinality asensitive assert assignment asymmetric atomic attach attribute attributes avg backward base64 begin_frame begin_partition bernoulli bit_length blocked bom cache called cardinality catalog_name ceil ceiling chain char_length character_length character_set_catalog character_set_name character_set_schema characteristics characters checkpoint class class_origin cluster coalesce cobol collation_catalog collation_name collation_schema collect column_name columns command_function command_function_code comment comments committed concurrently condition_number configuration conflict connection_name constant constraint_catalog constraint_name constraint_schema contains content control conversion convert copy corr cost covar_pop covar_samp csv cume_dist current_catalog current_row current_schema cursor_name database datalink datatype datetime_interval_code datetime_interval_precision db debug defaults defined definer degree delimiter delimiters dense_rank depends derived detach detail dictionary disable discard dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue document dump dynamic_function dynamic_function_code element elsif empty enable encoding encrypted end_frame end_partition endexec enforced enum errcode error event every exclude excluding exclusive exp explain expression extension extract family file filter final first_value flag floor following force foreach fortran forward frame_row freeze fs functions fusion generated granted greatest groups handler header hex hierarchy hint id ignore ilike immediately immutable implementation implicit import include including increment indent index indexes info inherit inherits inline insensitive instance instantiable instead integrity intersection invoker isnull key_member key_type label lag last_value lead leakproof least length library like_regex link listen ln load location lock locked log logged lower mapping matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text min minvalue mod mode more move multiset mumps name namespace nfc nfd nfkc nfkd nil normalize normalized nothing notice notify notnull nowait nth_value ntile nullable nullif nulls number occurrences_regex octet_length octets off offset oids operator options ordering others over overlay overriding owned owner parallel parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partition pascal passing passthrough password percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding prepared print_strict_params procedural procedures program publication query quote raise range rank reassign recheck recovery refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex rename repeatable replace replica requiring reset respect restart restore result_oid returned_cardinality returned_length returned_octet_length returned_sqlstate returning reverse routine_catalog routine_name routine_schema routines row_count row_number rowtype rule scale schema_name schemas scope scope_catalog scope_name scope_schema security selective self sensitive sequence sequences serializable server server_name setof share show simple skip slice snapshot source specific_name sqlcode sqlerror sqrt stable stacked standalone statement statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time table_name tables tablesample tablespace temp template ties token top_level_count transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex trigger_catalog trigger_name trigger_schema trim trim_array truncate trusted type types uescape unbounded uncommitted unencrypted unlink unlisten unlogged unnamed untyped upper uri use_column use_variable user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema vacuum valid validate validator value_of var_pop var_samp varbinary variable_conflict variadic verbose version versioning views volatile warning whitespace width_bucket window within wrapper xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate yes\",\n types: SQLTypes + \"bigint int8 bigserial serial8 varbit bool box bytea cidr circle precision float8 inet int4 json jsonb line lseg macaddr macaddr8 money numeric pg_lsn point polygon float4 int2 smallserial serial2 serial serial4 text timetz timestamptz tsquery tsvector txid_snapshot uuid xml\"\n});\nconst MySQLKeywords = \"accessible algorithm analyze asensitive authors auto_increment autocommit avg avg_row_length binlog btree cache catalog_name chain change changed checkpoint checksum class_origin client_statistics coalesce code collations columns comment committed completion concurrent consistent contains contributors convert database databases day_hour day_microsecond day_minute day_second delay_key_write delayed delimiter des_key_file dev_pop dev_samp deviance directory disable discard distinctrow div dual dumpfile enable enclosed ends engine engines enum errors escaped even event events every explain extended fast field fields flush force found_rows fulltext grants handler hash high_priority hosts hour_microsecond hour_minute hour_second ignore ignore_server_ids import index index_statistics infile innodb insensitive insert_method install invoker iterate keys kill linear lines list load lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modify mutex mysql_errno no_write_to_binlog offline offset one online optimize optionally outfile pack_keys parser partition partitions password phase plugin plugins prev processlist profile profiles purge query quick range read_write rebuild recover regexp relaylog remove rename reorganize repair repeatable replace require resume rlike row_format rtree schedule schema_name schemas second_microsecond security sensitive separator serializable server share show slave slow snapshot soname spatial sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result ssl starting starts std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace terminated triggers truncate uncommitted uninstall unlock upgrade use use_frm user_resources user_statistics utc_date utc_time utc_timestamp variables views warnings xa xor year_month zerofill\";\nconst MySQLTypes = SQLTypes + \"bool blob long longblob longtext medium mediumblob mediumint mediumtext tinyblob tinyint tinytext text bigint int1 int2 int3 int4 int8 float4 float8 varbinary varcharacter precision datetime unsigned signed\";\nconst MySQLBuiltin = \"charset clear edit ego help nopager notee nowarning pager print prompt quit rehash source status system tee\";\n/**\n[MySQL](https://dev.mysql.com/) dialect.\n*/\nconst MySQL = /*@__PURE__*/SQLDialect.define({\n operatorChars: \"*+-%<>!=&|^\",\n charSetCasts: true,\n doubleQuotedStrings: true,\n unquotedBitLiterals: true,\n hashComments: true,\n spaceAfterDashes: true,\n specialVar: \"@?\",\n identifierQuotes: \"`\",\n keywords: SQLKeywords + \"group_concat \" + MySQLKeywords,\n types: MySQLTypes,\n builtin: MySQLBuiltin\n});\n/**\nVariant of [`MySQL`](https://codemirror.net/6/docs/ref/#lang-sql.MySQL) for\n[MariaDB](https://mariadb.org/).\n*/\nconst MariaSQL = /*@__PURE__*/SQLDialect.define({\n operatorChars: \"*+-%<>!=&|^\",\n charSetCasts: true,\n doubleQuotedStrings: true,\n unquotedBitLiterals: true,\n hashComments: true,\n spaceAfterDashes: true,\n specialVar: \"@?\",\n identifierQuotes: \"`\",\n keywords: SQLKeywords + \"always generated groupby_concat hard persistent shutdown soft virtual \" + MySQLKeywords,\n types: MySQLTypes,\n builtin: MySQLBuiltin\n});\nlet MSSQLBuiltin = \n// Aggregate https://msdn.microsoft.com/en-us/library/ms173454.aspx\n\"approx_count_distinct approx_percentile_cont approx_percentile_disc avg checksum_agg count count_big grouping grouping_id max min product stdev stdevp sum var varp \" +\n // AI https://learn.microsoft.com/en-us/sql/t-sql/functions/ai-functions-transact-sql?view=sql-server-ver17\n \"ai_generate_embeddings ai_generate_chunks \" +\n // Analytic https://learn.microsoft.com/en-us/sql/t-sql/functions/analytic-functions-transact-sql?view=sql-server-ver17\n \"cume_dist first_value lag last_value lead percentile_cont percentile_disc percent_rank \" +\n // Bit Manipulation https://learn.microsoft.com/en-us/sql/t-sql/functions/bit-manipulation-functions-overview?view=sql-server-ver17\n \"left_shift right_shift bit_count get_bit set_bit \" +\n // Collation Functions https://learn.microsoft.com/en-us/sql/t-sql/functions/collation-functions-collationproperty-transact-sql?view=sql-server-ver17\n \"collationproperty tertiary_weights \" +\n // Configuration https://learn.microsoft.com/en-us/sql/t-sql/functions/configuration-functions-transact-sql?view=sql-server-ver17\n \"@@datefirst @@dbts @@langid @@language @@lock_timeout @@max_connections @@max_precision @@nestlevel @@options @@remserver @@servername @@servicename @@spid @@textsize @@version \" +\n // Conversion https://learn.microsoft.com/en-us/sql/t-sql/functions/conversion-functions-transact-sql?view=sql-server-ver17\n \"cast convert parse try_cast try_convert try_parse \" +\n // Cryptographic https://learn.microsoft.com/en-us/sql/t-sql/functions/cryptographic-functions-transact-sql?view=sql-server-ver17\n \"asymkey_id asymkeyproperty certproperty cert_id crypt_gen_random decryptbyasymkey decryptbycert decryptbykey decryptbykeyautoasymkey decryptbykeyautocert decryptbypassphrase encryptbyasymkey encryptbycert encryptbykey encryptbypassphrase hashbytes is_objectsigned key_guid key_id key_name signbyasymkey signbycert symkeyproperty verifysignedbycert verifysignedbyasymkey \" +\n // Cursor https://learn.microsoft.com/en-us/sql/t-sql/functions/cursor-functions-transact-sql?view=sql-server-ver17\n \"@@cursor_rows @@fetch_status cursor_status \" +\n // Data type https://learn.microsoft.com/en-us/sql/t-sql/functions/data-type-functions-transact-sql?view=sql-server-ver17\n \"datalength ident_current ident_incr ident_seed identity sql_variant_property \" +\n // Date & time https://learn.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-ver17\n \"@@datefirst current_timestamp current_timezone current_timezone_id date_bucket dateadd datediff datediff_big datefromparts datename datepart datetime2fromparts datetimefromparts datetimeoffsetfromparts datetrunc day eomonth getdate getutcdate isdate month smalldatetimefromparts switchoffset sysdatetime sysdatetimeoffset sysutcdatetime timefromparts todatetimeoffset year \" +\n // Fuzzy string match https://learn.microsoft.com/en-us/sql/t-sql/functions/edit-distance-transact-sql?view=sql-server-ver17\n \"edit_distance edit_distance_similarity jaro_winkler_distance jaro_winkler_similarity \" +\n // Graph https://learn.microsoft.com/en-us/sql/t-sql/functions/graph-functions-transact-sql?view=sql-server-ver17\n \"edge_id_from_parts graph_id_from_edge_id graph_id_from_node_id node_id_from_parts object_id_from_edge_id object_id_from_node_id \" +\n // JSON https://learn.microsoft.com/en-us/sql/t-sql/functions/json-functions-transact-sql?view=sql-server-ver17\n \"json isjson json_array json_contains json_modify json_object json_path_exists json_query json_value \" +\n // Regular Expressions https://learn.microsoft.com/en-us/sql/t-sql/functions/regular-expressions-functions-transact-sql?view=sql-server-ver17\n \"regexp_like regexp_replace regexp_substr regexp_instr regexp_count regexp_matches regexp_split_to_table \" +\n // Mathematical https://learn.microsoft.com/en-us/sql/t-sql/functions/mathematical-functions-transact-sql?view=sql-server-ver17\n \"abs acos asin atan atn2 ceiling cos cot degrees exp floor log log10 pi power radians rand round sign sin sqrt square tan \" +\n // Logical https://learn.microsoft.com/en-us/sql/t-sql/functions/logical-functions-choose-transact-sql?view=sql-server-ver17\n \"choose greatest iif least \" +\n // Metadata https://learn.microsoft.com/en-us/sql/t-sql/functions/metadata-functions-transact-sql?view=sql-server-ver17\n \"@@procid app_name applock_mode applock_test assemblyproperty col_length col_name columnproperty databasepropertyex db_id db_name file_id file_idex file_name filegroup_id filegroup_name filegroupproperty fileproperty filepropertyex fulltextcatalogproperty fulltextserviceproperty index_col indexkey_property indexproperty next value for object_definition object_id object_name object_schema_name objectproperty objectpropertyex original_db_name parsename schema_id schema_name scope_identity serverproperty stats_date type_id type_name typeproperty \" +\n // Ranking https://learn.microsoft.com/en-us/sql/t-sql/functions/ranking-functions-transact-sql?view=sql-server-ver17\n \"dense_rank ntile rank row_number \" +\n // Replication https://learn.microsoft.com/en-us/sql/t-sql/functions/replication-functions-publishingservername?view=sql-server-ver17\n \"publishingservername \" +\n // Security https://learn.microsoft.com/en-us/sql/t-sql/functions/security-functions-transact-sql?view=sql-server-ver17\n \"certenclosed certprivatekey current_user database_principal_id has_dbaccess has_perms_by_name is_member is_rolemember is_srvrolemember loginproperty original_login permissions pwdencrypt pwdcompare session_user sessionproperty suser_id suser_name suser_sid suser_sname system_user user user_id user_name \" +\n // String https://learn.microsoft.com/en-us/sql/t-sql/functions/string-functions-transact-sql?view=sql-server-ver17\n \"ascii char charindex concat concat_ws difference format left len lower ltrim nchar patindex quotename replace replicate reverse right rtrim soundex space str string_agg string_escape stuff substring translate trim unicode upper \" +\n // System https://learn.microsoft.com/en-us/sql/t-sql/functions/system-functions-transact-sql?view=sql-server-ver17\n \"$partition @@error @@identity @@pack_received @@rowcount @@trancount binary_checksum checksum compress connectionproperty context_info current_request_id current_transaction_id decompress error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big session_context xact_state \" +\n // System Statistical https://learn.microsoft.com/en-us/sql/t-sql/functions/system-statistical-functions-transact-sql?view=sql-server-ver17\n \"@@connections @@cpu_busy @@idle @@io_busy @@pack_sent @@packet_errors @@timeticks @@total_errors @@total_read @@total_write \" +\n // Text & Image https://learn.microsoft.com/en-us/sql/t-sql/functions/text-and-image-functions-textptr-transact-sql?view=sql-server-ver17\n \"textptr textvalid \" +\n // Trigger https://learn.microsoft.com/en-us/sql/t-sql/functions/trigger-functions-transact-sql?view=sql-server-ver17\n \"columns_updated eventdata trigger_nestlevel \" +\n // Vectors https://learn.microsoft.com/en-us/sql/t-sql/functions/vector-functions-transact-sql?view=sql-server-ver17\n \"vector_distance vectorproperty vector_search \" +\n // Relational operators https://msdn.microsoft.com/en-us/library/ms187957.aspx\n \"generate_series opendatasource openjson openquery openrowset openxml predict string_split \" +\n // Other\n \"coalesce nullif apply catch filter force include keep keepfixed modify optimize parameterization parameters partition recompile sequence set\";\n/**\nSQL dialect for Microsoft [SQL\nServer](https://www.microsoft.com/en-us/sql-server).\n*/\nconst MSSQL = /*@__PURE__*/SQLDialect.define({\n keywords: SQLKeywords +\n // Reserved Keywords https://learn.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql?view=sql-server-ver17\n \"add external procedure all fetch public alter file raiserror and fillfactor read any for readtext as foreign reconfigure asc freetext references authorization freetexttable replication backup from restore begin full restrict between function return break goto revert browse grant revoke bulk group right by having rollback cascade holdlock rowcount case identity rowguidcol check identity_insert rule checkpoint identitycol save close if schema clustered in securityaudit coalesce index select collate inner semantickeyphrasetable column insert semanticsimilaritydetailstable commit intersect semanticsimilaritytable compute into session_user constraint is set contains join setuser containstable key shutdown continue kill some convert left statistics create like system_user cross lineno table current load tablesample current_date merge textsize current_time national then current_timestamp nocheck to current_user nonclustered top cursor not tran database null transaction dbcc nullif trigger deallocate of truncate declare off try_convert default offsets tsequal delete on union deny open unique desc opendatasource unpivot disk openquery update distinct openrowset updatetext distributed openxml use double option user drop or values dump order varying else outer view end over waitfor errlvl percent when escape pivot where except plan while exec precision with execute primary within group exists print writetext exit proc \" +\n // table hints https://learn.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver17\n \"noexpand index forceseek forcescan holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot spatial_window_max_cells tablock tablockx updlock xlock keepidentity keepdefaults ignore_constraints ignore_triggers\",\n types: SQLTypes + \"smalldatetime datetimeoffset datetime2 datetime bigint smallint smallmoney tinyint money real text nvarchar ntext varbinary image hierarchyid uniqueidentifier sql_variant xml\",\n builtin: MSSQLBuiltin,\n operatorChars: \"*+-%<>!=^&|/\",\n specialVar: \"@\",\n identifierQuotes: \"\\\"[\"\n});\n/**\n[SQLite](https://sqlite.org/) dialect.\n*/\nconst SQLite = /*@__PURE__*/SQLDialect.define({\n keywords: SQLKeywords + \"abort analyze attach autoincrement conflict database detach exclusive fail glob ignore index indexed instead isnull notnull offset plan pragma query raise regexp reindex rename replace temp vacuum virtual\",\n types: SQLTypes + \"bool blob long longblob longtext medium mediumblob mediumint mediumtext tinyblob tinyint tinytext text bigint int2 int8 unsigned signed real\",\n builtin: \"auth backup bail changes clone databases dbinfo dump echo eqp explain fullschema headers help import imposter indexes iotrace lint load log mode nullvalue once print prompt quit restore save scanstats separator shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width\",\n operatorChars: \"*+-%<>!=&|/~\",\n identifierQuotes: \"`\\\"\",\n specialVar: \"@:?$\"\n});\n/**\nDialect for [Cassandra](https://cassandra.apache.org/)'s SQL-ish query language.\n*/\nconst Cassandra = /*@__PURE__*/SQLDialect.define({\n keywords: \"add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime infinity NaN\",\n types: SQLTypes + \"ascii bigint blob counter frozen inet list map static text timeuuid tuple uuid varint\",\n slashComments: true\n});\n/**\n[PL/SQL](https://en.wikipedia.org/wiki/PL/SQL) dialect.\n*/\nconst PLSQL = /*@__PURE__*/SQLDialect.define({\n keywords: SQLKeywords + \"abort accept access add all alter and any arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body by case cast char_base check close cluster clusters colauth column comment commit compress connected constant constraint crash create current currval cursor data_base database dba deallocate debugoff debugon declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry exception exception_init exchange exclusive exists external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base of off offline on online only option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw rebuild record ref references refresh rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work\",\n builtin: \"appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define echo editfile embedded feedback flagger flush heading headsep instance linesize lno loboffset logsource longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar repfooter repheader serveroutput shiftinout show showmode spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout timing trimout trimspool ttitle underline verify version wrap\",\n types: SQLTypes + \"ascii bfile bfilename bigserial bit blob dec long number nvarchar nvarchar2 serial smallint string text uid varchar2 xml\",\n operatorChars: \"*/+-%<>!=~\",\n doubleQuotedStrings: true,\n charSetCasts: true,\n plsqlQuotingMechanism: true\n});\n\nexport { Cassandra, MSSQL, MariaSQL, MySQL, PLSQL, PostgreSQL, SQLDialect, SQLite, StandardSQL, keywordCompletionSource, schemaCompletionSource, sql };\n","import { LRLanguage, indentNodeProp, delimitedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';\nimport { styleTags, tags } from '@lezer/highlight';\nimport { LRParser } from '@lezer/lr';\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst spec_Keyword = {__proto__:null,anyref:34, dataref:34, eqref:34, externref:34, i31ref:34, funcref:34, i8:34, i16:34, i32:34, i64:34, f32:34, f64:34};\nconst parser = /*@__PURE__*/LRParser.deserialize({\n version: 14,\n states: \"!^Q]QPOOOqQPO'#CbOOQO'#Cd'#CdOOQO'#Cl'#ClOOQO'#Ch'#ChQ]QPOOOOQO,58|,58|OxQPO,58|OOQO-E6f-E6fOOQO1G.h1G.h\",\n stateData: \"!P~O_OSPOSQOS~OTPOVROXROYROZROaQO~OSUO~P]OSXO~P]O\",\n goto: \"xaPPPPPPbPbPPPhPPPrXROPTVQTOQVPTWTVXSOPTV\",\n nodeNames: \"⚠ LineComment BlockComment Module ) ( App Identifier Type Keyword Number String\",\n maxTerm: 17,\n nodeProps: [\n [\"isolate\", -3,1,2,11,\"\"],\n [\"openedBy\", 4,\"(\"],\n [\"closedBy\", 5,\")\"],\n [\"group\", -6,6,7,8,9,10,11,\"Expression\"]\n ],\n skippedNodes: [0,1,2],\n repeatNodeCount: 1,\n tokenData: \"0o~R^XY}YZ}]^}pq}rs!Stu#pxy'Uyz(e{|(j}!O(j!Q!R(s!R![*p!]!^.^#T#o.{~!SO_~~!VVOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j<%lO!S~!qOZ~~!tRO;'S!S;'S;=`!};=`O!S~#QWOr!Srs!ls#O!S#O#P!q#P;'S!S;'S;=`#j;=`<%l!S<%lO!S~#mP;=`<%l!S~#siqr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~%giV~qr%bst%btu%buv%bvw%bwx%bz{%b{|%b}!O%b!O!P%b!P!Q%b!Q![%b![!]%b!^!_%b!_!`%b!`!a%b!a!b%b!b!c%b!c!}%b#Q#R%b#R#S%b#S#T%b#T#o%b#p#q%b#r#s%b~'ZPT~!]!^'^~'aTO!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~'sVOy'^yz(Yz!]'^!]!^'p!^;'S'^;'S;=`(_<%lO'^~(_OQ~~(bP;=`<%l'^~(jOS~~(mQ!Q!R(s!R![*p~(xUY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){#l#m+[~)aRY~!Q![)j!g!h){#X#Y){~)oSY~!Q![)j!g!h){#R#S*j#X#Y){~*OR{|*X}!O*X!Q![*_~*[P!Q![*_~*dQY~!Q![*_#R#S*X~*mP!Q![)j~*uTY~!O!P)[!Q![*p!g!h){#R#S+U#X#Y){~+XP!Q![*p~+_R!Q![+h!c!i+h#T#Z+h~+mVY~!O!P,S!Q![+h!c!i+h!r!s-P#R#S+[#T#Z+h#d#e-P~,XTY~!Q![,h!c!i,h!r!s-P#T#Z,h#d#e-P~,mUY~!Q![,h!c!i,h!r!s-P#R#S.Q#T#Z,h#d#e-P~-ST{|-c}!O-c!Q![-o!c!i-o#T#Z-o~-fR!Q![-o!c!i-o#T#Z-o~-tSY~!Q![-o!c!i-o#R#S-c#T#Z-o~.TR!Q![,h!c!i,h#T#Z,h~.aP!]!^.d~.iSP~OY.dZ;'S.d;'S;=`.u<%lO.d~.xP;=`<%l.d~/QiX~qr.{st.{tu.{uv.{vw.{wx.{z{.{{|.{}!O.{!O!P.{!P!Q.{!Q![.{![!].{!^!_.{!_!`.{!`!a.{!a!b.{!b!c.{!c!}.{#Q#R.{#R#S.{#S#T.{#T#o.{#p#q.{#r#s.{\",\n tokenizers: [0],\n topRules: {\"Module\":[0,3]},\n specialized: [{term: 9, get: (value) => spec_Keyword[value] || -1}],\n tokenPrec: 0\n});\n\nconst wastLanguage = /*@__PURE__*/LRLanguage.define({\n name: \"wast\",\n parser: /*@__PURE__*/parser.configure({\n props: [\n /*@__PURE__*/indentNodeProp.add({\n App: /*@__PURE__*/delimitedIndent({ closing: \")\", align: false })\n }),\n /*@__PURE__*/foldNodeProp.add({\n App: foldInside,\n BlockComment(tree) { return { from: tree.from + 2, to: tree.to - 2 }; }\n }),\n /*@__PURE__*/styleTags({\n Keyword: tags.keyword,\n Type: tags.typeName,\n Number: tags.number,\n String: tags.string,\n Identifier: tags.variableName,\n LineComment: tags.lineComment,\n BlockComment: tags.blockComment,\n \"( )\": tags.paren\n })\n ]\n }),\n languageData: {\n commentTokens: { line: \";;\", block: { open: \"(;\", close: \";)\" } },\n closeBrackets: { brackets: [\"(\", '\"'] }\n }\n});\nfunction wast() {\n return new LanguageSupport(wastLanguage);\n}\n\nexport { wast, wastLanguage };\n","import type {Extension} from \"@codemirror/state\"\nimport {javascript} from \"@codemirror/lang-javascript\"\nimport {css} from \"@codemirror/lang-css\"\nimport {html} from \"@codemirror/lang-html\"\nimport {json} from \"@codemirror/lang-json\"\nimport {markdown} from \"@codemirror/lang-markdown\"\nimport {python} from \"@codemirror/lang-python\"\nimport {xml} from \"@codemirror/lang-xml\"\nimport {yaml} from \"@codemirror/lang-yaml\"\nimport {rust} from \"@codemirror/lang-rust\"\nimport {cpp} from \"@codemirror/lang-cpp\"\nimport {java} from \"@codemirror/lang-java\"\nimport {php} from \"@codemirror/lang-php\"\nimport {sql} from \"@codemirror/lang-sql\"\nimport {wast} from \"@codemirror/lang-wast\"\n\nconst extensionMap: Record<string, () => Extension> = {\n\t\".js\": () => javascript(),\n\t\".mjs\": () => javascript(),\n\t\".cjs\": () => javascript(),\n\t\".jsx\": () => javascript({jsx: true}),\n\t\".ts\": () => javascript({typescript: true}),\n\t\".mts\": () => javascript({typescript: true}),\n\t\".cts\": () => javascript({typescript: true}),\n\t\".tsx\": () => javascript({jsx: true, typescript: true}),\n\t\".css\": () => css(),\n\t\".html\": () => html(),\n\t\".htm\": () => html(),\n\t\".svelte\": () => html(),\n\t\".vue\": () => html(),\n\t\".json\": () => json(),\n\t\".jsonc\": () => json(),\n\t\".md\": () => markdown(),\n\t\".markdown\": () => markdown(),\n\t\".mdx\": () => markdown(),\n\t\".py\": () => python(),\n\t\".xml\": () => xml(),\n\t\".svg\": () => xml(),\n\t\".yaml\": () => yaml(),\n\t\".yml\": () => yaml(),\n\t\".rs\": () => rust(),\n\t\".c\": () => cpp(),\n\t\".h\": () => cpp(),\n\t\".cpp\": () => cpp(),\n\t\".hpp\": () => cpp(),\n\t\".cc\": () => cpp(),\n\t\".cxx\": () => cpp(),\n\t\".java\": () => java(),\n\t\".php\": () => php(),\n\t\".sql\": () => sql(),\n\t\".wat\": () => wast(),\n\t\".wast\": () => wast(),\n}\n\nconst mimeMap: Record<string, () => Extension> = {\n\t\"text/javascript\": () => javascript(),\n\t\"application/javascript\": () => javascript(),\n\t\"text/typescript\": () => javascript({typescript: true}),\n\t\"text/css\": () => css(),\n\t\"text/html\": () => html(),\n\t\"application/json\": () => json(),\n\t\"text/markdown\": () => markdown(),\n\t\"text/x-python\": () => python(),\n\t\"text/xml\": () => xml(),\n\t\"application/xml\": () => xml(),\n\t\"image/svg+xml\": () => xml(),\n\t\"text/yaml\": () => yaml(),\n\t\"text/x-yaml\": () => yaml(),\n\t\"text/x-rustsrc\": () => rust(),\n\t\"text/x-csrc\": () => cpp(),\n\t\"text/x-c++src\": () => cpp(),\n\t\"text/x-java\": () => java(),\n\t\"text/x-sql\": () => sql(),\n}\n\nexport function getLanguageExtension(\n\textension?: string,\n\tmimeType?: string,\n): Extension {\n\tif (extension) {\n\t\tconst ext = extension.startsWith(\".\") ? extension : `.${extension}`\n\t\tconst factory = extensionMap[ext]\n\t\tif (factory) return factory()\n\t}\n\tif (mimeType) {\n\t\tconst factory = mimeMap[mimeType]\n\t\tif (factory) return factory()\n\t}\n\treturn []\n}\n","import {onCleanup} from \"solid-js\"\nimport {\n\tEditorView,\n\tlineNumbers,\n\thighlightSpecialChars,\n\thighlightActiveLineGutter,\n\thighlightActiveLine,\n\trectangularSelection,\n\tkeymap,\n\tscrollPastEnd,\n} from \"@codemirror/view\"\nimport {EditorState, Compartment} from \"@codemirror/state\"\nimport {\n\tindentUnit,\n\tbracketMatching,\n\tfoldGutter,\n\tfoldKeymap,\n} from \"@codemirror/language\"\nimport {\n\thighlightSelectionMatches,\n\tsearchKeymap,\n} from \"@codemirror/search\"\nimport {\n\tdefaultKeymap,\n\thistory,\n\thistoryKeymap,\n\tindentWithTab,\n\temacsStyleKeymap,\n} from \"@codemirror/commands\"\nimport {automergeSyncPlugin} from \"@automerge/automerge-codemirror\"\nimport {isImmutableStringFileDoc} from \"../datatype\"\nimport {collectExtensions} from \"./codemirror-extensions\"\nimport {createFileComments} from \"./comments\"\nimport codemirrorTheme from \"../codemirror-theme\"\nimport {getLanguageExtension} from \"../languages\"\nimport type {FileDoc} from \"../types\"\n\nenum mod {\n\tshift = 1,\n\tcontrol = 2,\n\toption = 3,\n\tcommand = 4,\n}\n\nfunction modshift(event: {\n\tctrlKey: boolean\n\tshiftKey: boolean\n\taltKey: boolean\n\tmetaKey: boolean\n}) {\n\tlet bits = 0\n\tbits |= +event.shiftKey << mod.shift\n\tbits |= +event.ctrlKey << mod.control\n\tbits |= +event.altKey << mod.option\n\tbits |= +event.metaKey << mod.command\n\treturn bits\n}\n\n// A file is treated as text whenever its content actually is text — a plain\n// string (editable) or an ImmutableString (read-only). We key off the content\n// shape rather than the declared mimeType, which is frequently missing or\n// generic (e.g. application/octet-stream) for files that are perfectly editable\n// text.\nexport const isTextFile = (doc: FileDoc) => {\n\treturn typeof doc?.content === \"string\" || (!!doc && isImmutableStringFileDoc(doc))\n}\n\n// Code files get TypeScript's language server (completions, hovers,\n// diagnostics), under the language id it knows each extension by.\nconst LSP_LANGUAGES: Record<string, string> = {\n\tjs: \"javascript\",\n\tmjs: \"javascript\",\n\tcjs: \"javascript\",\n\tjsx: \"javascriptreact\",\n\tts: \"typescript\",\n\tmts: \"typescript\",\n\tcts: \"typescript\",\n\ttsx: \"typescriptreact\",\n}\n\nconst lspLanguage = (extension?: string): string | undefined => {\n\tif (!extension) return undefined\n\tconst ext = extension.startsWith(\".\") ? extension.slice(1) : extension\n\treturn LSP_LANGUAGES[ext.toLowerCase()]\n}\n\nexport function TextFileEditor(props: {\n\tdoc: FileDoc\n\thandle: any\n\telement?: HTMLElement\n}) {\n\tlet container!: HTMLDivElement\n\n\tconst languageExtension = getLanguageExtension(\n\t\tprops.doc.extension,\n\t\tprops.doc.mimeType,\n\t)\n\n\t// The language server's features are reconfigured into this compartment\n\t// once its client has loaded — see below.\n\tconst tsCompartment = new Compartment()\n\n\tconst comments =\n\t\tprops.handle && props.element\n\t\t\t? createFileComments({handle: props.handle, element: props.element})\n\t\t\t: undefined\n\n\tconst view = new EditorView({\n\t\tdoc: props.doc.content?.toString() || \"\",\n\t\textensions: [\n\t\t\tlineNumbers(),\n\t\t\thighlightSpecialChars(),\n\t\t\thighlightActiveLineGutter(),\n\t\t\thighlightActiveLine(),\n\t\t\thighlightSelectionMatches(),\n\t\t\thistory(),\n\t\t\tfoldGutter(),\n\t\t\tbracketMatching(),\n\t\t\tindentUnit.of(\"\\t\"),\n\t\t\tEditorState.allowMultipleSelections.of(true),\n\t\t\tEditorState.tabSize.of(2),\n\t\t\tEditorView.lineWrapping,\n\t\t\tscrollPastEnd(),\n\t\t\tEditorView.clickAddsSelectionRange.of((event) => {\n\t\t\t\tconst mask = modshift(event)\n\t\t\t\tif (mask == 1 << mod.option) return true\n\t\t\t\treturn false\n\t\t\t}),\n\t\t\trectangularSelection({\n\t\t\t\teventFilter(event) {\n\t\t\t\t\tconst mask = modshift(event)\n\t\t\t\t\tif (mask == ((1 << mod.shift) | (1 << mod.option)))\n\t\t\t\t\t\treturn true\n\t\t\t\t\treturn false\n\t\t\t\t},\n\t\t\t}),\n\t\t\tkeymap.of([\n\t\t\t\tindentWithTab,\n\t\t\t\t...emacsStyleKeymap,\n\t\t\t\t...searchKeymap,\n\t\t\t\t...historyKeymap,\n\t\t\t\t...foldKeymap,\n\t\t\t\t...defaultKeymap,\n\t\t\t]),\n\t\t\tlanguageExtension,\n\t\t\ttsCompartment.of([]),\n\t\t\t...codemirrorTheme,\n\t\t\tautomergeSyncPlugin({handle: props.handle, path: [\"content\"]}),\n\t\t\tcomments?.extension ?? [],\n\t\t\t// last, so they can override anything above\n\t\t\tcollectExtensions(props.element, props.handle, props.doc, false),\n\t\t],\n\t})\n\tcomments?.attach(view)\n\n\t// For code files, connect to the shared TypeScript language server (tsgo,\n\t// in a worker) and add its features to the editor in place. Each document\n\t// is its own folder in the server's filesystem, so open files never clash.\n\t// It's loaded on demand, so only code files pay for it.\n\tconst languageId = lspLanguage(props.doc.extension)\n\tif (languageId) {\n\t\tlet disposed = false\n\t\tonCleanup(() => {\n\t\t\tdisposed = true\n\t\t})\n\t\tconst ext = props.doc.extension.replace(/^\\./, \"\").toLowerCase()\n\t\tconst uri = `file:///${props.handle?.documentId ?? \"untitled\"}/index.${ext}`\n\t\tvoid import(\"../typescript-language-server\")\n\t\t\t.then(({typescriptLanguageServer}) => {\n\t\t\t\tif (disposed) return\n\t\t\t\tview.dispatch({\n\t\t\t\t\teffects: tsCompartment.reconfigure(\n\t\t\t\t\t\ttypescriptLanguageServer().plugin(uri, languageId),\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\t// type hints are an extra: without them it's a plain editor\n\t\t\t\tconsole.error(\"failed to start TypeScript language server\", error)\n\t\t\t})\n\t}\n\n\tonCleanup(() => {\n\t\tview.destroy()\n\t})\n\n\t// cmd+= / cmd+- / cmd+0 (ctrl off a Mac) resize the editor's text instead\n\t// of zooming the whole page.\n\tconst MIN_FONT_SIZE = 6\n\tconst apple = [\"Mac\", \"iPhone\", \"iPad\"].some((name) =>\n\t\tnavigator.platform.includes(name),\n\t)\n\tconst zoomMask = 1 << (apple ? mod.command : mod.control)\n\tconst zoom = (event: KeyboardEvent) => {\n\t\tif ((modshift(event) & ~(1 << mod.shift)) != zoomMask) return\n\t\tlet step\n\t\tif (event.key == \"=\" || event.key == \"+\") step = 1\n\t\telse if (event.key == \"-\" || event.key == \"_\") step = -1\n\t\telse if (event.key == \"0\") step = 0\n\t\telse return\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tif (step == 0) {\n\t\t\tview.dom.style.fontSize = \"\"\n\t\t} else {\n\t\t\tconst size = parseFloat(getComputedStyle(view.dom).fontSize)\n\t\t\tview.dom.style.fontSize = `${Math.max(MIN_FONT_SIZE, size + step)}px`\n\t\t}\n\t\tview.requestMeasure()\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tonKeyDown={zoom}\n\t\t\tref={(el) => {\n\t\t\t\tcontainer = el\n\t\t\t\tel.appendChild(view.dom)\n\t\t\t}}\n\t\t\tstyle={{\n\t\t\t\twidth: \"100%\",\n\t\t\t\theight: \"100%\",\n\t\t\t}}\n\t\t/>\n\t)\n}\n","import {onCleanup} from \"solid-js\"\nimport type {DocHandle} from \"@automerge/automerge-repo/slim\"\nimport {\n\tEditorView,\n\tlineNumbers,\n\thighlightSpecialChars,\n\thighlightActiveLineGutter,\n\thighlightActiveLine,\n\tkeymap,\n\tscrollPastEnd,\n} from \"@codemirror/view\"\nimport {EditorState} from \"@codemirror/state\"\nimport {bracketMatching, foldGutter, foldKeymap} from \"@codemirror/language\"\nimport {highlightSelectionMatches, searchKeymap} from \"@codemirror/search\"\nimport {defaultKeymap} from \"@codemirror/commands\"\nimport codemirrorTheme from \"../codemirror-theme\"\nimport {getLanguageExtension} from \"../languages\"\nimport type {FileDoc} from \"../types\"\nimport {fileText} from \"../datatype\"\nimport {collectExtensions} from \"./codemirror-extensions\"\nimport {createFileComments} from \"./comments\"\n\n// Read-only text: ImmutableString files, and any text file opened through a\n// read-only handle. It follows the file as it changes (an ImmutableString is\n// replaced whole, so the view is too).\nexport function ReadOnlyTextViewer(props: {\n\tdoc: FileDoc\n\thandle?: DocHandle<FileDoc>\n\telement?: HTMLElement\n}) {\n\tconst languageExtension = getLanguageExtension(\n\t\tprops.doc.extension,\n\t\tprops.doc.mimeType,\n\t)\n\n\t// Read-only to the editor, but the file can still take comments (unless\n\t// it's an ImmutableString — see createFileComments).\n\tconst comments =\n\t\tprops.handle && props.element\n\t\t\t? createFileComments({handle: props.handle, element: props.element})\n\t\t\t: undefined\n\n\tconst view = new EditorView({\n\t\tdoc: fileText(props.handle?.doc() ?? props.doc),\n\t\textensions: [\n\t\t\tEditorState.readOnly.of(true),\n\t\t\tEditorView.editable.of(false),\n\t\t\tlineNumbers(),\n\t\t\thighlightSpecialChars(),\n\t\t\thighlightActiveLineGutter(),\n\t\t\thighlightActiveLine(),\n\t\t\thighlightSelectionMatches(),\n\t\t\tfoldGutter(),\n\t\t\tbracketMatching(),\n\t\t\tEditorState.tabSize.of(2),\n\t\t\tEditorView.lineWrapping,\n\t\t\tscrollPastEnd(),\n\t\t\tkeymap.of([...searchKeymap, ...foldKeymap, ...defaultKeymap]),\n\t\t\tlanguageExtension,\n\t\t\t...codemirrorTheme,\n\t\t\tcomments?.extension ?? [],\n\t\t\t// last, so they can override anything above\n\t\t\tcollectExtensions(props.element, props.handle, props.doc, true),\n\t\t],\n\t})\n\n\tconst follow = () => {\n\t\tconst text = fileText(props.handle?.doc())\n\t\tif (text === view.state.doc.toString()) return\n\t\tview.dispatch({changes: {from: 0, to: view.state.doc.length, insert: text}})\n\t}\n\tprops.handle?.on(\"change\", follow)\n\tcomments?.attach(view)\n\n\tonCleanup(() => {\n\t\tprops.handle?.off(\"change\", follow)\n\t\tview.destroy()\n\t})\n\n\treturn (\n\t\t<div\n\t\t\tref={(el) => {\n\t\t\t\tel.appendChild(view.dom)\n\t\t\t}}\n\t\t\tstyle={{\n\t\t\t\twidth: \"100%\",\n\t\t\t\theight: \"100%\",\n\t\t\t}}\n\t\t/>\n\t)\n}\n","import {Show, Match, Switch} from \"solid-js\"\nimport {\n\tuseDocHandle,\n\tcreateDocumentProjection,\n} from \"solid-automerge\"\nimport type {FileDoc} from \"../types\"\nimport {isImmutableStringFileDoc, isTextBytesFileDoc} from \"../datatype\"\nimport {isImageFile} from \"../utils\"\nimport {HTMLFileViewer, isHTMLFile} from \"./HTMLFileViewer\"\nimport {ImageFileViewer} from \"./ImageFileViewer\"\nimport {PDFFileViewer, isPDFFile} from \"./PDFFileViewer\"\nimport {AudioFileViewer, isAudioFile} from \"./AudioFileViewer\"\nimport {VideoFileViewer, isVideoFile} from \"./VideoFileViewer\"\nimport {TextFileEditor, isTextFile} from \"./TextFileEditor\"\nimport {ReadOnlyTextViewer} from \"./ReadOnlyTextViewer\"\nimport {DocHandle} from \"@automerge/automerge-repo/slim\"\nimport {UnixFileEntry} from \"@inkandswitch/patchwork-filesystem\"\nimport {PatchworkViewElement} from \"@inkandswitch/patchwork-elements\"\n\nexport function FileEditor(props: {\n\thandle: DocHandle<UnixFileEntry>\n\telement: PatchworkViewElement\n}) {\n\tconst handle = useDocHandle<FileDoc>(props.handle.url, props.element)\n\tconst doc = createDocumentProjection<FileDoc>(() => handle.latest)\n\n\treturn (\n\t\t<Show when={doc()} fallback={\"Loading...\"}>\n\t\t\t<Switch\n\t\t\t\tfallback={\n\t\t\t\t\t<div>\n\t\t\t\t\t\tNo preview available for this file type\n\t\t\t\t\t\t<table>\n\t\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>mimeType</td>\n\t\t\t\t\t\t\t\t\t<td>{doc()?.mimeType}</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t</tbody>\n\t\t\t\t\t\t</table>\n\t\t\t\t\t</div>\n\t\t\t\t}>\n\t\t\t\t<Match when={isHTMLFile(doc()!)}>\n\t\t\t\t\t<HTMLFileViewer doc={doc()!} />\n\t\t\t\t</Match>\n\t\t\t\t{/* Media viewers are matched before text so a string-backed asset\n\t\t\t\t (e.g. an SVG) still renders as media rather than its markup. */}\n\t\t\t\t<Match when={isImageFile(doc()!)}>\n\t\t\t\t\t<ImageFileViewer doc={doc()!} />\n\t\t\t\t</Match>\n\t\t\t\t<Match when={isPDFFile(doc()!)}>\n\t\t\t\t\t<PDFFileViewer doc={doc()!} />\n\t\t\t\t</Match>\n\t\t\t\t<Match when={isAudioFile(doc()!)}>\n\t\t\t\t\t<AudioFileViewer doc={doc()!} />\n\t\t\t\t</Match>\n\t\t\t\t<Match when={isVideoFile(doc()!)}>\n\t\t\t\t\t<VideoFileViewer doc={doc()!} />\n\t\t\t\t</Match>\n\t\t\t\t{/* Text is editable unless it's an ImmutableString or we were handed\n\t\t\t\t a read-only handle (e.g. a view of the file at some heads). */}\n\t\t\t\t<Match\n\t\t\t\t\twhen={\n\t\t\t\t\t\tisTextFile(doc()!) &&\n\t\t\t\t\t\t!isImmutableStringFileDoc(doc()!) &&\n\t\t\t\t\t\t!props.handle.isReadOnly()\n\t\t\t\t\t}>\n\t\t\t\t\t<TextFileEditor\n\t\t\t\t\t\tdoc={doc()!}\n\t\t\t\t\t\thandle={props.handle}\n\t\t\t\t\t\telement={props.element}\n\t\t\t\t\t/>\n\t\t\t\t</Match>\n\t\t\t\t<Match when={isTextFile(doc()!)}>\n\t\t\t\t\t<ReadOnlyTextViewer\n\t\t\t\t\t\tdoc={doc()!}\n\t\t\t\t\t\thandle={props.handle as any}\n\t\t\t\t\t\telement={props.element}\n\t\t\t\t\t/>\n\t\t\t\t</Match>\n\t\t\t\t<Match when={isTextBytesFileDoc(doc()!)}>\n\t\t\t\t\t<ReadOnlyTextViewer\n\t\t\t\t\t\tdoc={doc()!}\n\t\t\t\t\t\thandle={props.handle as any}\n\t\t\t\t\t\telement={props.element}\n\t\t\t\t\t/>\n\t\t\t\t</Match>\n\t\t\t</Switch>\n\t\t</Show>\n\t)\n}\n","import {render} from \"solid-js/web\"\nimport {FileEditor} from \"./components/FileEditor\"\nimport {PatchworkViewElement} from \"@inkandswitch/patchwork-elements\"\nimport {DocHandle} from \"@automerge/automerge-repo/slim\"\nimport {UnixFileEntry} from \"@inkandswitch/patchwork-filesystem\"\n\nexport function FileTool(\n\thandle: DocHandle<UnixFileEntry>,\n\telement: PatchworkViewElement\n) {\n\tconst dispose = render(\n\t\t() => <FileEditor handle={handle} element={element} />,\n\t\telement\n\t)\n\n\treturn () => {\n\t\tdispose()\n\t}\n}\n"],"names":["s","m","h","d","w","y","ms","val","options","type","parse","fmtLong","fmtShort","str","match","n","msAbs","plural","name","isPlural","setup","env","createDebug","coerce","disable","enable","enabled","require$$0","destroy","key","selectColor","namespace","hash","i","prevTime","enableOverride","namespacesCache","enabledCache","debug","args","self","curr","index","format","formatter","extend","v","delimiter","newDebug","namespaces","split","ns","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","skip","common","exports","formatArgs","save","load","useColors","localstorage","warned","module","c","lastC","r","formatters","error","log","pojo","target","BLOCK_MARKER","apply","rest","path","range","p","RANGE_ARRAY","start","end","ZERO_LENGTH","DELETE","INSERT","APPEND","REPLACE","seq","a","b","nextkey","get","obj","fromAutomerge","autopatch","payload","autoproduce","doc","patch","cache","makeDocumentProjection","handle","onCleanup","item","set","createStore","ondelete","reconcile","produce","access","createDocumentProjection","createMemo","RepoContext","createContext","useDocHandle","url","contextRepo","useContext","repo","getExistingHandle","unwrappedURL","peekReadyHandle","mutate","createResource","url2","createEffect","isQueryable","state2","state","isHTMLFile","includes","extension","toLowerCase","mimeType","HTMLFileViewer","props","textData","isBinaryFileDoc","TextDecoder","decode","content","toString","blobUrl","blob","Blob","URL","createObjectURL","_el$","_tmpl$","_$insert","_c$","_$memo","_el$2","_tmpl$2","_$effect","_$setAttribute","_tmpl$3","ImageFileViewer","imgUrl","createBinaryUrl","_p$","_v$","_v$2","e","t","undefined","isPDFFile","PDFFileViewer","pdfUrl","isAudioFile","startsWith","AudioFileViewer","audioUrl","isVideoFile","VideoFileViewer","videoUrl","crelt","elt","next","value","add","child","basicNormalize","x","SearchCursor","text","query","from","to","normalize","test","codePointAt","fromCodePoint","codePointSize","norm","pos","code","keep","empty","baseFlags","RegExpCursor","MultilineRegExpCursor","startLine","toCharEnd","off","flattened","FlattenedDoc","cached","flat","cachedFrom","validRegExp","source","line","gotoLine","view","close","result","showDialog","form","sign","ln","cl","percent","col","pc","docLine","selection","EditorSelection","EditorView","defaultHighlightOptions","highlightConfig","Facet","combineConfig","highlightSelectionMatches","defaultTheme","matchHighlighter","matchDeco","Decoration","mainMatchDeco","insideWordBoundaries","check","CharCategory","insideWord","ViewPlugin","update","conf","sel","word","len","deco","part","cursor","selectWord","dispatch","newSel","findNextOccurrence","main","ranges","fullWord","cycled","selectNextOccurrence","searchedText","searchConfigFacet","configs","SearchPanel","SearchQuery","config","_","ch","other","RegExpQuery","StringQuery","st","EditorState","regexpCursor","stringCursor","QueryType","spec","wrapStringTest","inner","buffer","bufferPos","stringWordTest","categorizer","buf","bufPos","charBefore","charAfter","curFrom","curTo","found","_result","limit","wrapRegexpTest","regexpWordTest","findClusterBreak","_from","_to","size","l","setSearchQuery","StateEffect","togglePanel","searchState","StateField","SearchState","defaultQuery","tr","effect","createSearchPanel","f","showPanel","panel","matchMark","selectedMatchMark","searchHighlighter","builder","RangeSetBuilder","selected","searchCommand","openSearchPanel","findNext","announceMatch","selectSearchInput","findPrevious","prev","selectMatches","selectSelectionMatches","cur","replaceNext","changes","replacement","effects","changeSet","replaceAll","announceText","fallback","_a","_b","_c","_d","_e","selText","getSearchInput","getPanel","input","searchInput","searchExtensions","closeSearchPanel","searchKeymap","phrase","button","onclick","runScopeHandlers","AnnounceMargin","Break","lineEnd","baseTheme","Prec","applyCmTransactionsToAmHandle","transactions","transactionsWithChanges","isReconcileTx","fromA","toA","fromB","_toB","inserted","A","applyAmPatchesToCm","patches","changeSpec","handlePatch","ChangeSet","reconcileAnnotationType","handleInsert","handleSplice","handleDel","handlePut","charPath","length","textPath","candidatePath","Annotation","automergeSyncPlugin","__publicField","currentHeads","newHeads","CODEMIRROR_EXTENSIONS_EVENT","collectExtensions","element","readOnly","detail","resolveElement","subscribe","selector","initialValue","setValue","createSignal","onMount","unsubscribe","Providers","subscribeDoc","setHandle","canceled","store","setStore","ready","setReady","sync","COMMENT_THREAD_TYPE","createCommentForRange","contactUrl","targetUrl","threadId","threadUrl","id","findThreadByUrl","thread","hasOwnDraft","isEmptyOwnDraft","discardEmptyOwnDraft","list","comments","commentRanges","targets","positions","openPopover","closePopover","dismissButton","POPOVER_CLASS","buildCommentButton","head","buildThreadPopover","ui","dom","threadView","onOutsideMouseDown","event","onKeyDown","win","armTimer","stopWatch","buttonTooltip","popoverTooltip","commentUIField","popover","buttonDismissed","popoverChanged","field","showTooltip","commentInteractions","hit","COMMENT_BUTTON_VARS_ID","ensureCommentButtonVars","style","commentUITheme","commentUI","PATH","createFileComments","isText","canComment","entries","focusDoc","focusHandle","findAll","focusUrls","focused","urls","revision","setRevision","bump","threadAtPos","threadByTarget","createThreadForRange","contact","watchThreadForClose","seed","sawDraft","onChange","onClose","lastSelectionUrl","followSelection","focus","highlights","highlightTheme","setHighlights","buildHighlights","unique","plain","emphasised","marks","isFocused","RangeSet","DefaultBufferLength","nextPropID","Range","NodeProp","NodeType","MountedTree","tree","overlay","parser","bracketed","noProps","flags","src","prop","group","map","direct","node","groups","NodeSet","types","newTypes","newProps","CachedNode","CachedInnerNode","IterMode","Tree","children","mounted","mode","TreeCursor","side","scope","TreeNode","resolveNode","stackIterator","enter","leave","anon","entered","balanceRange","data","buildTree","FlatBufferCursor","TreeBuffer","endIndex","startIndex","dir","pick","checkSide","startI","endI","copy","j","overlays","parent","scan","BaseNode","before","after","getChildren","context","matchNodeContext","last","_tree","_parent","BufferNode","BufferContext","hasChild","rPos","enterBracketed","parentStart","iterStack","heads","picked","StackIterator","layers","mount","root","depth","mustLeave","nodeSet","maxBufferLength","reused","minRepeatType","contextHash","lookAhead","takeNode","minPos","inRepeat","lookAheadAtStart","contextAtStart","startPos","findBufferSize","endPos","copyToBuffer","localChildren","localPositions","localInRepeat","lastGroup","lastEnd","makeRepeatLeaf","takeFlatNode","make","makeBalanced","makeTree","nodes","nodeCount","stopAt","lastI","lookAheadProp","base","pair","maxSize","fork","minStart","nodeSize","localSkipped","nodeStart","bufferStart","nodeSizeCache","balanceType","mkTop","mkTree","total","maxChild","divide","offset","groupFrom","groupStart","groupSize","nextSize","only","NodeWeakMap","TreeFragment","openStart","openEnd","fragments","partial","minGap","fI","nextF","cI","nextC","nextPos","cut","fFrom","fTo","Parser","StringInput","done","string","parseMixed","nest","MixedParse","InnerParse","checkRanges","ActiveOverlay","predicate","mounts","stoppedInner","fragmentCursor","FragmentCursor","covered","isCovered","checkCover","materialize","oldMounts","punchRanges","enterFragments","sliceBuf","stack","newStack","innerOffset","stackPos","targetI","StructureCursor","FragmentCursor$2","first","frag","outer","current","gapFrom","gapTo","findCoverChanges","iA","iB","inA","inB","nextA","nextB","nextTagID","Tag$1","Tag","modified","mod","nameOrParent","tag","Modifier","nextModifierID","mods","exists","sameArray","powerSet","array","sets","styleTags","byName","tags","pieces","rule","Rule","ruleNodeProp","take","tagHighlighter","all","cls","sub","tagClass","highlightTags","highlighters","highlighter","highlightTree","putStyle","HighlightBuilder","highlightCode","putText","putBreak","writeTo","classes","nextBreak","upto","at","span","inheritedClass","getStyleTags","tagCls","innerHighlighters","rangeFrom","rangeTo","comment","typeName","propertyName","literal","number","heading","keyword","operator","punctuation","bracket","meta","syntax","codemirrorTheme","syntaxHighlighting","HighlightStyle","Stack","reducePos","score","bufferBase","curContext","cx","StackContext","action","lookaheadRecord","dPrec","count","baseStateID","term","mustSink","top","mustMove","nextState","skipped","nextStart","nextEnd","isNode","sim","SimulatedStack","nextStates","best","reduce","backup","seen","explore","rDepth","dialectID","newCx","tracker","goto","StackBufferCursor","decodeArray","Type","out","stop","digit","CachedToken","nullToken","InputStream","assoc","idx","resolved","token","endOffset","chunk","chunkPos","nextChunk","TokenGroup","readToken","LocalTokenGroup","precTable","elseToken","atEof","ExternalTokenizer","precOffset","groupMask","dialect","accEnd","overrides","low","high","mid","findOffset","tableData","tableOffset","iPrev","verbose","stackIDs","cutAt","FragmentCursor$1","fr","TokenCache","stream","actionIndex","tokenizers","mask","tokenizer","Parse","stacks","newStacks","stopped","stoppedTokens","tok","finished","findFinished","maxRemaining","strictCx","cxHash","defaultReduce","actions","localStack","pushStackDedup","tokens","restarted","tokenEnd","force","forceBase","insert","Dialect","disabled","ContextTracker","LRParser","nodeNames","topTerms","nodeProps","setProp","nodeID","propSpec","tokenArray","getSpecializer","loose","table","groupTag","terminal","slot","flag","deflt","info","prec","values","noSemi","noSemiType","incdec","incdecPrefix","questionDot","JSXStartTag","insertSemi","spaces","newline","LineComment","BlockComment","Dialect_jsx","space","braceR","semicolon","slash","star","plus","minus","lt","comma","question","dot","bracketL","trackNewline","insertSemicolon","noSemicolon","noSemicolonType","operatorToken","mayPostfix","identifierChar","jsx","back","jsHighlight","spec_identifier","spec_word","spec_LessThan","CompletionContext","explicit","syntaxTree","expr","ensureAnchor","listener","toSet","chars","words","prefixMatch","label","completeFromList","o","validFor","ifNotIn","Option","completion","addStart","addEnd","pickedCompletion","insertCompletionText","fromOff","toOff","lines","SourceCache","asSource","known","startCompletionEffect","closeCompletionEffect","FuzzyMatcher","pattern","char","upper","matched","folded","any","precise","byWord","firstSize","anyTo","preciseTo","byWordTo","byWordFolded","adjacentTo","adjacentStart","adjacentEnd","hasLower","wordAdjacent","prevType","StrictMatcher","completionConfig","defaultPositionInfo","joinClass","option","tooltip","rtl","Direction","left","narrow","maxWidth","spaceLeft","spaceRight","infoWidth","infoHeight","spaceBelow","scaleY","scaleX","setSelectedEffect","optionContent","icon","_s","_v","labelElt","detailElt","rangeAroundSelected","max","CompletionTooltip","stateField","applyCompletion","cState","move","prevState","open","infoResult","logException","wrap","opt","scrollIntoView","listRect","infoRect","selRect","docElt","ul","curSection","section","header","li","completionTooltip","container","sortOptions","active","sections","dynamicSectionScore","addOption","getMatch","matcher","sectionOrder","cmp","compare","CompletionDialog","attrs","timestamp","makeAttrs","didSetActive","selectedValue","createTooltip","CompletionState","none","ActiveSource","didSet","setActiveEffect","sameResults","baseAttrs","noAttrs","endA","endB","getUpdateType","typing","ActiveResult","checkValid","mapping","sources","completionState","moveCompletionSelection","forward","by","step","getTooltip","acceptCompletion","startCompletion","closeCompletion","RunningQuery","MaxUpdateCount","MinAbortTime","completionPlugin","doesReset","handler","delay","q","pending","err","updated","dialog","windows","commitCharacters","commitChars","FieldPos","FieldRange","MapMode","Snippet","fieldPositions","lineStart","lineObj","baseIndent","indent","tabs","indentUnit","fields","rawName","snip","brace","fieldMarker","WidgetType","fieldRange","ActiveSnippet","mapped","setActive","moveToField","snippetState","fieldSelection","snippet","editor","Text","Transaction","addSnippetKeymap","snippetPointerHandler","moveField","clearSnippet","nextSnippetField","prevSnippetField","defaultSnippetKeymap","snippetKeymap","maps","keymap","snippetCompletion","closedBracket","RangeValue","autocompletion","completionKeymapExt","completionKeymap","snippets","typescriptSnippets","ScopeNodes","defID","def","functionContext","gatherCompletions","getScope","completions","gather","Identifier","dontComplete","localCompletionSource","isWord","javascriptLanguage","LRLanguage","indentNodeProp","continuedIndent","flatIndent","closed","isCase","delimitedIndent","foldNodeProp","foldInside","jsxSublanguage","defineLanguageFacet","typescriptLanguage","jsxLanguage","sublanguageProp","tsxLanguage","kwCompletion","keywords","typescriptKeywords","javascript","lang","LanguageSupport","autoCloseTags","findOpenTag","elementName","android","defaultInsert","closeTags","around","openTag","descendantOp","Unit","identifier","callee","VariableName","queryIdentifier","queryVariableName","QueryCallee","colon","parenL","underscore","dash","period","ampersand","backslash","asterisk","isAlpha","isDigit","isHex","identifierTokens","varName","inside","dashes","identifiers","queryIdentifiers","descendant","unitToken","cssHighlighting","spec_callee","spec_queryIdentifier","spec_QueryCallee","spec_AtKeyword","_properties","properties","names","pseudoClasses","atRules","variable","isVarArg","VariablesByNode","declSelector","astTop","variableNames","isVariable","defineCSSCompletionSource","isDash","above","cssCompletionSource","cssLanguage","css","scriptText","StartCloseScriptTag","styleText","StartCloseStyleTag","textareaText","StartCloseTextareaTag","EndTag","SelfClosingEndTag","StartTag","StartScriptTag","StartStyleTag","StartTextareaTag","StartSelfClosingTag","StartCloseTag","NoMatchStartCloseTag","MismatchedStartCloseTag","missingCloseTag","IncompleteTag","IncompleteCloseTag","commentContent$1","Element","TagName","Attribute","AttributeName","AttributeValue","UnquotedAttributeValue","ScriptText","StyleText","TextareaText","OpenTag","CloseTag","Dialect_noMatch","Dialect_selfClosing","selfClosers","implicitlyClosed","closeOnOpen","nameChar","cachedName","cachedInput","cachedPos","tagNameAfter","bang","lessThan","greaterThan","ElementContext","startTagTerms","elementContext","tagStart","commentContent","inForeignElement","endTag","selfClosing","contentTokenizer","textToken","endToken","lastState","matchedLen","scriptTokens","styleTokens","textareaTokens","htmlHighlighting","getAttrs","att","findTagName","tagNameNode","maybeNest","configureNesting","attributes","script","textarea","attr","tagName","nameNode","matches","Targets","Charsets","Methods","Encs","Bool","S","Tags","GlobalAttrs","eventAttributes","Schema","extraTags","extraAttrs","findParentElement","allowedChildren","schema","parentInfo","openTags","completeTag","completeCloseTag","completeStartTag","level","completeAttrName","localAttrs","attrName","completeAttrValue","quoteStart","quoteEnd","htmlCompletionFor","htmlCompletionSource","htmlCompletionSourceWith","jsonParser","defaultNesting","defaultAttrs","htmlPlain","endElt","bracketMatchingHandle","htmlLanguage","html","insertTransaction","didType","jsonHighlighting","jsonLanguage","json","CompositeBlock","parentHash","LeafBlock","Line","newPos","skipSpace","goal","skipForList","bl","isOrderedList","isBulletList","isHorizontalRule","DefaultSkipMarkup","_cx","skipSpaceBack","isFencedCode","isBlockquote","breaking","isSetextUnderline","DefaultLeafBlocks","inList","isAtxHeading","EmptyLine","CommentEnd","ProcessingEnd","HTMLBlockStyle","isHTMLBlock","getListIndent","indentAfter","indented","addCodeText","DefaultBlockParsers","pendingMarks","codeStart","fenceEnd","infoFrom","infoTo","hasLine","textStart","textEnd","newBase","endOfSpace","trailing","nodeType","LinkReferenceParser","leaf","finish","parseLinkLabel","parseURL","title","parseLinkTitle","titleEnd","SetextHeadingParser","underline","underlineMark","DefaultEndLeaf","scanLineResult","BlockContext","markI","mark","taken","toRelative","textOffset","rangeI","nextFrom","eol","block","injectMarks","injectGaps","inline","TreeElement","Buffer","dummies","rangeEnd","movePastNext","inclusive","reuse","MarkdownParser","blockParsers","leafBlockParsers","blockNames","endLeafBlock","skipContextMarkup","inlineParsers","inlineNames","wrappers","resolveConfig","nonEmpty","nodeTypes","styles","composite","rm","findName","InlineContext","conc","wrapA","wrapB","elts","Element$2","startOff","EmphasisUnderscore","EmphasisAsterisk","LinkStart","ImageStart","InlineDelimiter","Escapable","Punctuation","DefaultInline","escaped","curSize","procInst","pBefore","pAfter","sBefore","sAfter","leftFlanking","rightFlanking","canOpen","canClose","link","finishLink","dest","requireNonWS","emp","closeSize","k","elements","eI","NotLast","fragEnd","blockI","prevEnd","prevI","dummy","abs","markdownHighlighting","leftOverSpace","parseCode","codeParser","htmlParser","infoNode","StrikethroughDelim","Strikethrough","parseRow","cellStart","cellEnd","esc","parseCell","hasPipe","delimiterLine","TableParser","lineText","firstRow","Table","TaskParser","TaskList","autolinkRE","urlRE","lastTwoDomainWords","emailRE","xmppResourceRE","autolinkURLEnd","autolinkEmailEnd","Autolink","absPos","noBracket","GFM","parseSubSuper","Superscript","Subscript","Emoji","headingProp","commonmark","isHeading","isList","languageDataProp","findSectionEnd","headerNode","headerIndent","foldService","mkLang","Language","commonmarkLanguage","extended","markdownLanguage","getCodeParser","languages","defaultLanguage","LanguageDescription","ParseContext","Context$2","spaceBefore","spaceAfter","itemNumber","getContext","Context","renumberList","normalizeIndent","blank","countColumn","insertNewlineContinueMarkupCommand","dont","emptyLine","second","delTo","blankLine","prevLine","quoted","continued","nonTightList","insertNewlineContinueMarkup","isMark","line1","line2","contextNodeForDelete","deleteMarkupBackward","spaceEnd","markdownKeymap","htmlNoMatch","markdown","codeLanguages","defaultCodeLanguage","addKeymap","completeHTMLTags","pasteURL","htmlTagLanguage","extensions","support","defaultCode","pasteURLAsLink","htmlTagCompletion","htmlTagCompletions","_tagCompletions","nonPlainText","crossesNode","printKeyword","dedent","newline$1","blankLineStart","newlineBracketed","eof","stringContent","Escape","replacementStart","stringEnd","ParenL","ParenthesizedExpression","TupleExpression","ComprehensionExpression","BracketL","ArrayExpression","ArrayComprehensionExpression","BraceL","DictionaryExpression","DictionaryComprehensionExpression","SetExpression","SetComprehensionExpression","ArgList","subscript","String$1","stringStart","stringStartD","stringStartL","stringStartLD","stringStartR","stringStartRD","stringStartRL","stringStartRLD","FormatString","stringStartF","stringStartFD","stringStartFL","stringStartFLD","stringStartFR","stringStartFRD","stringStartFRL","stringStartFRLD","FormatReplacement","nestedFormatReplacement","importList","TypeParamList","ParamList","SequencePattern","MappingPattern","PatternArgList","carriageReturn","tab","parenOpen","braceOpen","braceClose","singleQuote","doubleQuote","letter_o","letter_x","letter_N","letter_u","letter_U","isLineBreak","newlines","cx_Bracketed","indentation","cx_String","cx_DoubleQuote","cx_Long","cx_Raw","cx_Format","topIndent","countIndent","stringFlags","trackIndent","legacyPrint","strings","quote","long","escapes","skipEscape","pythonHighlighting","_node","isFrom","globals","globalCompletion","innerBody","lineIndent","indentBody","pythonLanguage","body","python","MissingCloseTag","mismatchedStartCloseTag","incompleteStartCloseTag","piContent$1","cdataContent$1","isSpace","_stack","startTag","scanTo","piContent","cdataContent","xmlHighlighting","elementName$1","findLocation","inTag","attrValues","attrCompletion","valueCompletion","completeFromSchema","eltSpecs","attrSpecs","allAttrs","globalAttrs","allElements","topElements","attrVals","loc","parentName","closing","xmlLanguage","subtree","xml","blockEnd","DirectiveEnd","DocEnd","sequenceStartMark","sequenceContinueMark","explicitMapStartMark","explicitMapContinueMark","flowMapMark","mapStartMark","mapContinueMark","Literal","QuotedLiteral","Anchor","Alias","BlockLiteralContent","FlowSequence","Colon","FlowMapping","BlockLiteralHeader","type_Top","type_Seq","type_Map","type_Flow","type_Lit","findColumn","isBreakSpace","isNonBreakSpace","isSep","three","blockMark","readTag","readAnchor","readQuoted","scanBrackets","readPlain","uriChar","hexChar","readUriChar","charTag","lineBreak","charTable","isSafe","inFlow","literals","blockLiteral","isBreak","yamlHighlighting","yamlLanguage","parser$1","yaml","closureParamDelim","tpOpen","tpClose","RawString","Float","_f","_r","_E","Zero","Dot","Plus","Minus","Hash","Quote","Pipe","LessThan","GreaterThan","isNum","isNum_","literalTokens","isFloat","isQuote","closureParam","tpDelim","rustHighlighting","rustLanguage","rust","templateArgsEndFallback","MacroName","R","L","u","U","z","Z","Underscore","ParenR","Space","rawString","marker","sawLetter","cppHighlighting","spec_","spec_templateArgsEnd","spec_scopedIdentifier","cppLanguage","cpp","javaHighlighting","javaLanguage","java","castOpen","HeredocString","interpolatedStringContent","EscapeSequence","afterInterpolation","automaticSemicolon","abstract","and","as","Boolean","_break","_case","_catch","clone","_const","_continue","_default","declare","_do","echo","_else","elseif","enddeclare","endfor","endforeach","endif","endswitch","endwhile","_enum","_extends","final","_finally","fn","_for","foreach","_function","global","_if","_implements","include","include_once","_instanceof","insteadof","_interface","_new","_null","or","print","readonly","_require","require_once","_return","_switch","_throw","trait","_try","unset","use","_var","Visibility","_while","xor","_yield","keywordMap","isASCIILetter","isIdentifierStart","castTypes","expression","peek","eofToken","scanEscape","interpolated","phpHighlighting","spec_name","phpLanguage","php","htmlSupport","whitespace","Number","Null","BraceR","BracketR","Semi","Operator","SpecialVar","QuotedIdentifier","Keyword","Bits","Bytes","Builtin","isHexDigit","readLiteral","endQuote","backslashEscapes","readDoubleDollarLiteral","readPLSQLQuotedLiteral","openDelim","matchingDelim","closeDelim","readWord","readWordOrQuoted","readBits","readNumber","sawDot","inString","builtin","kw","tp","SQLTypes","SQLKeywords","defaults","kws","tokensFor","quoteStyle","tokenBefore","idName","plainID","pathFor","parentsFor","sourceContext","aliases","getAliases","EndFrom","statement","sawFrom","prevID","alias","maybeQuoteCompletions","openingQuote","closingQuote","Span","QuotedSpan","isSelfTag","CompletionLevel","idQuote","idCaseInsensitive","nameCompletion","parts","getClosingQuote","tables","schemas","defaultTableName","defaultSchemaName","defaultSchema","parents","quoteAfter","completionType","tokenType","completeKeywords","upperCase","build","SQLDialect","language","defaultKeyword","keywordCompletionSource","schemaCompletionSource","StandardSQL","schemaCompletion","sql","spec_Keyword","wastLanguage","wast","extensionMap","mimeMap","getLanguageExtension","ext","factory","modshift","bits","shiftKey","ctrlKey","altKey","metaKey","isTextFile","isImmutableStringFileDoc","LSP_LANGUAGES","js","mjs","cjs","ts","mts","cts","tsx","lspLanguage","slice","TextFileEditor","languageExtension","tsCompartment","Compartment","lineNumbers","highlightSpecialChars","highlightActiveLineGutter","highlightActiveLine","history","foldGutter","bracketMatching","of","allowMultipleSelections","tabSize","lineWrapping","scrollPastEnd","clickAddsSelectionRange","rectangularSelection","eventFilter","indentWithTab","emacsStyleKeymap","historyKeymap","foldKeymap","defaultKeymap","attach","languageId","disposed","replace","uri","documentId","then","typescriptLanguageServer","reconfigure","plugin","catch","console","MIN_FONT_SIZE","zoomMask","some","navigator","platform","zoom","preventDefault","stopPropagation","fontSize","parseFloat","getComputedStyle","Math","requestMeasure","_$use","el","appendChild","$$keydown","_$delegateEvents","ReadOnlyTextViewer","fileText","editable","follow","on","FileEditor","latest","_$createComponent","Show","when","Switch","firstChild","_el$3","nextSibling","_el$4","_el$5","_el$6","_el$7","Match","isImageFile","isReadOnly","isTextBytesFileDoc","FileTool","dispose","render"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,15,16,17,18,19,21,25,26,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]}
|