@tlockney/cdp-kernel 0.5.0 → 0.7.0
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/README.md +27 -6
- package/dist/browser/channels.d.ts +27 -0
- package/dist/browser/channels.js +90 -0
- package/dist/browser/kernel.js +29674 -0
- package/dist/browser/kernel.js.map +7 -0
- package/dist/browser/mod.d.ts +20 -0
- package/dist/browser/mod.js +38 -0
- package/dist/browser/target.d.ts +71 -0
- package/dist/browser/target.js +206 -0
- package/dist/browser/worker.js +1000 -0
- package/dist/browser/worker.js.map +7 -0
- package/dist/cdp.d.ts +11 -0
- package/dist/cdp.js +6 -1
- package/dist/celld-target.js +9 -12
- package/dist/children.d.ts +25 -3
- package/dist/children.js +84 -2
- package/dist/debugger.d.ts +2 -0
- package/dist/debugger.js +12 -6
- package/dist/deno-types.d.ts +30 -0
- package/dist/deno-types.js +93 -0
- package/dist/kernel-core.d.ts +69 -0
- package/dist/kernel-core.js +754 -0
- package/dist/kernel.d.ts +12 -1
- package/dist/kernel.js +132 -605
- package/dist/language-service-worker.d.ts +1 -0
- package/dist/language-service-worker.js +88 -0
- package/dist/language-service.d.ts +64 -0
- package/dist/language-service.js +128 -0
- package/dist/main.js +102 -8
- package/dist/message.d.ts +34 -0
- package/dist/message.js +14 -0
- package/dist/mod.d.ts +1 -0
- package/dist/mod.js +1 -0
- package/dist/notebook-types.d.ts +62 -0
- package/dist/notebook-types.js +310 -0
- package/dist/package.d.ts +2 -2
- package/dist/package.js +2 -2
- package/dist/parent.d.ts +12 -0
- package/dist/parent.js +39 -0
- package/dist/port-holder.d.ts +13 -0
- package/dist/port-holder.js +105 -0
- package/dist/sourcemap.d.ts +7 -2
- package/dist/sourcemap.js +9 -3
- package/dist/strip-esbuild.d.ts +2 -0
- package/dist/strip-esbuild.js +44 -0
- package/dist/strip-sucrase.d.ts +2 -0
- package/dist/strip-sucrase.js +78 -0
- package/dist/target-api.d.ts +80 -0
- package/dist/target-api.js +22 -0
- package/dist/target.d.ts +26 -74
- package/dist/target.js +232 -58
- package/dist/traceback.d.ts +75 -0
- package/dist/traceback.js +200 -0
- package/dist/transform.d.ts +22 -1
- package/dist/transform.js +46 -43
- package/dist/wire.d.ts +4 -24
- package/dist/wire.js +3 -12
- package/dist/workerd-target.js +1 -1
- package/dist/workers-project.js +13 -2
- package/dist/zmq-channels.d.ts +14 -0
- package/dist/zmq-channels.js +59 -0
- package/dist/zmtp.d.ts +2 -0
- package/dist/zmtp.js +12 -0
- package/package.json +15 -5
- package/runtime/bootstrap.mjs +113 -33
- package/runtime/browser-worker.mjs +119 -0
- package/runtime/cdn.d.mts +2 -0
- package/runtime/cdn.mjs +17 -0
- package/runtime/display.mjs +202 -1
- package/runtime/format.d.mts +2 -0
- package/runtime/format.mjs +125 -0
- package/runtime/introspect.mjs +1 -1
- package/runtime/node-hooks.d.mts +6 -0
- package/runtime/node-hooks.mjs +11 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../node_modules/acorn/dist/acorn.mjs", "../../node_modules/acorn-walk/dist/walk.mjs", "../../src/sourcemap.ts", "../../node_modules/sucrase/dist/esm/parser/tokenizer/keywords.js", "../../node_modules/sucrase/dist/esm/parser/tokenizer/types.js", "../../node_modules/sucrase/dist/esm/parser/tokenizer/state.js", "../../node_modules/sucrase/dist/esm/parser/util/charcodes.js", "../../node_modules/sucrase/dist/esm/parser/traverser/base.js", "../../node_modules/sucrase/dist/esm/parser/traverser/util.js", "../../node_modules/sucrase/dist/esm/parser/util/whitespace.js", "../../node_modules/sucrase/dist/esm/parser/util/identifier.js", "../../node_modules/sucrase/dist/esm/parser/tokenizer/readWordTree.js", "../../node_modules/sucrase/dist/esm/parser/tokenizer/readWord.js", "../../node_modules/sucrase/dist/esm/parser/tokenizer/index.js", "../../node_modules/sucrase/dist/esm/util/getImportExportSpecifierInfo.js", "../../node_modules/sucrase/dist/esm/parser/plugins/jsx/xhtml.js", "../../node_modules/sucrase/dist/esm/util/getJSXPragmaInfo.js", "../../node_modules/sucrase/dist/esm/transformers/Transformer.js", "../../node_modules/sucrase/dist/esm/transformers/JSXTransformer.js", "../../node_modules/sucrase/dist/esm/util/getNonTypeIdentifiers.js", "../../node_modules/sucrase/dist/esm/CJSImportProcessor.js", "../../node_modules/@jridgewell/sourcemap-codec/src/vlq.ts", "../../node_modules/@jridgewell/sourcemap-codec/src/strings.ts", "../../node_modules/@jridgewell/sourcemap-codec/src/scopes.ts", "../../node_modules/@jridgewell/sourcemap-codec/src/range-mappings.ts", "../../node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts", "../../node_modules/@jridgewell/resolve-uri/src/resolve-uri.ts", "../../node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/src/trace-mapping.ts", "../../node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/src/resolve.ts", "../../node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/src/strip-filename.ts", "../../node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/src/sourcemap-segment.ts", "../../node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/src/sort.ts", "../../node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/src/by-source.ts", "../../node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/src/binary-search.ts", "../../node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/src/types.ts", "../../node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping/src/flatten-map.ts", "../../node_modules/@jridgewell/gen-mapping/src/set-array.ts", "../../node_modules/@jridgewell/gen-mapping/src/gen-mapping.ts", "../../node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts", "../../node_modules/sucrase/dist/esm/computeSourceMap.js", "../../node_modules/sucrase/dist/esm/HelperManager.js", "../../node_modules/sucrase/dist/esm/identifyShadowedGlobals.js", "../../node_modules/sucrase/dist/esm/util/getIdentifierNames.js", "../../node_modules/sucrase/dist/esm/NameManager.js", "../../node_modules/ts-interface-checker/dist/util.js", "../../node_modules/ts-interface-checker/dist/types.js", "../../node_modules/ts-interface-checker/dist/index.js", "../../node_modules/sucrase/dist/esm/Options-gen-types.js", "../../node_modules/sucrase/dist/esm/Options.js", "../../node_modules/sucrase/dist/esm/parser/traverser/lval.js", "../../node_modules/sucrase/dist/esm/parser/plugins/typescript.js", "../../node_modules/sucrase/dist/esm/parser/plugins/jsx/index.js", "../../node_modules/sucrase/dist/esm/parser/plugins/types.js", "../../node_modules/sucrase/dist/esm/parser/traverser/expression.js", "../../node_modules/sucrase/dist/esm/parser/plugins/flow.js", "../../node_modules/sucrase/dist/esm/parser/traverser/statement.js", "../../node_modules/sucrase/dist/esm/parser/traverser/index.js", "../../node_modules/sucrase/dist/esm/parser/index.js", "../../node_modules/sucrase/dist/esm/util/isAsyncOperation.js", "../../node_modules/sucrase/dist/esm/TokenProcessor.js", "../../node_modules/sucrase/dist/esm/util/getClassInfo.js", "../../node_modules/sucrase/dist/esm/util/elideImportEquals.js", "../../node_modules/sucrase/dist/esm/util/getDeclarationInfo.js", "../../node_modules/sucrase/dist/esm/util/isExportFrom.js", "../../node_modules/sucrase/dist/esm/util/removeMaybeImportAttributes.js", "../../node_modules/sucrase/dist/esm/util/shouldElideDefaultExport.js", "../../node_modules/sucrase/dist/esm/transformers/CJSImportTransformer.js", "../../node_modules/sucrase/dist/esm/transformers/ESMImportTransformer.js", "../../node_modules/sucrase/dist/esm/transformers/FlowTransformer.js", "../../node_modules/sucrase/dist/esm/transformers/JestHoistTransformer.js", "../../node_modules/sucrase/dist/esm/transformers/NumericSeparatorTransformer.js", "../../node_modules/sucrase/dist/esm/transformers/OptionalCatchBindingTransformer.js", "../../node_modules/sucrase/dist/esm/transformers/OptionalChainingNullishTransformer.js", "../../node_modules/sucrase/dist/esm/transformers/ReactDisplayNameTransformer.js", "../../node_modules/sucrase/dist/esm/transformers/ReactHotLoaderTransformer.js", "../../node_modules/sucrase/dist/esm/util/isIdentifier.js", "../../node_modules/sucrase/dist/esm/transformers/TypeScriptTransformer.js", "../../node_modules/sucrase/dist/esm/transformers/RootTransformer.js", "../../node_modules/lines-and-columns/build/index.js", "../../node_modules/sucrase/dist/esm/util/formatTokens.js", "../../node_modules/sucrase/dist/esm/util/getTSImportedNames.js", "../../node_modules/sucrase/dist/esm/index.js", "../../src/strip-sucrase.ts", "stub:esbuild", "../../src/strip-esbuild.ts", "../../src/transform.ts", "../../src/message.ts", "../../src/target-api.ts", "../../src/kernel-core.ts", "../../src/text.ts", "../../src/history.ts", "../../src/murmur2.ts", "../../src/traceback.ts", "stub:package", "../../src/browser/channels.ts", "../../src/cdp.ts", "../../src/browser/target.ts", "../../src/browser/mod.ts"],
|
|
4
|
+
"sourcesContent": ["// This file was generated. Do not modify manually!\nvar astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];\n\n// This file was generated. Do not modify manually!\nvar astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierChars = \"\\u200c\\u200d\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1ace\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\n// This file was generated. Do not modify manually!\nvar nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088e\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n\n// These are a run-length and offset encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range.\n\n// Reserved word lists for various dialects of the language\n\nvar reservedWords = {\n 3: \"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile\",\n 5: \"class enum extends super const export import\",\n 6: \"enum\",\n strict: \"implements interface let package private protected public static yield\",\n strictBind: \"eval arguments\"\n};\n\n// And the keywords\n\nvar ecma5AndLessKeywords = \"break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this\";\n\nvar keywords$1 = {\n 5: ecma5AndLessKeywords,\n \"5module\": ecma5AndLessKeywords + \" export import\",\n 6: ecma5AndLessKeywords + \" const class extends export import super\"\n};\n\nvar keywordRelationalOperator = /^in(stanceof)?$/;\n\n// ## Character categories\n\nvar nonASCIIidentifierStart = new RegExp(\"[\" + nonASCIIidentifierStartChars + \"]\");\nvar nonASCIIidentifier = new RegExp(\"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\");\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code, set) {\n var pos = 0x10000;\n for (var i = 0; i < set.length; i += 2) {\n pos += set[i];\n if (pos > code) { return false }\n pos += set[i + 1];\n if (pos >= code) { return true }\n }\n return false\n}\n\n// Test whether a given character code starts an identifier.\n\nfunction isIdentifierStart(code, astral) {\n if (code < 65) { return code === 36 }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes)\n}\n\n// Test whether a given character is part of an identifier.\n\nfunction isIdentifierChar(code, astral) {\n if (code < 48) { return code === 36 }\n if (code < 58) { return true }\n if (code < 65) { return false }\n if (code < 91) { return true }\n if (code < 97) { return code === 95 }\n if (code < 123) { return true }\n if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) }\n if (astral === false) { return false }\n return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)\n}\n\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between regular\n// expressions and divisions. It is set on all token types that can\n// be followed by an expression (thus, a slash after them would be a\n// regular expression).\n//\n// The `startsExpr` property is used to check if the token ends a\n// `yield` expression. It is set on all token types that either can\n// directly start an expression (like a quotation mark) or can\n// continue an expression (like the body of a string).\n//\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nvar TokenType = function TokenType(label, conf) {\n if ( conf === void 0 ) conf = {};\n\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop || null;\n this.updateContext = null;\n};\n\nfunction binop(name, prec) {\n return new TokenType(name, {beforeExpr: true, binop: prec})\n}\nvar beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true};\n\n// Map keyword names to token types.\n\nvar keywords = {};\n\n// Succinct definitions of keyword token types\nfunction kw(name, options) {\n if ( options === void 0 ) options = {};\n\n options.keyword = name;\n return keywords[name] = new TokenType(name, options)\n}\n\nvar types$1 = {\n num: new TokenType(\"num\", startsExpr),\n regexp: new TokenType(\"regexp\", startsExpr),\n string: new TokenType(\"string\", startsExpr),\n name: new TokenType(\"name\", startsExpr),\n privateId: new TokenType(\"privateId\", startsExpr),\n eof: new TokenType(\"eof\"),\n\n // Punctuation token types.\n bracketL: new TokenType(\"[\", {beforeExpr: true, startsExpr: true}),\n bracketR: new TokenType(\"]\"),\n braceL: new TokenType(\"{\", {beforeExpr: true, startsExpr: true}),\n braceR: new TokenType(\"}\"),\n parenL: new TokenType(\"(\", {beforeExpr: true, startsExpr: true}),\n parenR: new TokenType(\")\"),\n comma: new TokenType(\",\", beforeExpr),\n semi: new TokenType(\";\", beforeExpr),\n colon: new TokenType(\":\", beforeExpr),\n dot: new TokenType(\".\"),\n question: new TokenType(\"?\", beforeExpr),\n questionDot: new TokenType(\"?.\"),\n arrow: new TokenType(\"=>\", beforeExpr),\n template: new TokenType(\"template\"),\n invalidTemplate: new TokenType(\"invalidTemplate\"),\n ellipsis: new TokenType(\"...\", beforeExpr),\n backQuote: new TokenType(\"`\", startsExpr),\n dollarBraceL: new TokenType(\"${\", {beforeExpr: true, startsExpr: true}),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n eq: new TokenType(\"=\", {beforeExpr: true, isAssign: true}),\n assign: new TokenType(\"_=\", {beforeExpr: true, isAssign: true}),\n incDec: new TokenType(\"++/--\", {prefix: true, postfix: true, startsExpr: true}),\n prefix: new TokenType(\"!/~\", {beforeExpr: true, prefix: true, startsExpr: true}),\n logicalOR: binop(\"||\", 1),\n logicalAND: binop(\"&&\", 2),\n bitwiseOR: binop(\"|\", 3),\n bitwiseXOR: binop(\"^\", 4),\n bitwiseAND: binop(\"&\", 5),\n equality: binop(\"==/!=/===/!==\", 6),\n relational: binop(\"</>/<=/>=\", 7),\n bitShift: binop(\"<</>>/>>>\", 8),\n plusMin: new TokenType(\"+/-\", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),\n modulo: binop(\"%\", 10),\n star: binop(\"*\", 10),\n slash: binop(\"/\", 10),\n starstar: new TokenType(\"**\", {beforeExpr: true}),\n coalesce: binop(\"??\", 1),\n\n // Keyword token types.\n _break: kw(\"break\"),\n _case: kw(\"case\", beforeExpr),\n _catch: kw(\"catch\"),\n _continue: kw(\"continue\"),\n _debugger: kw(\"debugger\"),\n _default: kw(\"default\", beforeExpr),\n _do: kw(\"do\", {isLoop: true, beforeExpr: true}),\n _else: kw(\"else\", beforeExpr),\n _finally: kw(\"finally\"),\n _for: kw(\"for\", {isLoop: true}),\n _function: kw(\"function\", startsExpr),\n _if: kw(\"if\"),\n _return: kw(\"return\", beforeExpr),\n _switch: kw(\"switch\"),\n _throw: kw(\"throw\", beforeExpr),\n _try: kw(\"try\"),\n _var: kw(\"var\"),\n _const: kw(\"const\"),\n _while: kw(\"while\", {isLoop: true}),\n _with: kw(\"with\"),\n _new: kw(\"new\", {beforeExpr: true, startsExpr: true}),\n _this: kw(\"this\", startsExpr),\n _super: kw(\"super\", startsExpr),\n _class: kw(\"class\", startsExpr),\n _extends: kw(\"extends\", beforeExpr),\n _export: kw(\"export\"),\n _import: kw(\"import\", startsExpr),\n _null: kw(\"null\", startsExpr),\n _true: kw(\"true\", startsExpr),\n _false: kw(\"false\", startsExpr),\n _in: kw(\"in\", {beforeExpr: true, binop: 7}),\n _instanceof: kw(\"instanceof\", {beforeExpr: true, binop: 7}),\n _typeof: kw(\"typeof\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _void: kw(\"void\", {beforeExpr: true, prefix: true, startsExpr: true}),\n _delete: kw(\"delete\", {beforeExpr: true, prefix: true, startsExpr: true})\n};\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\n\nvar lineBreak = /\\r\\n?|\\n|\\u2028|\\u2029/;\nvar lineBreakG = new RegExp(lineBreak.source, \"g\");\n\nfunction isNewLine(code) {\n return code === 10 || code === 13 || code === 0x2028 || code === 0x2029\n}\n\nfunction nextLineBreak(code, from, end) {\n if ( end === void 0 ) end = code.length;\n\n for (var i = from; i < end; i++) {\n var next = code.charCodeAt(i);\n if (isNewLine(next))\n { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 }\n }\n return -1\n}\n\nvar nonASCIIwhitespace = /[\\u1680\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]/;\n\nvar skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nvar ref = Object.prototype;\nvar hasOwnProperty = ref.hasOwnProperty;\nvar toString = ref.toString;\n\nvar hasOwn = Object.hasOwn || (function (obj, propName) { return (\n hasOwnProperty.call(obj, propName)\n); });\n\nvar isArray = Array.isArray || (function (obj) { return (\n toString.call(obj) === \"[object Array]\"\n); });\n\nvar regexpCache = Object.create(null);\n\nfunction wordsRegexp(words) {\n return regexpCache[words] || (regexpCache[words] = new RegExp(\"^(?:\" + words.replace(/ /g, \"|\") + \")$\"))\n}\n\nfunction codePointToString(code) {\n // UTF-16 Decoding\n if (code <= 0xFFFF) { return String.fromCharCode(code) }\n code -= 0x10000;\n return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)\n}\n\nvar loneSurrogate = /(?:[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/;\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nvar Position = function Position(line, col) {\n this.line = line;\n this.column = col;\n};\n\nPosition.prototype.offset = function offset (n) {\n return new Position(this.line, this.column + n)\n};\n\nvar SourceLocation = function SourceLocation(p, start, end) {\n this.start = start;\n this.end = end;\n if (p.sourceFile !== null) { this.source = p.sourceFile; }\n};\n\n// The `getLineInfo` function is mostly useful when the\n// `locations` option is off (for performance reasons) and you\n// want to find the line/column position for a given character\n// offset. `input` should be the code string that the offset refers\n// into.\n\nfunction getLineInfo(input, offset) {\n for (var line = 1, cur = 0;;) {\n var nextBreak = nextLineBreak(input, cur, offset);\n if (nextBreak < 0) { return new Position(line, offset - cur) }\n ++line;\n cur = nextBreak;\n }\n}\n\n// A second argument must be given to configure the parser process.\n// These options are recognized (only `ecmaVersion` is required):\n\nvar defaultOptions = {\n // `ecmaVersion` indicates the ECMAScript version to parse. Must be\n // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10\n // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `\"latest\"`\n // (the latest version the library supports). This influences\n // support for strict mode, the set of reserved words, and support\n // for new syntax features.\n ecmaVersion: null,\n // `sourceType` indicates the mode the code should be parsed in.\n // Can be either `\"script\"` or `\"module\"`. This influences global\n // strict mode and parsing of `import` and `export` declarations.\n sourceType: \"script\",\n // `onInsertedSemicolon` can be a callback that will be called when\n // a semicolon is automatically inserted. It will be passed the\n // position of the inserted semicolon as an offset, and if\n // `locations` is enabled, it is given the location as a `{line,\n // column}` object as second argument.\n onInsertedSemicolon: null,\n // `onTrailingComma` is similar to `onInsertedSemicolon`, but for\n // trailing commas.\n onTrailingComma: null,\n // By default, reserved words are only enforced if ecmaVersion >= 5.\n // Set `allowReserved` to a boolean value to explicitly turn this on\n // an off. When this option has the value \"never\", reserved words\n // and keywords can also not be used as property names.\n allowReserved: null,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program, and an import.meta expression\n // in a script isn't considered an error.\n allowImportExportEverywhere: false,\n // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022.\n // When enabled, await identifiers are allowed to appear at the top-level scope,\n // but they are still not allowed in non-async functions.\n allowAwaitOutsideFunction: null,\n // When enabled, super identifiers are not constrained to\n // appearing in methods and do not raise an error when they appear elsewhere.\n allowSuperOutsideMethod: null,\n // When enabled, hashbang directive in the beginning of file is\n // allowed and treated as a line comment. Enabled by default when\n // `ecmaVersion` >= 2023.\n allowHashBang: false,\n // By default, the parser will verify that private properties are\n // only used in places where they are valid and have been declared.\n // Set this to false to turn such checks off.\n checkPrivateFields: true,\n // When `locations` is on, `loc` properties holding objects with\n // `start` and `end` properties in `{line, column}` form (with\n // line being 1-based and column 0-based) will be attached to the\n // nodes.\n locations: false,\n // A function can be passed as `onToken` option, which will\n // cause Acorn to call that function with object in the same\n // format as tokens returned from `tokenizer().getToken()`. Note\n // that you are not allowed to call the parser from the\n // callback\u2014that will corrupt its internal state.\n onToken: null,\n // A function can be passed as `onComment` option, which will\n // cause Acorn to call that function with `(block, text, start,\n // end)` parameters whenever a comment is skipped. `block` is a\n // boolean indicating whether this is a block (`/* */`) comment,\n // `text` is the content of the comment, and `start` and `end` are\n // character offsets that denote the start and end of the comment.\n // When the `locations` option is on, two more parameters are\n // passed, the full `{line, column}` locations of the start and\n // end of the comments. Note that you are not allowed to call the\n // parser from the callback\u2014that will corrupt its internal state.\n // When this option has an array as value, objects representing the\n // comments are pushed to it.\n onComment: null,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // It is possible to parse multiple files into a single AST by\n // passing the tree produced by parsing the first file as\n // `program` option in subsequent parses. This will add the\n // toplevel forms of the parsed file to the `Program` (top) node\n // of an existing parse tree.\n program: null,\n // When `locations` is on, you can pass this to record the source\n // file in every node's `loc` object.\n sourceFile: null,\n // This value, if given, is stored in every node, whether\n // `locations` is on or off.\n directSourceFile: null,\n // When enabled, parenthesized expressions are represented by\n // (non-standard) ParenthesizedExpression nodes\n preserveParens: false\n};\n\n// Interpret and default an options object\n\nvar warnedAboutEcmaVersion = false;\n\nfunction getOptions(opts) {\n var options = {};\n\n for (var opt in defaultOptions)\n { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; }\n\n if (options.ecmaVersion === \"latest\") {\n options.ecmaVersion = 1e8;\n } else if (options.ecmaVersion == null) {\n if (!warnedAboutEcmaVersion && typeof console === \"object\" && console.warn) {\n warnedAboutEcmaVersion = true;\n console.warn(\"Since Acorn 8.0.0, options.ecmaVersion is required.\\nDefaulting to 2020, but this will stop working in the future.\");\n }\n options.ecmaVersion = 11;\n } else if (options.ecmaVersion >= 2015) {\n options.ecmaVersion -= 2009;\n }\n\n if (options.allowReserved == null)\n { options.allowReserved = options.ecmaVersion < 5; }\n\n if (!opts || opts.allowHashBang == null)\n { options.allowHashBang = options.ecmaVersion >= 14; }\n\n if (isArray(options.onToken)) {\n var tokens = options.onToken;\n options.onToken = function (token) { return tokens.push(token); };\n }\n if (isArray(options.onComment))\n { options.onComment = pushComment(options, options.onComment); }\n\n return options\n}\n\nfunction pushComment(options, array) {\n return function(block, text, start, end, startLoc, endLoc) {\n var comment = {\n type: block ? \"Block\" : \"Line\",\n value: text,\n start: start,\n end: end\n };\n if (options.locations)\n { comment.loc = new SourceLocation(this, startLoc, endLoc); }\n if (options.ranges)\n { comment.range = [start, end]; }\n array.push(comment);\n }\n}\n\n// Each scope gets a bitset that may contain these flags\nvar\n SCOPE_TOP = 1,\n SCOPE_FUNCTION = 2,\n SCOPE_ASYNC = 4,\n SCOPE_GENERATOR = 8,\n SCOPE_ARROW = 16,\n SCOPE_SIMPLE_CATCH = 32,\n SCOPE_SUPER = 64,\n SCOPE_DIRECT_SUPER = 128,\n SCOPE_CLASS_STATIC_BLOCK = 256,\n SCOPE_CLASS_FIELD_INIT = 512,\n SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK;\n\nfunction functionFlags(async, generator) {\n return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0)\n}\n\n// Used in checkLVal* and declareName to determine the type of a binding\nvar\n BIND_NONE = 0, // Not a binding\n BIND_VAR = 1, // Var-style binding\n BIND_LEXICAL = 2, // Let- or const-style binding\n BIND_FUNCTION = 3, // Function declaration\n BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding\n BIND_OUTSIDE = 5; // Special case for function names as bound inside the function\n\nvar Parser = function Parser(options, input, startPos) {\n this.options = options = getOptions(options);\n this.sourceFile = options.sourceFile;\n this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === \"module\" ? \"5module\" : 5]);\n var reserved = \"\";\n if (options.allowReserved !== true) {\n reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3];\n if (options.sourceType === \"module\") { reserved += \" await\"; }\n }\n this.reservedWords = wordsRegexp(reserved);\n var reservedStrict = (reserved ? reserved + \" \" : \"\") + reservedWords.strict;\n this.reservedWordsStrict = wordsRegexp(reservedStrict);\n this.reservedWordsStrictBind = wordsRegexp(reservedStrict + \" \" + reservedWords.strictBind);\n this.input = String(input);\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n this.containsEsc = false;\n\n // Set up token state\n\n // The current position of the tokenizer in the input.\n if (startPos) {\n this.pos = startPos;\n this.lineStart = this.input.lastIndexOf(\"\\n\", startPos - 1) + 1;\n this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length;\n } else {\n this.pos = this.lineStart = 0;\n this.curLine = 1;\n }\n\n // Properties of the current token:\n // Its type\n this.type = types$1.eof;\n // For tokens that include more information than their type, the value\n this.value = null;\n // Its start and end offset\n this.start = this.end = this.pos;\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n this.startLoc = this.endLoc = this.curPosition();\n\n // Position information for the previous token\n this.lastTokEndLoc = this.lastTokStartLoc = null;\n this.lastTokStart = this.lastTokEnd = this.pos;\n\n // The context stack is used to superficially track syntactic\n // context to predict whether a regular expression is allowed in a\n // given position.\n this.context = this.initialContext();\n this.exprAllowed = true;\n\n // Figure out if it's a module code.\n this.inModule = options.sourceType === \"module\";\n this.strict = this.inModule || this.strictDirective(this.pos);\n\n // Used to signify the start of a potential arrow function\n this.potentialArrowAt = -1;\n this.potentialArrowInForAwait = false;\n\n // Positions to delayed-check that yield/await does not exist in default parameters.\n this.yieldPos = this.awaitPos = this.awaitIdentPos = 0;\n // Labels in scope.\n this.labels = [];\n // Thus-far undefined exports.\n this.undefinedExports = Object.create(null);\n\n // If enabled, skip leading hashbang line.\n if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === \"#!\")\n { this.skipLineComment(2); }\n\n // Scope tracking for duplicate variable names (see scope.js)\n this.scopeStack = [];\n this.enterScope(SCOPE_TOP);\n\n // For RegExp validation\n this.regexpState = null;\n\n // The stack of private names.\n // Each element has two properties: 'declared' and 'used'.\n // When it exited from the outermost class definition, all used private names must be declared.\n this.privateNameStack = [];\n};\n\nvar prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } };\n\nParser.prototype.parse = function parse () {\n var node = this.options.program || this.startNode();\n this.nextToken();\n return this.parseTopLevel(node)\n};\n\nprototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 };\n\nprototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 };\n\nprototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 };\n\nprototypeAccessors.canAwait.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT)) { return false }\n if (flags & SCOPE_FUNCTION) { return (flags & SCOPE_ASYNC) > 0 }\n }\n return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction\n};\n\nprototypeAccessors.allowSuper.get = function () {\n var ref = this.currentThisScope();\n var flags = ref.flags;\n return (flags & SCOPE_SUPER) > 0 || this.options.allowSuperOutsideMethod\n};\n\nprototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 };\n\nprototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) };\n\nprototypeAccessors.allowNewDotTarget.get = function () {\n for (var i = this.scopeStack.length - 1; i >= 0; i--) {\n var ref = this.scopeStack[i];\n var flags = ref.flags;\n if (flags & (SCOPE_CLASS_STATIC_BLOCK | SCOPE_CLASS_FIELD_INIT) ||\n ((flags & SCOPE_FUNCTION) && !(flags & SCOPE_ARROW))) { return true }\n }\n return false\n};\n\nprototypeAccessors.inClassStaticBlock.get = function () {\n return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0\n};\n\nParser.extend = function extend () {\n var plugins = [], len = arguments.length;\n while ( len-- ) plugins[ len ] = arguments[ len ];\n\n var cls = this;\n for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); }\n return cls\n};\n\nParser.parse = function parse (input, options) {\n return new this(options, input).parse()\n};\n\nParser.parseExpressionAt = function parseExpressionAt (input, pos, options) {\n var parser = new this(options, input, pos);\n parser.nextToken();\n return parser.parseExpression()\n};\n\nParser.tokenizer = function tokenizer (input, options) {\n return new this(options, input)\n};\n\nObject.defineProperties( Parser.prototype, prototypeAccessors );\n\nvar pp$9 = Parser.prototype;\n\n// ## Parser utilities\n\nvar literal = /^(?:'((?:\\\\[^]|[^'\\\\])*?)'|\"((?:\\\\[^]|[^\"\\\\])*?)\")/;\npp$9.strictDirective = function(start) {\n if (this.options.ecmaVersion < 5) { return false }\n for (;;) {\n // Try to find string literal.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n var match = literal.exec(this.input.slice(start));\n if (!match) { return false }\n if ((match[1] || match[2]) === \"use strict\") {\n skipWhiteSpace.lastIndex = start + match[0].length;\n var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length;\n var next = this.input.charAt(end);\n return next === \";\" || next === \"}\" ||\n (lineBreak.test(spaceAfter[0]) &&\n !(/[(`.[+\\-/*%<>=,?^&]/.test(next) || next === \"!\" && this.input.charAt(end + 1) === \"=\"))\n }\n start += match[0].length;\n\n // Skip semicolon, if any.\n skipWhiteSpace.lastIndex = start;\n start += skipWhiteSpace.exec(this.input)[0].length;\n if (this.input[start] === \";\")\n { start++; }\n }\n};\n\n// Predicate that tests whether the next token is of the given\n// type, and if yes, consumes it as a side effect.\n\npp$9.eat = function(type) {\n if (this.type === type) {\n this.next();\n return true\n } else {\n return false\n }\n};\n\n// Tests whether parsed token is a contextual keyword.\n\npp$9.isContextual = function(name) {\n return this.type === types$1.name && this.value === name && !this.containsEsc\n};\n\n// Consumes contextual keyword if possible.\n\npp$9.eatContextual = function(name) {\n if (!this.isContextual(name)) { return false }\n this.next();\n return true\n};\n\n// Asserts that following token is given contextual keyword.\n\npp$9.expectContextual = function(name) {\n if (!this.eatContextual(name)) { this.unexpected(); }\n};\n\n// Test whether a semicolon can be inserted at the current position.\n\npp$9.canInsertSemicolon = function() {\n return this.type === types$1.eof ||\n this.type === types$1.braceR ||\n lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\npp$9.insertSemicolon = function() {\n if (this.canInsertSemicolon()) {\n if (this.options.onInsertedSemicolon)\n { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); }\n return true\n }\n};\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\n\npp$9.semicolon = function() {\n if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); }\n};\n\npp$9.afterTrailingComma = function(tokType, notNext) {\n if (this.type === tokType) {\n if (this.options.onTrailingComma)\n { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); }\n if (!notNext)\n { this.next(); }\n return true\n }\n};\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error.\n\npp$9.expect = function(type) {\n this.eat(type) || this.unexpected();\n};\n\n// Raise an unexpected token error.\n\npp$9.unexpected = function(pos) {\n this.raise(pos != null ? pos : this.start, \"Unexpected token\");\n};\n\nvar DestructuringErrors = function DestructuringErrors() {\n this.shorthandAssign =\n this.trailingComma =\n this.parenthesizedAssign =\n this.parenthesizedBind =\n this.doubleProto =\n -1;\n};\n\npp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) {\n if (!refDestructuringErrors) { return }\n if (refDestructuringErrors.trailingComma > -1)\n { this.raiseRecoverable(refDestructuringErrors.trailingComma, \"Comma is not permitted after the rest element\"); }\n var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind;\n if (parens > -1) { this.raiseRecoverable(parens, isAssign ? \"Assigning to rvalue\" : \"Parenthesized pattern\"); }\n};\n\npp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) {\n if (!refDestructuringErrors) { return false }\n var shorthandAssign = refDestructuringErrors.shorthandAssign;\n var doubleProto = refDestructuringErrors.doubleProto;\n if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 }\n if (shorthandAssign >= 0)\n { this.raise(shorthandAssign, \"Shorthand property assignments are valid only in destructuring patterns\"); }\n if (doubleProto >= 0)\n { this.raiseRecoverable(doubleProto, \"Redefinition of __proto__ property\"); }\n};\n\npp$9.checkYieldAwaitInDefaultParams = function() {\n if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))\n { this.raise(this.yieldPos, \"Yield expression cannot be a default value\"); }\n if (this.awaitPos)\n { this.raise(this.awaitPos, \"Await expression cannot be a default value\"); }\n};\n\npp$9.isSimpleAssignTarget = function(expr) {\n if (expr.type === \"ParenthesizedExpression\")\n { return this.isSimpleAssignTarget(expr.expression) }\n return expr.type === \"Identifier\" || expr.type === \"MemberExpression\"\n};\n\nvar pp$8 = Parser.prototype;\n\n// ### Statement parsing\n\n// Parse a program. Initializes the parser, reads any number of\n// statements, and wraps them in a Program node. Optionally takes a\n// `program` argument. If present, the statements will be appended\n// to its body instead of creating a new node.\n\npp$8.parseTopLevel = function(node) {\n var exports = Object.create(null);\n if (!node.body) { node.body = []; }\n while (this.type !== types$1.eof) {\n var stmt = this.parseStatement(null, true, exports);\n node.body.push(stmt);\n }\n if (this.inModule)\n { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1)\n {\n var name = list[i];\n\n this.raiseRecoverable(this.undefinedExports[name].start, (\"Export '\" + name + \"' is not defined\"));\n } }\n this.adaptDirectivePrologue(node.body);\n this.next();\n node.sourceType = this.options.sourceType;\n return this.finishNode(node, \"Program\")\n};\n\nvar loopLabel = {kind: \"loop\"}, switchLabel = {kind: \"switch\"};\n\npp$8.isLet = function(context) {\n if (this.options.ecmaVersion < 6 || !this.isContextual(\"let\")) { return false }\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n // For ambiguous cases, determine if a LexicalDeclaration (or only a\n // Statement) is allowed here. If context is not empty then only a Statement\n // is allowed. However, `let [` is an explicit negative lookahead for\n // ExpressionStatement, so special-case it first.\n if (nextCh === 91 || nextCh === 92) { return true } // '[', '\\'\n if (context) { return false }\n\n if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral\n if (isIdentifierStart(nextCh, true)) {\n var pos = next + 1;\n while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; }\n if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true }\n var ident = this.input.slice(next, pos);\n if (!keywordRelationalOperator.test(ident)) { return true }\n }\n return false\n};\n\n// check 'async [no LineTerminator here] function'\n// - 'async /*foo*/ function' is OK.\n// - 'async /*\\n*/ function' is invalid.\npp$8.isAsyncFunction = function() {\n if (this.options.ecmaVersion < 8 || !this.isContextual(\"async\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, after;\n return !lineBreak.test(this.input.slice(this.pos, next)) &&\n this.input.slice(next, next + 8) === \"function\" &&\n (next + 8 === this.input.length ||\n !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00))\n};\n\npp$8.isUsingKeyword = function(isAwaitUsing, isFor) {\n if (this.options.ecmaVersion < 17 || !this.isContextual(isAwaitUsing ? \"await\" : \"using\"))\n { return false }\n\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length;\n\n if (lineBreak.test(this.input.slice(this.pos, next))) { return false }\n\n if (isAwaitUsing) {\n var awaitEndPos = next + 5 /* await */, after;\n if (this.input.slice(next, awaitEndPos) !== \"using\" ||\n awaitEndPos === this.input.length ||\n isIdentifierChar(after = this.input.charCodeAt(awaitEndPos)) ||\n (after > 0xd7ff && after < 0xdc00)\n ) { return false }\n\n skipWhiteSpace.lastIndex = awaitEndPos;\n var skipAfterUsing = skipWhiteSpace.exec(this.input);\n if (skipAfterUsing && lineBreak.test(this.input.slice(awaitEndPos, awaitEndPos + skipAfterUsing[0].length))) { return false }\n }\n\n if (isFor) {\n var ofEndPos = next + 2 /* of */, after$1;\n if (this.input.slice(next, ofEndPos) === \"of\") {\n if (ofEndPos === this.input.length ||\n (!isIdentifierChar(after$1 = this.input.charCodeAt(ofEndPos)) && !(after$1 > 0xd7ff && after$1 < 0xdc00))) { return false }\n }\n }\n\n var ch = this.input.charCodeAt(next);\n return isIdentifierStart(ch, true) || ch === 92 // '\\'\n};\n\npp$8.isAwaitUsing = function(isFor) {\n return this.isUsingKeyword(true, isFor)\n};\n\npp$8.isUsing = function(isFor) {\n return this.isUsingKeyword(false, isFor)\n};\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\npp$8.parseStatement = function(context, topLevel, exports) {\n var starttype = this.type, node = this.startNode(), kind;\n\n if (this.isLet(context)) {\n starttype = types$1._var;\n kind = \"let\";\n }\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword)\n case types$1._debugger: return this.parseDebuggerStatement(node)\n case types$1._do: return this.parseDoStatement(node)\n case types$1._for: return this.parseForStatement(node)\n case types$1._function:\n // Function as sole body of either an if statement or a labeled statement\n // works, but not when it is part of a labeled statement that is the sole\n // body of an if statement.\n if ((context && (this.strict || context !== \"if\" && context !== \"label\")) && this.options.ecmaVersion >= 6) { this.unexpected(); }\n return this.parseFunctionStatement(node, false, !context)\n case types$1._class:\n if (context) { this.unexpected(); }\n return this.parseClass(node, true)\n case types$1._if: return this.parseIfStatement(node)\n case types$1._return: return this.parseReturnStatement(node)\n case types$1._switch: return this.parseSwitchStatement(node)\n case types$1._throw: return this.parseThrowStatement(node)\n case types$1._try: return this.parseTryStatement(node)\n case types$1._const: case types$1._var:\n kind = kind || this.value;\n if (context && kind !== \"var\") { this.unexpected(); }\n return this.parseVarStatement(node, kind)\n case types$1._while: return this.parseWhileStatement(node)\n case types$1._with: return this.parseWithStatement(node)\n case types$1.braceL: return this.parseBlock(true, node)\n case types$1.semi: return this.parseEmptyStatement(node)\n case types$1._export:\n case types$1._import:\n if (this.options.ecmaVersion > 10 && starttype === types$1._import) {\n skipWhiteSpace.lastIndex = this.pos;\n var skip = skipWhiteSpace.exec(this.input);\n var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next);\n if (nextCh === 40 || nextCh === 46) // '(' or '.'\n { return this.parseExpressionStatement(node, this.parseExpression()) }\n }\n\n if (!this.options.allowImportExportEverywhere) {\n if (!topLevel)\n { this.raise(this.start, \"'import' and 'export' may only appear at the top level\"); }\n if (!this.inModule)\n { this.raise(this.start, \"'import' and 'export' may appear only with 'sourceType: module'\"); }\n }\n return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports)\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n default:\n if (this.isAsyncFunction()) {\n if (context) { this.unexpected(); }\n this.next();\n return this.parseFunctionStatement(node, true, !context)\n }\n\n var usingKind = this.isAwaitUsing(false) ? \"await using\" : this.isUsing(false) ? \"using\" : null;\n if (usingKind) {\n if (topLevel && this.options.sourceType === \"script\") {\n this.raise(this.start, \"Using declaration cannot appear in the top level when source type is `script`\");\n }\n if (usingKind === \"await using\") {\n if (!this.canAwait) {\n this.raise(this.start, \"Await using cannot appear outside of async function\");\n }\n this.next();\n }\n this.next();\n this.parseVar(node, false, usingKind);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n }\n\n var maybeName = this.value, expr = this.parseExpression();\n if (starttype === types$1.name && expr.type === \"Identifier\" && this.eat(types$1.colon))\n { return this.parseLabeledStatement(node, maybeName, expr, context) }\n else { return this.parseExpressionStatement(node, expr) }\n }\n};\n\npp$8.parseBreakContinueStatement = function(node, keyword) {\n var isBreak = keyword === \"break\";\n this.next();\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; }\n else if (this.type !== types$1.name) { this.unexpected(); }\n else {\n node.label = this.parseIdent();\n this.semicolon();\n }\n\n // Verify that there is an actual destination to break or\n // continue to.\n var i = 0;\n for (; i < this.labels.length; ++i) {\n var lab = this.labels[i];\n if (node.label == null || lab.name === node.label.name) {\n if (lab.kind != null && (isBreak || lab.kind === \"loop\")) { break }\n if (node.label && isBreak) { break }\n }\n }\n if (i === this.labels.length) { this.raise(node.start, \"Unsyntactic \" + keyword); }\n return this.finishNode(node, isBreak ? \"BreakStatement\" : \"ContinueStatement\")\n};\n\npp$8.parseDebuggerStatement = function(node) {\n this.next();\n this.semicolon();\n return this.finishNode(node, \"DebuggerStatement\")\n};\n\npp$8.parseDoStatement = function(node) {\n this.next();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"do\");\n this.labels.pop();\n this.expect(types$1._while);\n node.test = this.parseParenExpression();\n if (this.options.ecmaVersion >= 6)\n { this.eat(types$1.semi); }\n else\n { this.semicolon(); }\n return this.finishNode(node, \"DoWhileStatement\")\n};\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\n\npp$8.parseForStatement = function(node) {\n this.next();\n var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual(\"await\")) ? this.lastTokStart : -1;\n this.labels.push(loopLabel);\n this.enterScope(0);\n this.expect(types$1.parenL);\n if (this.type === types$1.semi) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, null)\n }\n var isLet = this.isLet();\n if (this.type === types$1._var || this.type === types$1._const || isLet) {\n var init$1 = this.startNode(), kind = isLet ? \"let\" : this.value;\n this.next();\n this.parseVar(init$1, true, kind);\n this.finishNode(init$1, \"VariableDeclaration\");\n return this.parseForAfterInit(node, init$1, awaitAt)\n }\n var startsWithLet = this.isContextual(\"let\"), isForOf = false;\n\n var usingKind = this.isUsing(true) ? \"using\" : this.isAwaitUsing(true) ? \"await using\" : null;\n if (usingKind) {\n var init$2 = this.startNode();\n this.next();\n if (usingKind === \"await using\") { this.next(); }\n this.parseVar(init$2, true, usingKind);\n this.finishNode(init$2, \"VariableDeclaration\");\n return this.parseForAfterInit(node, init$2, awaitAt)\n }\n var containsEsc = this.containsEsc;\n var refDestructuringErrors = new DestructuringErrors;\n var initPos = this.start;\n var init = awaitAt > -1\n ? this.parseExprSubscripts(refDestructuringErrors, \"await\")\n : this.parseExpression(true, refDestructuringErrors);\n if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) {\n if (awaitAt > -1) { // implies `ecmaVersion >= 9` (see declaration of awaitAt)\n if (this.type === types$1._in) { this.unexpected(awaitAt); }\n node.await = true;\n } else if (isForOf && this.options.ecmaVersion >= 8) {\n if (init.start === initPos && !containsEsc && init.type === \"Identifier\" && init.name === \"async\") { this.unexpected(); }\n else if (this.options.ecmaVersion >= 9) { node.await = false; }\n }\n if (startsWithLet && isForOf) { this.raise(init.start, \"The left-hand side of a for-of loop may not start with 'let'.\"); }\n this.toAssignable(init, false, refDestructuringErrors);\n this.checkLValPattern(init);\n return this.parseForIn(node, init)\n } else {\n this.checkExpressionErrors(refDestructuringErrors, true);\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\n// Helper method to parse for loop after variable initialization\npp$8.parseForAfterInit = function(node, init, awaitAt) {\n if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\"))) && init.declarations.length === 1) {\n if (this.options.ecmaVersion >= 9) {\n if (this.type === types$1._in) {\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n } else { node.await = awaitAt > -1; }\n }\n return this.parseForIn(node, init)\n }\n if (awaitAt > -1) { this.unexpected(awaitAt); }\n return this.parseFor(node, init)\n};\n\npp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) {\n this.next();\n return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync)\n};\n\npp$8.parseIfStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n // allow function declarations in branches, but only in non-strict mode\n node.consequent = this.parseStatement(\"if\");\n node.alternate = this.eat(types$1._else) ? this.parseStatement(\"if\") : null;\n return this.finishNode(node, \"IfStatement\")\n};\n\npp$8.parseReturnStatement = function(node) {\n if (!this.inFunction && !this.options.allowReturnOutsideFunction)\n { this.raise(this.start, \"'return' outside of function\"); }\n this.next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; }\n else { node.argument = this.parseExpression(); this.semicolon(); }\n return this.finishNode(node, \"ReturnStatement\")\n};\n\npp$8.parseSwitchStatement = function(node) {\n this.next();\n node.discriminant = this.parseParenExpression();\n node.cases = [];\n this.expect(types$1.braceL);\n this.labels.push(switchLabel);\n this.enterScope(0);\n\n // Statements under must be grouped (by label) in SwitchCase\n // nodes. `cur` is used to keep the node that we are currently\n // adding statements to.\n\n var cur;\n for (var sawDefault = false; this.type !== types$1.braceR;) {\n if (this.type === types$1._case || this.type === types$1._default) {\n var isCase = this.type === types$1._case;\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n node.cases.push(cur = this.startNode());\n cur.consequent = [];\n this.next();\n if (isCase) {\n cur.test = this.parseExpression();\n } else {\n if (sawDefault) { this.raiseRecoverable(this.lastTokStart, \"Multiple default clauses\"); }\n sawDefault = true;\n cur.test = null;\n }\n this.expect(types$1.colon);\n } else {\n if (!cur) { this.unexpected(); }\n cur.consequent.push(this.parseStatement(null));\n }\n }\n this.exitScope();\n if (cur) { this.finishNode(cur, \"SwitchCase\"); }\n this.next(); // Closing brace\n this.labels.pop();\n return this.finishNode(node, \"SwitchStatement\")\n};\n\npp$8.parseThrowStatement = function(node) {\n this.next();\n if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))\n { this.raise(this.lastTokEnd, \"Illegal newline after throw\"); }\n node.argument = this.parseExpression();\n this.semicolon();\n return this.finishNode(node, \"ThrowStatement\")\n};\n\n// Reused empty array added for node fields that are always empty.\n\nvar empty$1 = [];\n\npp$8.parseCatchClauseParam = function() {\n var param = this.parseBindingAtom();\n var simple = param.type === \"Identifier\";\n this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0);\n this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL);\n this.expect(types$1.parenR);\n\n return param\n};\n\npp$8.parseTryStatement = function(node) {\n this.next();\n node.block = this.parseBlock();\n node.handler = null;\n if (this.type === types$1._catch) {\n var clause = this.startNode();\n this.next();\n if (this.eat(types$1.parenL)) {\n clause.param = this.parseCatchClauseParam();\n } else {\n if (this.options.ecmaVersion < 10) { this.unexpected(); }\n clause.param = null;\n this.enterScope(0);\n }\n clause.body = this.parseBlock(false);\n this.exitScope();\n node.handler = this.finishNode(clause, \"CatchClause\");\n }\n node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null;\n if (!node.handler && !node.finalizer)\n { this.raise(node.start, \"Missing catch or finally clause\"); }\n return this.finishNode(node, \"TryStatement\")\n};\n\npp$8.parseVarStatement = function(node, kind, allowMissingInitializer) {\n this.next();\n this.parseVar(node, false, kind, allowMissingInitializer);\n this.semicolon();\n return this.finishNode(node, \"VariableDeclaration\")\n};\n\npp$8.parseWhileStatement = function(node) {\n this.next();\n node.test = this.parseParenExpression();\n this.labels.push(loopLabel);\n node.body = this.parseStatement(\"while\");\n this.labels.pop();\n return this.finishNode(node, \"WhileStatement\")\n};\n\npp$8.parseWithStatement = function(node) {\n if (this.strict) { this.raise(this.start, \"'with' in strict mode\"); }\n this.next();\n node.object = this.parseParenExpression();\n node.body = this.parseStatement(\"with\");\n return this.finishNode(node, \"WithStatement\")\n};\n\npp$8.parseEmptyStatement = function(node) {\n this.next();\n return this.finishNode(node, \"EmptyStatement\")\n};\n\npp$8.parseLabeledStatement = function(node, maybeName, expr, context) {\n for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1)\n {\n var label = list[i$1];\n\n if (label.name === maybeName)\n { this.raise(expr.start, \"Label '\" + maybeName + \"' is already declared\");\n } }\n var kind = this.type.isLoop ? \"loop\" : this.type === types$1._switch ? \"switch\" : null;\n for (var i = this.labels.length - 1; i >= 0; i--) {\n var label$1 = this.labels[i];\n if (label$1.statementStart === node.start) {\n // Update information about previous labels on this node\n label$1.statementStart = this.start;\n label$1.kind = kind;\n } else { break }\n }\n this.labels.push({name: maybeName, kind: kind, statementStart: this.start});\n node.body = this.parseStatement(context ? context.indexOf(\"label\") === -1 ? context + \"label\" : context : \"label\");\n this.labels.pop();\n node.label = expr;\n return this.finishNode(node, \"LabeledStatement\")\n};\n\npp$8.parseExpressionStatement = function(node, expr) {\n node.expression = expr;\n this.semicolon();\n return this.finishNode(node, \"ExpressionStatement\")\n};\n\n// Parse a semicolon-enclosed block of statements, handling `\"use\n// strict\"` declarations when `allowStrict` is true (used for\n// function bodies).\n\npp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) {\n if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;\n if ( node === void 0 ) node = this.startNode();\n\n node.body = [];\n this.expect(types$1.braceL);\n if (createNewLexicalScope) { this.enterScope(0); }\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n if (exitStrict) { this.strict = false; }\n this.next();\n if (createNewLexicalScope) { this.exitScope(); }\n return this.finishNode(node, \"BlockStatement\")\n};\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\npp$8.parseFor = function(node, init) {\n node.init = init;\n this.expect(types$1.semi);\n node.test = this.type === types$1.semi ? null : this.parseExpression();\n this.expect(types$1.semi);\n node.update = this.type === types$1.parenR ? null : this.parseExpression();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, \"ForStatement\")\n};\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\npp$8.parseForIn = function(node, init) {\n var isForIn = this.type === types$1._in;\n this.next();\n\n if (\n init.type === \"VariableDeclaration\" &&\n init.declarations[0].init != null &&\n (\n !isForIn ||\n this.options.ecmaVersion < 8 ||\n this.strict ||\n init.kind !== \"var\" ||\n init.declarations[0].id.type !== \"Identifier\"\n )\n ) {\n this.raise(\n init.start,\n ((isForIn ? \"for-in\" : \"for-of\") + \" loop variable declaration may not have an initializer\")\n );\n }\n node.left = init;\n node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign();\n this.expect(types$1.parenR);\n node.body = this.parseStatement(\"for\");\n this.exitScope();\n this.labels.pop();\n return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\")\n};\n\n// Parse a list of variable declarations.\n\npp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) {\n node.declarations = [];\n node.kind = kind;\n for (;;) {\n var decl = this.startNode();\n this.parseVarId(decl, kind);\n if (this.eat(types$1.eq)) {\n decl.init = this.parseMaybeAssign(isFor);\n } else if (!allowMissingInitializer && kind === \"const\" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual(\"of\")))) {\n this.unexpected();\n } else if (!allowMissingInitializer && (kind === \"using\" || kind === \"await using\") && this.options.ecmaVersion >= 17 && this.type !== types$1._in && !this.isContextual(\"of\")) {\n this.raise(this.lastTokEnd, (\"Missing initializer in \" + kind + \" declaration\"));\n } else if (!allowMissingInitializer && decl.id.type !== \"Identifier\" && !(isFor && (this.type === types$1._in || this.isContextual(\"of\")))) {\n this.raise(this.lastTokEnd, \"Complex binding patterns require an initialization value\");\n } else {\n decl.init = null;\n }\n node.declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n if (!this.eat(types$1.comma)) { break }\n }\n return node\n};\n\npp$8.parseVarId = function(decl, kind) {\n decl.id = kind === \"using\" || kind === \"await using\"\n ? this.parseIdent()\n : this.parseBindingAtom();\n\n this.checkLValPattern(decl.id, kind === \"var\" ? BIND_VAR : BIND_LEXICAL, false);\n};\n\nvar FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4;\n\n// Parse a function declaration or literal (depending on the\n// `statement & FUNC_STATEMENT`).\n\n// Remove `allowExpressionBody` for 7.0.0, as it is only called with false\npp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) {\n this.initFunction(node);\n if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) {\n if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT))\n { this.unexpected(); }\n node.generator = this.eat(types$1.star);\n }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n if (statement & FUNC_STATEMENT) {\n node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent();\n if (node.id && !(statement & FUNC_HANGING_STATEMENT))\n // If it is a regular function declaration in sloppy mode, then it is\n // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding\n // mode depends on properties of the current scope (see\n // treatFunctionsAsVar).\n { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); }\n }\n\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(node.async, node.generator));\n\n if (!(statement & FUNC_STATEMENT))\n { node.id = this.type === types$1.name ? this.parseIdent() : null; }\n\n this.parseFunctionParams(node);\n this.parseFunctionBody(node, allowExpressionBody, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, (statement & FUNC_STATEMENT) ? \"FunctionDeclaration\" : \"FunctionExpression\")\n};\n\npp$8.parseFunctionParams = function(node) {\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n};\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\npp$8.parseClass = function(node, isStatement) {\n this.next();\n\n // ecma-262 14.6 Class Definitions\n // A class definition is always strict mode code.\n var oldStrict = this.strict;\n this.strict = true;\n\n this.parseClassId(node, isStatement);\n this.parseClassSuper(node);\n var privateNameMap = this.enterClassBody();\n var classBody = this.startNode();\n var hadConstructor = false;\n classBody.body = [];\n this.expect(types$1.braceL);\n while (this.type !== types$1.braceR) {\n var element = this.parseClassElement(node.superClass !== null);\n if (element) {\n classBody.body.push(element);\n if (element.type === \"MethodDefinition\" && element.kind === \"constructor\") {\n if (hadConstructor) { this.raiseRecoverable(element.start, \"Duplicate constructor in the same class\"); }\n hadConstructor = true;\n } else if (element.key && element.key.type === \"PrivateIdentifier\" && isPrivateNameConflicted(privateNameMap, element)) {\n this.raiseRecoverable(element.key.start, (\"Identifier '#\" + (element.key.name) + \"' has already been declared\"));\n }\n }\n }\n this.strict = oldStrict;\n this.next();\n node.body = this.finishNode(classBody, \"ClassBody\");\n this.exitClassBody();\n return this.finishNode(node, isStatement ? \"ClassDeclaration\" : \"ClassExpression\")\n};\n\npp$8.parseClassElement = function(constructorAllowsSuper) {\n if (this.eat(types$1.semi)) { return null }\n\n var ecmaVersion = this.options.ecmaVersion;\n var node = this.startNode();\n var keyName = \"\";\n var isGenerator = false;\n var isAsync = false;\n var kind = \"method\";\n var isStatic = false;\n\n if (this.eatContextual(\"static\")) {\n // Parse static init block\n if (ecmaVersion >= 13 && this.eat(types$1.braceL)) {\n this.parseClassStaticBlock(node);\n return node\n }\n if (this.isClassElementNameStart() || this.type === types$1.star) {\n isStatic = true;\n } else {\n keyName = \"static\";\n }\n }\n node.static = isStatic;\n if (!keyName && ecmaVersion >= 8 && this.eatContextual(\"async\")) {\n if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) {\n isAsync = true;\n } else {\n keyName = \"async\";\n }\n }\n if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) {\n isGenerator = true;\n }\n if (!keyName && !isAsync && !isGenerator) {\n var lastValue = this.value;\n if (this.eatContextual(\"get\") || this.eatContextual(\"set\")) {\n if (this.isClassElementNameStart()) {\n kind = lastValue;\n } else {\n keyName = lastValue;\n }\n }\n }\n\n // Parse element name\n if (keyName) {\n // 'async', 'get', 'set', or 'static' were not a keyword contextually.\n // The last token is any of those. Make it the element name.\n node.computed = false;\n node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc);\n node.key.name = keyName;\n this.finishNode(node.key, \"Identifier\");\n } else {\n this.parseClassElementName(node);\n }\n\n // Parse element value\n if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== \"method\" || isGenerator || isAsync) {\n var isConstructor = !node.static && checkKeyName(node, \"constructor\");\n var allowsDirectSuper = isConstructor && constructorAllowsSuper;\n // Couldn't move this check into the 'parseClassMethod' method for backward compatibility.\n if (isConstructor && kind !== \"method\") { this.raise(node.key.start, \"Constructor can't have get/set modifier\"); }\n node.kind = isConstructor ? \"constructor\" : kind;\n this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper);\n } else {\n this.parseClassField(node);\n }\n\n return node\n};\n\npp$8.isClassElementNameStart = function() {\n return (\n this.type === types$1.name ||\n this.type === types$1.privateId ||\n this.type === types$1.num ||\n this.type === types$1.string ||\n this.type === types$1.bracketL ||\n this.type.keyword\n )\n};\n\npp$8.parseClassElementName = function(element) {\n if (this.type === types$1.privateId) {\n if (this.value === \"constructor\") {\n this.raise(this.start, \"Classes can't have an element named '#constructor'\");\n }\n element.computed = false;\n element.key = this.parsePrivateIdent();\n } else {\n this.parsePropertyName(element);\n }\n};\n\npp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) {\n // Check key and flags\n var key = method.key;\n if (method.kind === \"constructor\") {\n if (isGenerator) { this.raise(key.start, \"Constructor can't be a generator\"); }\n if (isAsync) { this.raise(key.start, \"Constructor can't be an async method\"); }\n } else if (method.static && checkKeyName(method, \"prototype\")) {\n this.raise(key.start, \"Classes may not have a static property named prototype\");\n }\n\n // Parse value\n var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper);\n\n // Check value\n if (method.kind === \"get\" && value.params.length !== 0)\n { this.raiseRecoverable(value.start, \"getter should have no params\"); }\n if (method.kind === \"set\" && value.params.length !== 1)\n { this.raiseRecoverable(value.start, \"setter should have exactly one param\"); }\n if (method.kind === \"set\" && value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(value.params[0].start, \"Setter cannot use rest params\"); }\n\n return this.finishNode(method, \"MethodDefinition\")\n};\n\npp$8.parseClassField = function(field) {\n if (checkKeyName(field, \"constructor\")) {\n this.raise(field.key.start, \"Classes can't have a field named 'constructor'\");\n } else if (field.static && checkKeyName(field, \"prototype\")) {\n this.raise(field.key.start, \"Classes can't have a static field named 'prototype'\");\n }\n\n if (this.eat(types$1.eq)) {\n // To raise SyntaxError if 'arguments' exists in the initializer.\n this.enterScope(SCOPE_CLASS_FIELD_INIT | SCOPE_SUPER);\n field.value = this.parseMaybeAssign();\n this.exitScope();\n } else {\n field.value = null;\n }\n this.semicolon();\n\n return this.finishNode(field, \"PropertyDefinition\")\n};\n\npp$8.parseClassStaticBlock = function(node) {\n node.body = [];\n\n var oldLabels = this.labels;\n this.labels = [];\n this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER);\n while (this.type !== types$1.braceR) {\n var stmt = this.parseStatement(null);\n node.body.push(stmt);\n }\n this.next();\n this.exitScope();\n this.labels = oldLabels;\n\n return this.finishNode(node, \"StaticBlock\")\n};\n\npp$8.parseClassId = function(node, isStatement) {\n if (this.type === types$1.name) {\n node.id = this.parseIdent();\n if (isStatement)\n { this.checkLValSimple(node.id, BIND_LEXICAL, false); }\n } else {\n if (isStatement === true)\n { this.unexpected(); }\n node.id = null;\n }\n};\n\npp$8.parseClassSuper = function(node) {\n node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null;\n};\n\npp$8.enterClassBody = function() {\n var element = {declared: Object.create(null), used: []};\n this.privateNameStack.push(element);\n return element.declared\n};\n\npp$8.exitClassBody = function() {\n var ref = this.privateNameStack.pop();\n var declared = ref.declared;\n var used = ref.used;\n if (!this.options.checkPrivateFields) { return }\n var len = this.privateNameStack.length;\n var parent = len === 0 ? null : this.privateNameStack[len - 1];\n for (var i = 0; i < used.length; ++i) {\n var id = used[i];\n if (!hasOwn(declared, id.name)) {\n if (parent) {\n parent.used.push(id);\n } else {\n this.raiseRecoverable(id.start, (\"Private field '#\" + (id.name) + \"' must be declared in an enclosing class\"));\n }\n }\n }\n};\n\nfunction isPrivateNameConflicted(privateNameMap, element) {\n var name = element.key.name;\n var curr = privateNameMap[name];\n\n var next = \"true\";\n if (element.type === \"MethodDefinition\" && (element.kind === \"get\" || element.kind === \"set\")) {\n next = (element.static ? \"s\" : \"i\") + element.kind;\n }\n\n // `class { get #a(){}; static set #a(_){} }` is also conflict.\n if (\n curr === \"iget\" && next === \"iset\" ||\n curr === \"iset\" && next === \"iget\" ||\n curr === \"sget\" && next === \"sset\" ||\n curr === \"sset\" && next === \"sget\"\n ) {\n privateNameMap[name] = \"true\";\n return false\n } else if (!curr) {\n privateNameMap[name] = next;\n return false\n } else {\n return true\n }\n}\n\nfunction checkKeyName(node, name) {\n var computed = node.computed;\n var key = node.key;\n return !computed && (\n key.type === \"Identifier\" && key.name === name ||\n key.type === \"Literal\" && key.value === name\n )\n}\n\n// Parses module export declaration.\n\npp$8.parseExportAllDeclaration = function(node, exports) {\n if (this.options.ecmaVersion >= 11) {\n if (this.eatContextual(\"as\")) {\n node.exported = this.parseModuleExportName();\n this.checkExport(exports, node.exported, this.lastTokStart);\n } else {\n node.exported = null;\n }\n }\n this.expectContextual(\"from\");\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ExportAllDeclaration\")\n};\n\npp$8.parseExport = function(node, exports) {\n this.next();\n // export * from '...'\n if (this.eat(types$1.star)) {\n return this.parseExportAllDeclaration(node, exports)\n }\n if (this.eat(types$1._default)) { // export default ...\n this.checkExport(exports, \"default\", this.lastTokStart);\n node.declaration = this.parseExportDefaultDeclaration();\n return this.finishNode(node, \"ExportDefaultDeclaration\")\n }\n // export var|const|let|function|class ...\n if (this.shouldParseExportStatement()) {\n node.declaration = this.parseExportDeclaration(node);\n if (node.declaration.type === \"VariableDeclaration\")\n { this.checkVariableExport(exports, node.declaration.declarations); }\n else\n { this.checkExport(exports, node.declaration.id, node.declaration.id.start); }\n node.specifiers = [];\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n } else { // export { x, y as z } [from '...']\n node.declaration = null;\n node.specifiers = this.parseExportSpecifiers(exports);\n if (this.eatContextual(\"from\")) {\n if (this.type !== types$1.string) { this.unexpected(); }\n node.source = this.parseExprAtom();\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n } else {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1) {\n // check for keywords used as local names\n var spec = list[i];\n\n this.checkUnreserved(spec.local);\n // check if export is defined\n this.checkLocalExport(spec.local);\n\n if (spec.local.type === \"Literal\") {\n this.raise(spec.local.start, \"A string literal cannot be used as an exported binding without `from`.\");\n }\n }\n\n node.source = null;\n if (this.options.ecmaVersion >= 16)\n { node.attributes = []; }\n }\n this.semicolon();\n }\n return this.finishNode(node, \"ExportNamedDeclaration\")\n};\n\npp$8.parseExportDeclaration = function(node) {\n return this.parseStatement(null)\n};\n\npp$8.parseExportDefaultDeclaration = function() {\n var isAsync;\n if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) {\n var fNode = this.startNode();\n this.next();\n if (isAsync) { this.next(); }\n return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync)\n } else if (this.type === types$1._class) {\n var cNode = this.startNode();\n return this.parseClass(cNode, \"nullableID\")\n } else {\n var declaration = this.parseMaybeAssign();\n this.semicolon();\n return declaration\n }\n};\n\npp$8.checkExport = function(exports, name, pos) {\n if (!exports) { return }\n if (typeof name !== \"string\")\n { name = name.type === \"Identifier\" ? name.name : name.value; }\n if (hasOwn(exports, name))\n { this.raiseRecoverable(pos, \"Duplicate export '\" + name + \"'\"); }\n exports[name] = true;\n};\n\npp$8.checkPatternExport = function(exports, pat) {\n var type = pat.type;\n if (type === \"Identifier\")\n { this.checkExport(exports, pat, pat.start); }\n else if (type === \"ObjectPattern\")\n { for (var i = 0, list = pat.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n this.checkPatternExport(exports, prop);\n } }\n else if (type === \"ArrayPattern\")\n { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) {\n var elt = list$1[i$1];\n\n if (elt) { this.checkPatternExport(exports, elt); }\n } }\n else if (type === \"Property\")\n { this.checkPatternExport(exports, pat.value); }\n else if (type === \"AssignmentPattern\")\n { this.checkPatternExport(exports, pat.left); }\n else if (type === \"RestElement\")\n { this.checkPatternExport(exports, pat.argument); }\n};\n\npp$8.checkVariableExport = function(exports, decls) {\n if (!exports) { return }\n for (var i = 0, list = decls; i < list.length; i += 1)\n {\n var decl = list[i];\n\n this.checkPatternExport(exports, decl.id);\n }\n};\n\npp$8.shouldParseExportStatement = function() {\n return this.type.keyword === \"var\" ||\n this.type.keyword === \"const\" ||\n this.type.keyword === \"class\" ||\n this.type.keyword === \"function\" ||\n this.isLet() ||\n this.isAsyncFunction()\n};\n\n// Parses a comma-separated list of module exports.\n\npp$8.parseExportSpecifier = function(exports) {\n var node = this.startNode();\n node.local = this.parseModuleExportName();\n\n node.exported = this.eatContextual(\"as\") ? this.parseModuleExportName() : node.local;\n this.checkExport(\n exports,\n node.exported,\n node.exported.start\n );\n\n return this.finishNode(node, \"ExportSpecifier\")\n};\n\npp$8.parseExportSpecifiers = function(exports) {\n var nodes = [], first = true;\n // export { x, y as z } [from '...']\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseExportSpecifier(exports));\n }\n return nodes\n};\n\n// Parses import declaration.\n\npp$8.parseImport = function(node) {\n this.next();\n\n // import '...'\n if (this.type === types$1.string) {\n node.specifiers = empty$1;\n node.source = this.parseExprAtom();\n } else {\n node.specifiers = this.parseImportSpecifiers();\n this.expectContextual(\"from\");\n node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected();\n }\n if (this.options.ecmaVersion >= 16)\n { node.attributes = this.parseWithClause(); }\n this.semicolon();\n return this.finishNode(node, \"ImportDeclaration\")\n};\n\n// Parses a comma-separated list of module imports.\n\npp$8.parseImportSpecifier = function() {\n var node = this.startNode();\n node.imported = this.parseModuleExportName();\n\n if (this.eatContextual(\"as\")) {\n node.local = this.parseIdent();\n } else {\n this.checkUnreserved(node.imported);\n node.local = node.imported;\n }\n this.checkLValSimple(node.local, BIND_LEXICAL);\n\n return this.finishNode(node, \"ImportSpecifier\")\n};\n\npp$8.parseImportDefaultSpecifier = function() {\n // import defaultObj, { x, y as z } from '...'\n var node = this.startNode();\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportDefaultSpecifier\")\n};\n\npp$8.parseImportNamespaceSpecifier = function() {\n var node = this.startNode();\n this.next();\n this.expectContextual(\"as\");\n node.local = this.parseIdent();\n this.checkLValSimple(node.local, BIND_LEXICAL);\n return this.finishNode(node, \"ImportNamespaceSpecifier\")\n};\n\npp$8.parseImportSpecifiers = function() {\n var nodes = [], first = true;\n if (this.type === types$1.name) {\n nodes.push(this.parseImportDefaultSpecifier());\n if (!this.eat(types$1.comma)) { return nodes }\n }\n if (this.type === types$1.star) {\n nodes.push(this.parseImportNamespaceSpecifier());\n return nodes\n }\n this.expect(types$1.braceL);\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n nodes.push(this.parseImportSpecifier());\n }\n return nodes\n};\n\npp$8.parseWithClause = function() {\n var nodes = [];\n if (!this.eat(types$1._with)) {\n return nodes\n }\n this.expect(types$1.braceL);\n var attributeKeys = {};\n var first = true;\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var attr = this.parseImportAttribute();\n var keyName = attr.key.type === \"Identifier\" ? attr.key.name : attr.key.value;\n if (hasOwn(attributeKeys, keyName))\n { this.raiseRecoverable(attr.key.start, \"Duplicate attribute key '\" + keyName + \"'\"); }\n attributeKeys[keyName] = true;\n nodes.push(attr);\n }\n return nodes\n};\n\npp$8.parseImportAttribute = function() {\n var node = this.startNode();\n node.key = this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\");\n this.expect(types$1.colon);\n if (this.type !== types$1.string) {\n this.unexpected();\n }\n node.value = this.parseExprAtom();\n return this.finishNode(node, \"ImportAttribute\")\n};\n\npp$8.parseModuleExportName = function() {\n if (this.options.ecmaVersion >= 13 && this.type === types$1.string) {\n var stringLiteral = this.parseLiteral(this.value);\n if (loneSurrogate.test(stringLiteral.value)) {\n this.raise(stringLiteral.start, \"An export name cannot include a lone surrogate.\");\n }\n return stringLiteral\n }\n return this.parseIdent(true)\n};\n\n// Set `ExpressionStatement#directive` property for directive prologues.\npp$8.adaptDirectivePrologue = function(statements) {\n for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) {\n statements[i].directive = statements[i].expression.raw.slice(1, -1);\n }\n};\npp$8.isDirectiveCandidate = function(statement) {\n return (\n this.options.ecmaVersion >= 5 &&\n statement.type === \"ExpressionStatement\" &&\n statement.expression.type === \"Literal\" &&\n typeof statement.expression.value === \"string\" &&\n // Reject parenthesized strings.\n (this.input[statement.start] === \"\\\"\" || this.input[statement.start] === \"'\")\n )\n};\n\nvar pp$7 = Parser.prototype;\n\n// Convert existing expression atom to assignable pattern\n// if possible.\n\npp$7.toAssignable = function(node, isBinding, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 6 && node) {\n switch (node.type) {\n case \"Identifier\":\n if (this.inAsync && node.name === \"await\")\n { this.raise(node.start, \"Cannot use 'await' as identifier inside an async function\"); }\n break\n\n case \"ObjectPattern\":\n case \"ArrayPattern\":\n case \"AssignmentPattern\":\n case \"RestElement\":\n break\n\n case \"ObjectExpression\":\n node.type = \"ObjectPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.toAssignable(prop, isBinding);\n // Early error:\n // AssignmentRestProperty[Yield, Await] :\n // `...` DestructuringAssignmentTarget[Yield, Await]\n //\n // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|.\n if (\n prop.type === \"RestElement\" &&\n (prop.argument.type === \"ArrayPattern\" || prop.argument.type === \"ObjectPattern\")\n ) {\n this.raise(prop.argument.start, \"Unexpected token\");\n }\n }\n break\n\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n if (node.kind !== \"init\") { this.raise(node.key.start, \"Object pattern can't contain getter or setter\"); }\n this.toAssignable(node.value, isBinding);\n break\n\n case \"ArrayExpression\":\n node.type = \"ArrayPattern\";\n if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n this.toAssignableList(node.elements, isBinding);\n break\n\n case \"SpreadElement\":\n node.type = \"RestElement\";\n this.toAssignable(node.argument, isBinding);\n if (node.argument.type === \"AssignmentPattern\")\n { this.raise(node.argument.start, \"Rest elements cannot have a default value\"); }\n break\n\n case \"AssignmentExpression\":\n if (node.operator !== \"=\") { this.raise(node.left.end, \"Only '=' operator can be used for specifying default value.\"); }\n node.type = \"AssignmentPattern\";\n delete node.operator;\n this.toAssignable(node.left, isBinding);\n break\n\n case \"ParenthesizedExpression\":\n this.toAssignable(node.expression, isBinding, refDestructuringErrors);\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(node.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (!isBinding) { break }\n\n default:\n this.raise(node.start, \"Assigning to rvalue\");\n }\n } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); }\n return node\n};\n\n// Convert list of expression atoms to binding list.\n\npp$7.toAssignableList = function(exprList, isBinding) {\n var end = exprList.length;\n for (var i = 0; i < end; i++) {\n var elt = exprList[i];\n if (elt) { this.toAssignable(elt, isBinding); }\n }\n if (end) {\n var last = exprList[end - 1];\n if (this.options.ecmaVersion === 6 && isBinding && last && last.type === \"RestElement\" && last.argument.type !== \"Identifier\")\n { this.unexpected(last.argument.start); }\n }\n return exprList\n};\n\n// Parses spread element.\n\npp$7.parseSpread = function(refDestructuringErrors) {\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n return this.finishNode(node, \"SpreadElement\")\n};\n\npp$7.parseRestBinding = function() {\n var node = this.startNode();\n this.next();\n\n // RestElement inside of a function parameter must be an identifier\n if (this.options.ecmaVersion === 6 && this.type !== types$1.name)\n { this.unexpected(); }\n\n node.argument = this.parseBindingAtom();\n\n return this.finishNode(node, \"RestElement\")\n};\n\n// Parses lvalue (assignable) atom.\n\npp$7.parseBindingAtom = function() {\n if (this.options.ecmaVersion >= 6) {\n switch (this.type) {\n case types$1.bracketL:\n var node = this.startNode();\n this.next();\n node.elements = this.parseBindingList(types$1.bracketR, true, true);\n return this.finishNode(node, \"ArrayPattern\")\n\n case types$1.braceL:\n return this.parseObj(true)\n }\n }\n return this.parseIdent()\n};\n\npp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (first) { first = false; }\n else { this.expect(types$1.comma); }\n if (allowEmpty && this.type === types$1.comma) {\n elts.push(null);\n } else if (allowTrailingComma && this.afterTrailingComma(close)) {\n break\n } else if (this.type === types$1.ellipsis) {\n var rest = this.parseRestBinding();\n this.parseBindingListItem(rest);\n elts.push(rest);\n if (this.type === types$1.comma) { this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\"); }\n this.expect(close);\n break\n } else {\n elts.push(this.parseAssignableListItem(allowModifiers));\n }\n }\n return elts\n};\n\npp$7.parseAssignableListItem = function(allowModifiers) {\n var elem = this.parseMaybeDefault(this.start, this.startLoc);\n this.parseBindingListItem(elem);\n return elem\n};\n\npp$7.parseBindingListItem = function(param) {\n return param\n};\n\n// Parses assignment pattern around given atom if possible.\n\npp$7.parseMaybeDefault = function(startPos, startLoc, left) {\n left = left || this.parseBindingAtom();\n if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.right = this.parseMaybeAssign();\n return this.finishNode(node, \"AssignmentPattern\")\n};\n\n// The following three functions all verify that a node is an lvalue \u2014\n// something that can be bound, or assigned to. In order to do so, they perform\n// a variety of checks:\n//\n// - Check that none of the bound/assigned-to identifiers are reserved words.\n// - Record name declarations for bindings in the appropriate scope.\n// - Check duplicate argument names, if checkClashes is set.\n//\n// If a complex binding pattern is encountered (e.g., object and array\n// destructuring), the entire pattern is recursively checked.\n//\n// There are three versions of checkLVal*() appropriate for different\n// circumstances:\n//\n// - checkLValSimple() shall be used if the syntactic construct supports\n// nothing other than identifiers and member expressions. Parenthesized\n// expressions are also correctly handled. This is generally appropriate for\n// constructs for which the spec says\n//\n// > It is a Syntax Error if AssignmentTargetType of [the production] is not\n// > simple.\n//\n// It is also appropriate for checking if an identifier is valid and not\n// defined elsewhere, like import declarations or function/class identifiers.\n//\n// Examples where this is used include:\n// a += \u2026;\n// import a from '\u2026';\n// where a is the node to be checked.\n//\n// - checkLValPattern() shall be used if the syntactic construct supports\n// anything checkLValSimple() supports, as well as object and array\n// destructuring patterns. This is generally appropriate for constructs for\n// which the spec says\n//\n// > It is a Syntax Error if [the production] is neither an ObjectLiteral nor\n// > an ArrayLiteral and AssignmentTargetType of [the production] is not\n// > simple.\n//\n// Examples where this is used include:\n// (a = \u2026);\n// const a = \u2026;\n// try { \u2026 } catch (a) { \u2026 }\n// where a is the node to be checked.\n//\n// - checkLValInnerPattern() shall be used if the syntactic construct supports\n// anything checkLValPattern() supports, as well as default assignment\n// patterns, rest elements, and other constructs that may appear within an\n// object or array destructuring pattern.\n//\n// As a special case, function parameters also use checkLValInnerPattern(),\n// as they also support defaults and rest constructs.\n//\n// These functions deliberately support both assignment and binding constructs,\n// as the logic for both is exceedingly similar. If the node is the target of\n// an assignment, then bindingType should be set to BIND_NONE. Otherwise, it\n// should be set to the appropriate BIND_* constant, like BIND_VAR or\n// BIND_LEXICAL.\n//\n// If the function is called with a non-BIND_NONE bindingType, then\n// additionally a checkClashes object may be specified to allow checking for\n// duplicate argument names. checkClashes is ignored if the provided construct\n// is an assignment (i.e., bindingType is BIND_NONE).\n\npp$7.checkLValSimple = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n var isBind = bindingType !== BIND_NONE;\n\n switch (expr.type) {\n case \"Identifier\":\n if (this.strict && this.reservedWordsStrictBind.test(expr.name))\n { this.raiseRecoverable(expr.start, (isBind ? \"Binding \" : \"Assigning to \") + expr.name + \" in strict mode\"); }\n if (isBind) {\n if (bindingType === BIND_LEXICAL && expr.name === \"let\")\n { this.raiseRecoverable(expr.start, \"let is disallowed as a lexically bound name\"); }\n if (checkClashes) {\n if (hasOwn(checkClashes, expr.name))\n { this.raiseRecoverable(expr.start, \"Argument name clash\"); }\n checkClashes[expr.name] = true;\n }\n if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); }\n }\n break\n\n case \"ChainExpression\":\n this.raiseRecoverable(expr.start, \"Optional chaining cannot appear in left-hand side\");\n break\n\n case \"MemberExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding member expression\"); }\n break\n\n case \"ParenthesizedExpression\":\n if (isBind) { this.raiseRecoverable(expr.start, \"Binding parenthesized expression\"); }\n return this.checkLValSimple(expr.expression, bindingType, checkClashes)\n\n default:\n this.raise(expr.start, (isBind ? \"Binding\" : \"Assigning to\") + \" rvalue\");\n }\n};\n\npp$7.checkLValPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"ObjectPattern\":\n for (var i = 0, list = expr.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n this.checkLValInnerPattern(prop, bindingType, checkClashes);\n }\n break\n\n case \"ArrayPattern\":\n for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) {\n var elem = list$1[i$1];\n\n if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); }\n }\n break\n\n default:\n this.checkLValSimple(expr, bindingType, checkClashes);\n }\n};\n\npp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) {\n if ( bindingType === void 0 ) bindingType = BIND_NONE;\n\n switch (expr.type) {\n case \"Property\":\n // AssignmentProperty has type === \"Property\"\n this.checkLValInnerPattern(expr.value, bindingType, checkClashes);\n break\n\n case \"AssignmentPattern\":\n this.checkLValPattern(expr.left, bindingType, checkClashes);\n break\n\n case \"RestElement\":\n this.checkLValPattern(expr.argument, bindingType, checkClashes);\n break\n\n default:\n this.checkLValPattern(expr, bindingType, checkClashes);\n }\n};\n\n// The algorithm used to determine whether a regexp can appear at a\n// given point in the program is loosely based on sweet.js' approach.\n// See https://github.com/mozilla/sweet.js/wiki/design\n\n\nvar TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {\n this.token = token;\n this.isExpr = !!isExpr;\n this.preserveSpace = !!preserveSpace;\n this.override = override;\n this.generator = !!generator;\n};\n\nvar types = {\n b_stat: new TokContext(\"{\", false),\n b_expr: new TokContext(\"{\", true),\n b_tmpl: new TokContext(\"${\", false),\n p_stat: new TokContext(\"(\", false),\n p_expr: new TokContext(\"(\", true),\n q_tmpl: new TokContext(\"`\", true, true, function (p) { return p.tryReadTemplateToken(); }),\n f_stat: new TokContext(\"function\", false),\n f_expr: new TokContext(\"function\", true),\n f_expr_gen: new TokContext(\"function\", true, false, null, true),\n f_gen: new TokContext(\"function\", false, false, null, true)\n};\n\nvar pp$6 = Parser.prototype;\n\npp$6.initialContext = function() {\n return [types.b_stat]\n};\n\npp$6.curContext = function() {\n return this.context[this.context.length - 1]\n};\n\npp$6.braceIsBlock = function(prevType) {\n var parent = this.curContext();\n if (parent === types.f_expr || parent === types.f_stat)\n { return true }\n if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr))\n { return !parent.isExpr }\n\n // The check for `tt.name && exprAllowed` detects whether we are\n // after a `yield` or `of` construct. See the `updateContext` for\n // `tt.name`.\n if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed)\n { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) }\n if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow)\n { return true }\n if (prevType === types$1.braceL)\n { return parent === types.b_stat }\n if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name)\n { return false }\n return !this.exprAllowed\n};\n\npp$6.inGeneratorContext = function() {\n for (var i = this.context.length - 1; i >= 1; i--) {\n var context = this.context[i];\n if (context.token === \"function\")\n { return context.generator }\n }\n return false\n};\n\npp$6.updateContext = function(prevType) {\n var update, type = this.type;\n if (type.keyword && prevType === types$1.dot)\n { this.exprAllowed = false; }\n else if (update = type.updateContext)\n { update.call(this, prevType); }\n else\n { this.exprAllowed = type.beforeExpr; }\n};\n\n// Used to handle edge cases when token context could not be inferred correctly during tokenization phase\n\npp$6.overrideContext = function(tokenCtx) {\n if (this.curContext() !== tokenCtx) {\n this.context[this.context.length - 1] = tokenCtx;\n }\n};\n\n// Token-specific context update code\n\ntypes$1.parenR.updateContext = types$1.braceR.updateContext = function() {\n if (this.context.length === 1) {\n this.exprAllowed = true;\n return\n }\n var out = this.context.pop();\n if (out === types.b_stat && this.curContext().token === \"function\") {\n out = this.context.pop();\n }\n this.exprAllowed = !out.isExpr;\n};\n\ntypes$1.braceL.updateContext = function(prevType) {\n this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.dollarBraceL.updateContext = function() {\n this.context.push(types.b_tmpl);\n this.exprAllowed = true;\n};\n\ntypes$1.parenL.updateContext = function(prevType) {\n var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while;\n this.context.push(statementParens ? types.p_stat : types.p_expr);\n this.exprAllowed = true;\n};\n\ntypes$1.incDec.updateContext = function() {\n // tokExprAllowed stays unchanged\n};\n\ntypes$1._function.updateContext = types$1._class.updateContext = function(prevType) {\n if (prevType.beforeExpr && prevType !== types$1._else &&\n !(prevType === types$1.semi && this.curContext() !== types.p_stat) &&\n !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) &&\n !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat))\n { this.context.push(types.f_expr); }\n else\n { this.context.push(types.f_stat); }\n this.exprAllowed = false;\n};\n\ntypes$1.colon.updateContext = function() {\n if (this.curContext().token === \"function\") { this.context.pop(); }\n this.exprAllowed = true;\n};\n\ntypes$1.backQuote.updateContext = function() {\n if (this.curContext() === types.q_tmpl)\n { this.context.pop(); }\n else\n { this.context.push(types.q_tmpl); }\n this.exprAllowed = false;\n};\n\ntypes$1.star.updateContext = function(prevType) {\n if (prevType === types$1._function) {\n var index = this.context.length - 1;\n if (this.context[index] === types.f_expr)\n { this.context[index] = types.f_expr_gen; }\n else\n { this.context[index] = types.f_gen; }\n }\n this.exprAllowed = true;\n};\n\ntypes$1.name.updateContext = function(prevType) {\n var allowed = false;\n if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) {\n if (this.value === \"of\" && !this.exprAllowed ||\n this.value === \"yield\" && this.inGeneratorContext())\n { allowed = true; }\n }\n this.exprAllowed = allowed;\n};\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts \u2014 that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\n\nvar pp$5 = Parser.prototype;\n\n// Check if property name clashes with already added.\n// Object/class getters and setters are not allowed to clash \u2014\n// either with each other or with an init property \u2014 and in\n// strict mode, init properties are also not allowed to be repeated.\n\npp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) {\n if (this.options.ecmaVersion >= 9 && prop.type === \"SpreadElement\")\n { return }\n if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))\n { return }\n var key = prop.key;\n var name;\n switch (key.type) {\n case \"Identifier\": name = key.name; break\n case \"Literal\": name = String(key.value); break\n default: return\n }\n var kind = prop.kind;\n if (this.options.ecmaVersion >= 6) {\n if (name === \"__proto__\" && kind === \"init\") {\n if (propHash.proto) {\n if (refDestructuringErrors) {\n if (refDestructuringErrors.doubleProto < 0) {\n refDestructuringErrors.doubleProto = key.start;\n }\n } else {\n this.raiseRecoverable(key.start, \"Redefinition of __proto__ property\");\n }\n }\n propHash.proto = true;\n }\n return\n }\n name = \"$\" + name;\n var other = propHash[name];\n if (other) {\n var redefinition;\n if (kind === \"init\") {\n redefinition = this.strict && other.init || other.get || other.set;\n } else {\n redefinition = other.init || other[kind];\n }\n if (redefinition)\n { this.raiseRecoverable(key.start, \"Redefinition of property\"); }\n } else {\n other = propHash[name] = {\n init: false,\n get: false,\n set: false\n };\n }\n other[kind] = true;\n};\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function(s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\n\n// Parse a full expression. The optional arguments are used to\n// forbid the `in` operator (in for loops initalization expressions)\n// and provide reference for storing '=' operator inside shorthand\n// property assignment in contexts where both object expression\n// and object pattern might appear (so it's possible to raise\n// delayed syntax error at correct position).\n\npp$5.parseExpression = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeAssign(forInit, refDestructuringErrors);\n if (this.type === types$1.comma) {\n var node = this.startNodeAt(startPos, startLoc);\n node.expressions = [expr];\n while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); }\n return this.finishNode(node, \"SequenceExpression\")\n }\n return expr\n};\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n\npp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) {\n if (this.isContextual(\"yield\")) {\n if (this.inGenerator) { return this.parseYield(forInit) }\n // The tokenizer will assume an expression is allowed after\n // `yield`, but this isn't that kind of yield\n else { this.exprAllowed = false; }\n }\n\n var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1;\n if (refDestructuringErrors) {\n oldParenAssign = refDestructuringErrors.parenthesizedAssign;\n oldTrailingComma = refDestructuringErrors.trailingComma;\n oldDoubleProto = refDestructuringErrors.doubleProto;\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1;\n } else {\n refDestructuringErrors = new DestructuringErrors;\n ownDestructuringErrors = true;\n }\n\n var startPos = this.start, startLoc = this.startLoc;\n if (this.type === types$1.parenL || this.type === types$1.name) {\n this.potentialArrowAt = this.start;\n this.potentialArrowInForAwait = forInit === \"await\";\n }\n var left = this.parseMaybeConditional(forInit, refDestructuringErrors);\n if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); }\n if (this.type.isAssign) {\n var node = this.startNodeAt(startPos, startLoc);\n node.operator = this.value;\n if (this.type === types$1.eq)\n { left = this.toAssignable(left, false, refDestructuringErrors); }\n if (!ownDestructuringErrors) {\n refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1;\n }\n if (refDestructuringErrors.shorthandAssign >= left.start)\n { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly\n if (this.type === types$1.eq)\n { this.checkLValPattern(left); }\n else\n { this.checkLValSimple(left); }\n node.left = left;\n this.next();\n node.right = this.parseMaybeAssign(forInit);\n if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; }\n return this.finishNode(node, \"AssignmentExpression\")\n } else {\n if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); }\n }\n if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; }\n if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; }\n return left\n};\n\n// Parse a ternary conditional (`?:`) operator.\n\npp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprOps(forInit, refDestructuringErrors);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n if (this.eat(types$1.question)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.test = expr;\n node.consequent = this.parseMaybeAssign();\n this.expect(types$1.colon);\n node.alternate = this.parseMaybeAssign(forInit);\n return this.finishNode(node, \"ConditionalExpression\")\n }\n return expr\n};\n\n// Start the precedence parser.\n\npp$5.parseExprOps = function(forInit, refDestructuringErrors) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n return expr.start === startPos && expr.type === \"ArrowFunctionExpression\" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit)\n};\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\n\npp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) {\n var prec = this.type.binop;\n if (prec != null && (!forInit || this.type !== types$1._in)) {\n if (prec > minPrec) {\n var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND;\n var coalesce = this.type === types$1.coalesce;\n if (coalesce) {\n // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions.\n // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error.\n prec = types$1.logicalAND.binop;\n }\n var op = this.value;\n this.next();\n var startPos = this.start, startLoc = this.startLoc;\n var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit);\n var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce);\n if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) {\n this.raiseRecoverable(this.start, \"Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses\");\n }\n return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit)\n }\n }\n return left\n};\n\npp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) {\n if (right.type === \"PrivateIdentifier\") { this.raise(right.start, \"Private identifier can only be left side of binary expression\"); }\n var node = this.startNodeAt(startPos, startLoc);\n node.left = left;\n node.operator = op;\n node.right = right;\n return this.finishNode(node, logical ? \"LogicalExpression\" : \"BinaryExpression\")\n};\n\n// Parse unary operators, both prefix and postfix.\n\npp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) {\n var startPos = this.start, startLoc = this.startLoc, expr;\n if (this.isContextual(\"await\") && this.canAwait) {\n expr = this.parseAwait(forInit);\n sawUnary = true;\n } else if (this.type.prefix) {\n var node = this.startNode(), update = this.type === types$1.incDec;\n node.operator = this.value;\n node.prefix = true;\n this.next();\n node.argument = this.parseMaybeUnary(null, true, update, forInit);\n this.checkExpressionErrors(refDestructuringErrors, true);\n if (update) { this.checkLValSimple(node.argument); }\n else if (this.strict && node.operator === \"delete\" && isLocalVariableAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Deleting local variable in strict mode\"); }\n else if (node.operator === \"delete\" && isPrivateFieldAccess(node.argument))\n { this.raiseRecoverable(node.start, \"Private fields can not be deleted\"); }\n else { sawUnary = true; }\n expr = this.finishNode(node, update ? \"UpdateExpression\" : \"UnaryExpression\");\n } else if (!sawUnary && this.type === types$1.privateId) {\n if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); }\n expr = this.parsePrivateIdent();\n // only could be private fields in 'in', such as #x in obj\n if (this.type !== types$1._in) { this.unexpected(); }\n } else {\n expr = this.parseExprSubscripts(refDestructuringErrors, forInit);\n if (this.checkExpressionErrors(refDestructuringErrors)) { return expr }\n while (this.type.postfix && !this.canInsertSemicolon()) {\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.operator = this.value;\n node$1.prefix = false;\n node$1.argument = expr;\n this.checkLValSimple(expr);\n this.next();\n expr = this.finishNode(node$1, \"UpdateExpression\");\n }\n }\n\n if (!incDec && this.eat(types$1.starstar)) {\n if (sawUnary)\n { this.unexpected(this.lastTokStart); }\n else\n { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), \"**\", false) }\n } else {\n return expr\n }\n};\n\nfunction isLocalVariableAccess(node) {\n return (\n node.type === \"Identifier\" ||\n node.type === \"ParenthesizedExpression\" && isLocalVariableAccess(node.expression)\n )\n}\n\nfunction isPrivateFieldAccess(node) {\n return (\n node.type === \"MemberExpression\" && node.property.type === \"PrivateIdentifier\" ||\n node.type === \"ChainExpression\" && isPrivateFieldAccess(node.expression) ||\n node.type === \"ParenthesizedExpression\" && isPrivateFieldAccess(node.expression)\n )\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n\npp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) {\n var startPos = this.start, startLoc = this.startLoc;\n var expr = this.parseExprAtom(refDestructuringErrors, forInit);\n if (expr.type === \"ArrowFunctionExpression\" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== \")\")\n { return expr }\n var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit);\n if (refDestructuringErrors && result.type === \"MemberExpression\") {\n if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; }\n if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; }\n if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; }\n }\n return result\n};\n\npp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) {\n var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === \"Identifier\" && base.name === \"async\" &&\n this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 &&\n this.potentialArrowAt === base.start;\n var optionalChained = false;\n\n while (true) {\n var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit);\n\n if (element.optional) { optionalChained = true; }\n if (element === base || element.type === \"ArrowFunctionExpression\") {\n if (optionalChained) {\n var chainNode = this.startNodeAt(startPos, startLoc);\n chainNode.expression = element;\n element = this.finishNode(chainNode, \"ChainExpression\");\n }\n return element\n }\n\n base = element;\n }\n};\n\npp$5.shouldParseAsyncArrow = function() {\n return !this.canInsertSemicolon() && this.eat(types$1.arrow)\n};\n\npp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit)\n};\n\npp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) {\n var optionalSupported = this.options.ecmaVersion >= 11;\n var optional = optionalSupported && this.eat(types$1.questionDot);\n if (noCalls && optional) { this.raise(this.lastTokStart, \"Optional chaining cannot appear in the callee of new expressions\"); }\n\n var computed = this.eat(types$1.bracketL);\n if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) {\n var node = this.startNodeAt(startPos, startLoc);\n node.object = base;\n if (computed) {\n node.property = this.parseExpression();\n this.expect(types$1.bracketR);\n } else if (this.type === types$1.privateId && base.type !== \"Super\") {\n node.property = this.parsePrivateIdent();\n } else {\n node.property = this.parseIdent(this.options.allowReserved !== \"never\");\n }\n node.computed = !!computed;\n if (optionalSupported) {\n node.optional = optional;\n }\n base = this.finishNode(node, \"MemberExpression\");\n } else if (!noCalls && this.eat(types$1.parenL)) {\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors);\n if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n if (this.awaitIdentPos > 0)\n { this.raise(this.awaitIdentPos, \"Cannot use 'await' as identifier inside an async function\"); }\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit)\n }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos;\n var node$1 = this.startNodeAt(startPos, startLoc);\n node$1.callee = base;\n node$1.arguments = exprList;\n if (optionalSupported) {\n node$1.optional = optional;\n }\n base = this.finishNode(node$1, \"CallExpression\");\n } else if (this.type === types$1.backQuote) {\n if (optional || optionalChained) {\n this.raise(this.start, \"Optional chaining cannot appear in the tag of tagged template expressions\");\n }\n var node$2 = this.startNodeAt(startPos, startLoc);\n node$2.tag = base;\n node$2.quasi = this.parseTemplate({isTagged: true});\n base = this.finishNode(node$2, \"TaggedTemplateExpression\");\n }\n return base\n};\n\n// Parse an atomic expression \u2014 either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n\npp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) {\n // If a division operator appears in an expression position, the\n // tokenizer got confused, and we force it to read a regexp instead.\n if (this.type === types$1.slash) { this.readRegexp(); }\n\n var node, canBeArrow = this.potentialArrowAt === this.start;\n switch (this.type) {\n case types$1._super:\n if (!this.allowSuper)\n { this.raise(this.start, \"'super' keyword outside a method\"); }\n node = this.startNode();\n this.next();\n if (this.type === types$1.parenL && !this.allowDirectSuper)\n { this.raise(node.start, \"super() call outside constructor of a subclass\"); }\n // The `super` keyword can appear at below:\n // SuperProperty:\n // super [ Expression ]\n // super . IdentifierName\n // SuperCall:\n // super ( Arguments )\n if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL)\n { this.unexpected(); }\n return this.finishNode(node, \"Super\")\n\n case types$1._this:\n node = this.startNode();\n this.next();\n return this.finishNode(node, \"ThisExpression\")\n\n case types$1.name:\n var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc;\n var id = this.parseIdent(false);\n if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === \"async\" && !this.canInsertSemicolon() && this.eat(types$1._function)) {\n this.overrideContext(types.f_expr);\n return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit)\n }\n if (canBeArrow && !this.canInsertSemicolon()) {\n if (this.eat(types$1.arrow))\n { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) }\n if (this.options.ecmaVersion >= 8 && id.name === \"async\" && this.type === types$1.name && !containsEsc &&\n (!this.potentialArrowInForAwait || this.value !== \"of\" || this.containsEsc)) {\n id = this.parseIdent(false);\n if (this.canInsertSemicolon() || !this.eat(types$1.arrow))\n { this.unexpected(); }\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit)\n }\n }\n return id\n\n case types$1.regexp:\n var value = this.value;\n node = this.parseLiteral(value.value);\n node.regex = {pattern: value.pattern, flags: value.flags};\n return node\n\n case types$1.num: case types$1.string:\n return this.parseLiteral(this.value)\n\n case types$1._null: case types$1._true: case types$1._false:\n node = this.startNode();\n node.value = this.type === types$1._null ? null : this.type === types$1._true;\n node.raw = this.type.keyword;\n this.next();\n return this.finishNode(node, \"Literal\")\n\n case types$1.parenL:\n var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit);\n if (refDestructuringErrors) {\n if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))\n { refDestructuringErrors.parenthesizedAssign = start; }\n if (refDestructuringErrors.parenthesizedBind < 0)\n { refDestructuringErrors.parenthesizedBind = start; }\n }\n return expr\n\n case types$1.bracketL:\n node = this.startNode();\n this.next();\n node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors);\n return this.finishNode(node, \"ArrayExpression\")\n\n case types$1.braceL:\n this.overrideContext(types.b_expr);\n return this.parseObj(false, refDestructuringErrors)\n\n case types$1._function:\n node = this.startNode();\n this.next();\n return this.parseFunction(node, 0)\n\n case types$1._class:\n return this.parseClass(this.startNode(), false)\n\n case types$1._new:\n return this.parseNew()\n\n case types$1.backQuote:\n return this.parseTemplate()\n\n case types$1._import:\n if (this.options.ecmaVersion >= 11) {\n return this.parseExprImport(forNew)\n } else {\n return this.unexpected()\n }\n\n default:\n return this.parseExprAtomDefault()\n }\n};\n\npp$5.parseExprAtomDefault = function() {\n this.unexpected();\n};\n\npp$5.parseExprImport = function(forNew) {\n var node = this.startNode();\n\n // Consume `import` as an identifier for `import.meta`.\n // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`.\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword import\"); }\n this.next();\n\n if (this.type === types$1.parenL && !forNew) {\n return this.parseDynamicImport(node)\n } else if (this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"import\";\n node.meta = this.finishNode(meta, \"Identifier\");\n return this.parseImportMeta(node)\n } else {\n this.unexpected();\n }\n};\n\npp$5.parseDynamicImport = function(node) {\n this.next(); // skip `(`\n\n // Parse node.source.\n node.source = this.parseMaybeAssign();\n\n if (this.options.ecmaVersion >= 16) {\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n node.options = this.parseMaybeAssign();\n if (!this.eat(types$1.parenR)) {\n this.expect(types$1.comma);\n if (!this.afterTrailingComma(types$1.parenR)) {\n this.unexpected();\n }\n }\n } else {\n node.options = null;\n }\n } else {\n node.options = null;\n }\n } else {\n // Verify ending.\n if (!this.eat(types$1.parenR)) {\n var errorPos = this.start;\n if (this.eat(types$1.comma) && this.eat(types$1.parenR)) {\n this.raiseRecoverable(errorPos, \"Trailing comma is not allowed in import()\");\n } else {\n this.unexpected(errorPos);\n }\n }\n }\n\n return this.finishNode(node, \"ImportExpression\")\n};\n\npp$5.parseImportMeta = function(node) {\n this.next(); // skip `.`\n\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n\n if (node.property.name !== \"meta\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for import is 'import.meta'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'import.meta' must not contain escaped characters\"); }\n if (this.options.sourceType !== \"module\" && !this.options.allowImportExportEverywhere)\n { this.raiseRecoverable(node.start, \"Cannot use 'import.meta' outside a module\"); }\n\n return this.finishNode(node, \"MetaProperty\")\n};\n\npp$5.parseLiteral = function(value) {\n var node = this.startNode();\n node.value = value;\n node.raw = this.input.slice(this.start, this.end);\n if (node.raw.charCodeAt(node.raw.length - 1) === 110)\n { node.bigint = node.value != null ? node.value.toString() : node.raw.slice(0, -1).replace(/_/g, \"\"); }\n this.next();\n return this.finishNode(node, \"Literal\")\n};\n\npp$5.parseParenExpression = function() {\n this.expect(types$1.parenL);\n var val = this.parseExpression();\n this.expect(types$1.parenR);\n return val\n};\n\npp$5.shouldParseArrow = function(exprList) {\n return !this.canInsertSemicolon()\n};\n\npp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) {\n var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8;\n if (this.options.ecmaVersion >= 6) {\n this.next();\n\n var innerStartPos = this.start, innerStartLoc = this.startLoc;\n var exprList = [], first = true, lastIsComma = false;\n var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart;\n this.yieldPos = 0;\n this.awaitPos = 0;\n // Do not save awaitIdentPos to allow checking awaits nested in parameters\n while (this.type !== types$1.parenR) {\n first ? first = false : this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) {\n lastIsComma = true;\n break\n } else if (this.type === types$1.ellipsis) {\n spreadStart = this.start;\n exprList.push(this.parseParenItem(this.parseRestBinding()));\n if (this.type === types$1.comma) {\n this.raiseRecoverable(\n this.start,\n \"Comma is not permitted after the rest element\"\n );\n }\n break\n } else {\n exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem));\n }\n }\n var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc;\n this.expect(types$1.parenR);\n\n if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) {\n this.checkPatternErrors(refDestructuringErrors, false);\n this.checkYieldAwaitInDefaultParams();\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n return this.parseParenArrowList(startPos, startLoc, exprList, forInit)\n }\n\n if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); }\n if (spreadStart) { this.unexpected(spreadStart); }\n this.checkExpressionErrors(refDestructuringErrors, true);\n this.yieldPos = oldYieldPos || this.yieldPos;\n this.awaitPos = oldAwaitPos || this.awaitPos;\n\n if (exprList.length > 1) {\n val = this.startNodeAt(innerStartPos, innerStartLoc);\n val.expressions = exprList;\n this.finishNodeAt(val, \"SequenceExpression\", innerEndPos, innerEndLoc);\n } else {\n val = exprList[0];\n }\n } else {\n val = this.parseParenExpression();\n }\n\n if (this.options.preserveParens) {\n var par = this.startNodeAt(startPos, startLoc);\n par.expression = val;\n return this.finishNode(par, \"ParenthesizedExpression\")\n } else {\n return val\n }\n};\n\npp$5.parseParenItem = function(item) {\n return item\n};\n\npp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) {\n return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit)\n};\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call \u2014 at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\n\nvar empty = [];\n\npp$5.parseNew = function() {\n if (this.containsEsc) { this.raiseRecoverable(this.start, \"Escape sequence in keyword new\"); }\n var node = this.startNode();\n this.next();\n if (this.options.ecmaVersion >= 6 && this.type === types$1.dot) {\n var meta = this.startNodeAt(node.start, node.loc && node.loc.start);\n meta.name = \"new\";\n node.meta = this.finishNode(meta, \"Identifier\");\n this.next();\n var containsEsc = this.containsEsc;\n node.property = this.parseIdent(true);\n if (node.property.name !== \"target\")\n { this.raiseRecoverable(node.property.start, \"The only valid meta property for new is 'new.target'\"); }\n if (containsEsc)\n { this.raiseRecoverable(node.start, \"'new.target' must not contain escaped characters\"); }\n if (!this.allowNewDotTarget)\n { this.raiseRecoverable(node.start, \"'new.target' can only be used in functions and class static block\"); }\n return this.finishNode(node, \"MetaProperty\")\n }\n var startPos = this.start, startLoc = this.startLoc;\n node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false);\n if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); }\n else { node.arguments = empty; }\n return this.finishNode(node, \"NewExpression\")\n};\n\n// Parse template expression.\n\npp$5.parseTemplateElement = function(ref) {\n var isTagged = ref.isTagged;\n\n var elem = this.startNode();\n if (this.type === types$1.invalidTemplate) {\n if (!isTagged) {\n this.raiseRecoverable(this.start, \"Bad escape sequence in untagged template literal\");\n }\n elem.value = {\n raw: this.value.replace(/\\r\\n?/g, \"\\n\"),\n cooked: null\n };\n } else {\n elem.value = {\n raw: this.input.slice(this.start, this.end).replace(/\\r\\n?/g, \"\\n\"),\n cooked: this.value\n };\n }\n this.next();\n elem.tail = this.type === types$1.backQuote;\n return this.finishNode(elem, \"TemplateElement\")\n};\n\npp$5.parseTemplate = function(ref) {\n if ( ref === void 0 ) ref = {};\n var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false;\n\n var node = this.startNode();\n this.next();\n node.expressions = [];\n var curElt = this.parseTemplateElement({isTagged: isTagged});\n node.quasis = [curElt];\n while (!curElt.tail) {\n if (this.type === types$1.eof) { this.raise(this.pos, \"Unterminated template literal\"); }\n this.expect(types$1.dollarBraceL);\n node.expressions.push(this.parseExpression());\n this.expect(types$1.braceR);\n node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged}));\n }\n this.next();\n return this.finishNode(node, \"TemplateLiteral\")\n};\n\npp$5.isAsyncProp = function(prop) {\n return !prop.computed && prop.key.type === \"Identifier\" && prop.key.name === \"async\" &&\n (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) &&\n !lineBreak.test(this.input.slice(this.lastTokEnd, this.start))\n};\n\n// Parse an object literal or binding pattern.\n\npp$5.parseObj = function(isPattern, refDestructuringErrors) {\n var node = this.startNode(), first = true, propHash = {};\n node.properties = [];\n this.next();\n while (!this.eat(types$1.braceR)) {\n if (!first) {\n this.expect(types$1.comma);\n if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break }\n } else { first = false; }\n\n var prop = this.parseProperty(isPattern, refDestructuringErrors);\n if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); }\n node.properties.push(prop);\n }\n return this.finishNode(node, isPattern ? \"ObjectPattern\" : \"ObjectExpression\")\n};\n\npp$5.parseProperty = function(isPattern, refDestructuringErrors) {\n var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc;\n if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) {\n if (isPattern) {\n prop.argument = this.parseIdent(false);\n if (this.type === types$1.comma) {\n this.raiseRecoverable(this.start, \"Comma is not permitted after the rest element\");\n }\n return this.finishNode(prop, \"RestElement\")\n }\n // Parse argument.\n prop.argument = this.parseMaybeAssign(false, refDestructuringErrors);\n // To disallow trailing comma via `this.toAssignable()`.\n if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) {\n refDestructuringErrors.trailingComma = this.start;\n }\n // Finish\n return this.finishNode(prop, \"SpreadElement\")\n }\n if (this.options.ecmaVersion >= 6) {\n prop.method = false;\n prop.shorthand = false;\n if (isPattern || refDestructuringErrors) {\n startPos = this.start;\n startLoc = this.startLoc;\n }\n if (!isPattern)\n { isGenerator = this.eat(types$1.star); }\n }\n var containsEsc = this.containsEsc;\n this.parsePropertyName(prop);\n if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) {\n isAsync = true;\n isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star);\n this.parsePropertyName(prop);\n } else {\n isAsync = false;\n }\n this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc);\n return this.finishNode(prop, \"Property\")\n};\n\npp$5.parseGetterSetter = function(prop) {\n var kind = prop.key.name;\n this.parsePropertyName(prop);\n prop.value = this.parseMethod(false);\n prop.kind = kind;\n var paramCount = prop.kind === \"get\" ? 0 : 1;\n if (prop.value.params.length !== paramCount) {\n var start = prop.value.start;\n if (prop.kind === \"get\")\n { this.raiseRecoverable(start, \"getter should have no params\"); }\n else\n { this.raiseRecoverable(start, \"setter should have exactly one param\"); }\n } else {\n if (prop.kind === \"set\" && prop.value.params[0].type === \"RestElement\")\n { this.raiseRecoverable(prop.value.params[0].start, \"Setter cannot use rest params\"); }\n }\n};\n\npp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) {\n if ((isGenerator || isAsync) && this.type === types$1.colon)\n { this.unexpected(); }\n\n if (this.eat(types$1.colon)) {\n prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors);\n prop.kind = \"init\";\n } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) {\n if (isPattern) { this.unexpected(); }\n prop.method = true;\n prop.value = this.parseMethod(isGenerator, isAsync);\n prop.kind = \"init\";\n } else if (!isPattern && !containsEsc &&\n this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === \"Identifier\" &&\n (prop.key.name === \"get\" || prop.key.name === \"set\") &&\n (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.parseGetterSetter(prop);\n } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === \"Identifier\") {\n if (isGenerator || isAsync) { this.unexpected(); }\n this.checkUnreserved(prop.key);\n if (prop.key.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = startPos; }\n if (isPattern) {\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else if (this.type === types$1.eq && refDestructuringErrors) {\n if (refDestructuringErrors.shorthandAssign < 0)\n { refDestructuringErrors.shorthandAssign = this.start; }\n prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key));\n } else {\n prop.value = this.copyNode(prop.key);\n }\n prop.kind = \"init\";\n prop.shorthand = true;\n } else { this.unexpected(); }\n};\n\npp$5.parsePropertyName = function(prop) {\n if (this.options.ecmaVersion >= 6) {\n if (this.eat(types$1.bracketL)) {\n prop.computed = true;\n prop.key = this.parseMaybeAssign();\n this.expect(types$1.bracketR);\n return prop.key\n } else {\n prop.computed = false;\n }\n }\n return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== \"never\")\n};\n\n// Initialize empty function node.\n\npp$5.initFunction = function(node) {\n node.id = null;\n if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; }\n if (this.options.ecmaVersion >= 8) { node.async = false; }\n};\n\n// Parse object or class method.\n\npp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) {\n var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.initFunction(node);\n if (this.options.ecmaVersion >= 6)\n { node.generator = isGenerator; }\n if (this.options.ecmaVersion >= 8)\n { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));\n\n this.expect(types$1.parenL);\n node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8);\n this.checkYieldAwaitInDefaultParams();\n this.parseFunctionBody(node, false, true, false);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"FunctionExpression\")\n};\n\n// Parse arrow function expression with given parameters.\n\npp$5.parseArrowExpression = function(node, params, isAsync, forInit) {\n var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos;\n\n this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW);\n this.initFunction(node);\n if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; }\n\n this.yieldPos = 0;\n this.awaitPos = 0;\n this.awaitIdentPos = 0;\n\n node.params = this.toAssignableList(params, true);\n this.parseFunctionBody(node, true, false, forInit);\n\n this.yieldPos = oldYieldPos;\n this.awaitPos = oldAwaitPos;\n this.awaitIdentPos = oldAwaitIdentPos;\n return this.finishNode(node, \"ArrowFunctionExpression\")\n};\n\n// Parse function body and check parameters.\n\npp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) {\n var isExpression = isArrowFunction && this.type !== types$1.braceL;\n var oldStrict = this.strict, useStrict = false;\n\n if (isExpression) {\n node.body = this.parseMaybeAssign(forInit);\n node.expression = true;\n this.checkParams(node, false);\n } else {\n var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params);\n if (!oldStrict || nonSimple) {\n useStrict = this.strictDirective(this.end);\n // If this is a strict mode function, verify that argument names\n // are not repeated, and it does not try to bind the words `eval`\n // or `arguments`.\n if (useStrict && nonSimple)\n { this.raiseRecoverable(node.start, \"Illegal 'use strict' directive in function with non-simple parameter list\"); }\n }\n // Start a new scope with regard to labels and the `inFunction`\n // flag (restore them to their old value afterwards).\n var oldLabels = this.labels;\n this.labels = [];\n if (useStrict) { this.strict = true; }\n\n // Add the params to varDeclaredNames to ensure that an error is thrown\n // if a let/const declaration in the function clashes with one of the params.\n this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params));\n // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); }\n node.body = this.parseBlock(false, undefined, useStrict && !oldStrict);\n node.expression = false;\n this.adaptDirectivePrologue(node.body.body);\n this.labels = oldLabels;\n }\n this.exitScope();\n};\n\npp$5.isSimpleParamList = function(params) {\n for (var i = 0, list = params; i < list.length; i += 1)\n {\n var param = list[i];\n\n if (param.type !== \"Identifier\") { return false\n } }\n return true\n};\n\n// Checks function params for various disallowed patterns such as using \"eval\"\n// or \"arguments\" and duplicate parameters.\n\npp$5.checkParams = function(node, allowDuplicates) {\n var nameHash = Object.create(null);\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash);\n }\n};\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\npp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {\n var elts = [], first = true;\n while (!this.eat(close)) {\n if (!first) {\n this.expect(types$1.comma);\n if (allowTrailingComma && this.afterTrailingComma(close)) { break }\n } else { first = false; }\n\n var elt = (void 0);\n if (allowEmpty && this.type === types$1.comma)\n { elt = null; }\n else if (this.type === types$1.ellipsis) {\n elt = this.parseSpread(refDestructuringErrors);\n if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0)\n { refDestructuringErrors.trailingComma = this.start; }\n } else {\n elt = this.parseMaybeAssign(false, refDestructuringErrors);\n }\n elts.push(elt);\n }\n return elts\n};\n\npp$5.checkUnreserved = function(ref) {\n var start = ref.start;\n var end = ref.end;\n var name = ref.name;\n\n if (this.inGenerator && name === \"yield\")\n { this.raiseRecoverable(start, \"Cannot use 'yield' as identifier inside a generator\"); }\n if (this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use 'await' as identifier inside an async function\"); }\n if (!(this.currentThisScope().flags & SCOPE_VAR) && name === \"arguments\")\n { this.raiseRecoverable(start, \"Cannot use 'arguments' in class field initializer\"); }\n if (this.inClassStaticBlock && (name === \"arguments\" || name === \"await\"))\n { this.raise(start, (\"Cannot use \" + name + \" in class static initialization block\")); }\n if (this.keywords.test(name))\n { this.raise(start, (\"Unexpected keyword '\" + name + \"'\")); }\n if (this.options.ecmaVersion < 6 &&\n this.input.slice(start, end).indexOf(\"\\\\\") !== -1) { return }\n var re = this.strict ? this.reservedWordsStrict : this.reservedWords;\n if (re.test(name)) {\n if (!this.inAsync && name === \"await\")\n { this.raiseRecoverable(start, \"Cannot use keyword 'await' outside an async function\"); }\n this.raiseRecoverable(start, (\"The keyword '\" + name + \"' is reserved\"));\n }\n};\n\n// Parse the next token as an identifier. If `liberal` is true (used\n// when parsing properties), it will also convert keywords into\n// identifiers.\n\npp$5.parseIdent = function(liberal) {\n var node = this.parseIdentNode();\n this.next(!!liberal);\n this.finishNode(node, \"Identifier\");\n if (!liberal) {\n this.checkUnreserved(node);\n if (node.name === \"await\" && !this.awaitIdentPos)\n { this.awaitIdentPos = node.start; }\n }\n return node\n};\n\npp$5.parseIdentNode = function() {\n var node = this.startNode();\n if (this.type === types$1.name) {\n node.name = this.value;\n } else if (this.type.keyword) {\n node.name = this.type.keyword;\n\n // To fix https://github.com/acornjs/acorn/issues/575\n // `class` and `function` keywords push new context into this.context.\n // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name.\n // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword\n if ((node.name === \"class\" || node.name === \"function\") &&\n (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) {\n this.context.pop();\n }\n this.type = types$1.name;\n } else {\n this.unexpected();\n }\n return node\n};\n\npp$5.parsePrivateIdent = function() {\n var node = this.startNode();\n if (this.type === types$1.privateId) {\n node.name = this.value;\n } else {\n this.unexpected();\n }\n this.next();\n this.finishNode(node, \"PrivateIdentifier\");\n\n // For validating existence\n if (this.options.checkPrivateFields) {\n if (this.privateNameStack.length === 0) {\n this.raise(node.start, (\"Private field '#\" + (node.name) + \"' must be declared in an enclosing class\"));\n } else {\n this.privateNameStack[this.privateNameStack.length - 1].used.push(node);\n }\n }\n\n return node\n};\n\n// Parses yield expression inside generator.\n\npp$5.parseYield = function(forInit) {\n if (!this.yieldPos) { this.yieldPos = this.start; }\n\n var node = this.startNode();\n this.next();\n if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) {\n node.delegate = false;\n node.argument = null;\n } else {\n node.delegate = this.eat(types$1.star);\n node.argument = this.parseMaybeAssign(forInit);\n }\n return this.finishNode(node, \"YieldExpression\")\n};\n\npp$5.parseAwait = function(forInit) {\n if (!this.awaitPos) { this.awaitPos = this.start; }\n\n var node = this.startNode();\n this.next();\n node.argument = this.parseMaybeUnary(null, true, false, forInit);\n return this.finishNode(node, \"AwaitExpression\")\n};\n\nvar pp$4 = Parser.prototype;\n\n// This function is used to raise exceptions on parse errors. It\n// takes an offset integer (into the current `input`) to indicate\n// the location of the error, attaches the position to the end\n// of the error message, and then raises a `SyntaxError` with that\n// message.\n\npp$4.raise = function(pos, message) {\n var loc = getLineInfo(this.input, pos);\n message += \" (\" + loc.line + \":\" + loc.column + \")\";\n if (this.sourceFile) {\n message += \" in \" + this.sourceFile;\n }\n var err = new SyntaxError(message);\n err.pos = pos; err.loc = loc; err.raisedAt = this.pos;\n throw err\n};\n\npp$4.raiseRecoverable = pp$4.raise;\n\npp$4.curPosition = function() {\n if (this.options.locations) {\n return new Position(this.curLine, this.pos - this.lineStart)\n }\n};\n\nvar pp$3 = Parser.prototype;\n\nvar Scope = function Scope(flags) {\n this.flags = flags;\n // A list of var-declared names in the current lexical scope\n this.var = [];\n // A list of lexically-declared names in the current lexical scope\n this.lexical = [];\n // A list of lexically-declared FunctionDeclaration names in the current lexical scope\n this.functions = [];\n};\n\n// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.\n\npp$3.enterScope = function(flags) {\n this.scopeStack.push(new Scope(flags));\n};\n\npp$3.exitScope = function() {\n this.scopeStack.pop();\n};\n\n// The spec says:\n// > At the top level of a function, or script, function declarations are\n// > treated like var declarations rather than like lexical declarations.\npp$3.treatFunctionsAsVarInScope = function(scope) {\n return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP)\n};\n\npp$3.declareName = function(name, bindingType, pos) {\n var redeclared = false;\n if (bindingType === BIND_LEXICAL) {\n var scope = this.currentScope();\n redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1;\n scope.lexical.push(name);\n if (this.inModule && (scope.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n } else if (bindingType === BIND_SIMPLE_CATCH) {\n var scope$1 = this.currentScope();\n scope$1.lexical.push(name);\n } else if (bindingType === BIND_FUNCTION) {\n var scope$2 = this.currentScope();\n if (this.treatFunctionsAsVar)\n { redeclared = scope$2.lexical.indexOf(name) > -1; }\n else\n { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; }\n scope$2.functions.push(name);\n } else {\n for (var i = this.scopeStack.length - 1; i >= 0; --i) {\n var scope$3 = this.scopeStack[i];\n if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) ||\n !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) {\n redeclared = true;\n break\n }\n scope$3.var.push(name);\n if (this.inModule && (scope$3.flags & SCOPE_TOP))\n { delete this.undefinedExports[name]; }\n if (scope$3.flags & SCOPE_VAR) { break }\n }\n }\n if (redeclared) { this.raiseRecoverable(pos, (\"Identifier '\" + name + \"' has already been declared\")); }\n};\n\npp$3.checkLocalExport = function(id) {\n // scope.functions must be empty as Module code is always strict.\n if (this.scopeStack[0].lexical.indexOf(id.name) === -1 &&\n this.scopeStack[0].var.indexOf(id.name) === -1) {\n this.undefinedExports[id.name] = id;\n }\n};\n\npp$3.currentScope = function() {\n return this.scopeStack[this.scopeStack.length - 1]\n};\n\npp$3.currentVarScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK)) { return scope }\n }\n};\n\n// Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\npp$3.currentThisScope = function() {\n for (var i = this.scopeStack.length - 1;; i--) {\n var scope = this.scopeStack[i];\n if (scope.flags & (SCOPE_VAR | SCOPE_CLASS_FIELD_INIT | SCOPE_CLASS_STATIC_BLOCK) &&\n !(scope.flags & SCOPE_ARROW)) { return scope }\n }\n};\n\nvar Node = function Node(parser, pos, loc) {\n this.type = \"\";\n this.start = pos;\n this.end = 0;\n if (parser.options.locations)\n { this.loc = new SourceLocation(parser, loc); }\n if (parser.options.directSourceFile)\n { this.sourceFile = parser.options.directSourceFile; }\n if (parser.options.ranges)\n { this.range = [pos, 0]; }\n};\n\n// Start an AST node, attaching a start offset.\n\nvar pp$2 = Parser.prototype;\n\npp$2.startNode = function() {\n return new Node(this, this.start, this.startLoc)\n};\n\npp$2.startNodeAt = function(pos, loc) {\n return new Node(this, pos, loc)\n};\n\n// Finish an AST node, adding `type` and `end` properties.\n\nfunction finishNodeAt(node, type, pos, loc) {\n node.type = type;\n node.end = pos;\n if (this.options.locations)\n { node.loc.end = loc; }\n if (this.options.ranges)\n { node.range[1] = pos; }\n return node\n}\n\npp$2.finishNode = function(node, type) {\n return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)\n};\n\n// Finish node at given position\n\npp$2.finishNodeAt = function(node, type, pos, loc) {\n return finishNodeAt.call(this, node, type, pos, loc)\n};\n\npp$2.copyNode = function(node) {\n var newNode = new Node(this, node.start, this.startLoc);\n for (var prop in node) { newNode[prop] = node[prop]; }\n return newNode\n};\n\n// This file was generated by \"bin/generate-unicode-script-values.js\". Do not modify manually!\nvar scriptValuesAddedInUnicode = \"Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz\";\n\n// This file contains Unicode properties extracted from the ECMAScript specification.\n// The lists are extracted like so:\n// $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)\n\n// #table-binary-unicode-properties\nvar ecma9BinaryProperties = \"ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS\";\nvar ecma10BinaryProperties = ecma9BinaryProperties + \" Extended_Pictographic\";\nvar ecma11BinaryProperties = ecma10BinaryProperties;\nvar ecma12BinaryProperties = ecma11BinaryProperties + \" EBase EComp EMod EPres ExtPict\";\nvar ecma13BinaryProperties = ecma12BinaryProperties;\nvar ecma14BinaryProperties = ecma13BinaryProperties;\n\nvar unicodeBinaryProperties = {\n 9: ecma9BinaryProperties,\n 10: ecma10BinaryProperties,\n 11: ecma11BinaryProperties,\n 12: ecma12BinaryProperties,\n 13: ecma13BinaryProperties,\n 14: ecma14BinaryProperties\n};\n\n// #table-binary-unicode-properties-of-strings\nvar ecma14BinaryPropertiesOfStrings = \"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji\";\n\nvar unicodeBinaryPropertiesOfStrings = {\n 9: \"\",\n 10: \"\",\n 11: \"\",\n 12: \"\",\n 13: \"\",\n 14: ecma14BinaryPropertiesOfStrings\n};\n\n// #table-unicode-general-category-values\nvar unicodeGeneralCategoryValues = \"Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu\";\n\n// #table-unicode-script-values\nvar ecma9ScriptValues = \"Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb\";\nvar ecma10ScriptValues = ecma9ScriptValues + \" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd\";\nvar ecma11ScriptValues = ecma10ScriptValues + \" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho\";\nvar ecma12ScriptValues = ecma11ScriptValues + \" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi\";\nvar ecma13ScriptValues = ecma12ScriptValues + \" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith\";\nvar ecma14ScriptValues = ecma13ScriptValues + \" \" + scriptValuesAddedInUnicode;\n\nvar unicodeScriptValues = {\n 9: ecma9ScriptValues,\n 10: ecma10ScriptValues,\n 11: ecma11ScriptValues,\n 12: ecma12ScriptValues,\n 13: ecma13ScriptValues,\n 14: ecma14ScriptValues\n};\n\nvar data = {};\nfunction buildUnicodeData(ecmaVersion) {\n var d = data[ecmaVersion] = {\n binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + \" \" + unicodeGeneralCategoryValues),\n binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]),\n nonBinary: {\n General_Category: wordsRegexp(unicodeGeneralCategoryValues),\n Script: wordsRegexp(unicodeScriptValues[ecmaVersion])\n }\n };\n d.nonBinary.Script_Extensions = d.nonBinary.Script;\n\n d.nonBinary.gc = d.nonBinary.General_Category;\n d.nonBinary.sc = d.nonBinary.Script;\n d.nonBinary.scx = d.nonBinary.Script_Extensions;\n}\n\nfor (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) {\n var ecmaVersion = list[i];\n\n buildUnicodeData(ecmaVersion);\n}\n\nvar pp$1 = Parser.prototype;\n\n// Track disjunction structure to determine whether a duplicate\n// capture group name is allowed because it is in a separate branch.\nvar BranchID = function BranchID(parent, base) {\n // Parent disjunction branch\n this.parent = parent;\n // Identifies this set of sibling branches\n this.base = base || this;\n};\n\nBranchID.prototype.separatedFrom = function separatedFrom (alt) {\n // A branch is separate from another branch if they or any of\n // their parents are siblings in a given disjunction\n for (var self = this; self; self = self.parent) {\n for (var other = alt; other; other = other.parent) {\n if (self.base === other.base && self !== other) { return true }\n }\n }\n return false\n};\n\nBranchID.prototype.sibling = function sibling () {\n return new BranchID(this.parent, this.base)\n};\n\nvar RegExpValidationState = function RegExpValidationState(parser) {\n this.parser = parser;\n this.validFlags = \"gim\" + (parser.options.ecmaVersion >= 6 ? \"uy\" : \"\") + (parser.options.ecmaVersion >= 9 ? \"s\" : \"\") + (parser.options.ecmaVersion >= 13 ? \"d\" : \"\") + (parser.options.ecmaVersion >= 15 ? \"v\" : \"\");\n this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion];\n this.source = \"\";\n this.flags = \"\";\n this.start = 0;\n this.switchU = false;\n this.switchV = false;\n this.switchN = false;\n this.pos = 0;\n this.lastIntValue = 0;\n this.lastStringValue = \"\";\n this.lastAssertionIsQuantifiable = false;\n this.numCapturingParens = 0;\n this.maxBackReference = 0;\n this.groupNames = Object.create(null);\n this.backReferenceNames = [];\n this.branchID = null;\n};\n\nRegExpValidationState.prototype.reset = function reset (start, pattern, flags) {\n var unicodeSets = flags.indexOf(\"v\") !== -1;\n var unicode = flags.indexOf(\"u\") !== -1;\n this.start = start | 0;\n this.source = pattern + \"\";\n this.flags = flags;\n if (unicodeSets && this.parser.options.ecmaVersion >= 15) {\n this.switchU = true;\n this.switchV = true;\n this.switchN = true;\n } else {\n this.switchU = unicode && this.parser.options.ecmaVersion >= 6;\n this.switchV = false;\n this.switchN = unicode && this.parser.options.ecmaVersion >= 9;\n }\n};\n\nRegExpValidationState.prototype.raise = function raise (message) {\n this.parser.raiseRecoverable(this.start, (\"Invalid regular expression: /\" + (this.source) + \"/: \" + message));\n};\n\n// If u flag is given, this returns the code point at the index (it combines a surrogate pair).\n// Otherwise, this returns the code unit of the index (can be a part of a surrogate pair).\nRegExpValidationState.prototype.at = function at (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return -1\n }\n var c = s.charCodeAt(i);\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) {\n return c\n }\n var next = s.charCodeAt(i + 1);\n return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c\n};\n\nRegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var s = this.source;\n var l = s.length;\n if (i >= l) {\n return l\n }\n var c = s.charCodeAt(i), next;\n if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l ||\n (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) {\n return i + 1\n }\n return i + 2\n};\n\nRegExpValidationState.prototype.current = function current (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.pos, forceU)\n};\n\nRegExpValidationState.prototype.lookahead = function lookahead (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n return this.at(this.nextIndex(this.pos, forceU), forceU)\n};\n\nRegExpValidationState.prototype.advance = function advance (forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n this.pos = this.nextIndex(this.pos, forceU);\n};\n\nRegExpValidationState.prototype.eat = function eat (ch, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n if (this.current(forceU) === ch) {\n this.advance(forceU);\n return true\n }\n return false\n};\n\nRegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var pos = this.pos;\n for (var i = 0, list = chs; i < list.length; i += 1) {\n var ch = list[i];\n\n var current = this.at(pos, forceU);\n if (current === -1 || current !== ch) {\n return false\n }\n pos = this.nextIndex(pos, forceU);\n }\n this.pos = pos;\n return true\n};\n\n/**\n * Validate the flags part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpFlags = function(state) {\n var validFlags = state.validFlags;\n var flags = state.flags;\n\n var u = false;\n var v = false;\n\n for (var i = 0; i < flags.length; i++) {\n var flag = flags.charAt(i);\n if (validFlags.indexOf(flag) === -1) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n if (flags.indexOf(flag, i + 1) > -1) {\n this.raise(state.start, \"Duplicate regular expression flag\");\n }\n if (flag === \"u\") { u = true; }\n if (flag === \"v\") { v = true; }\n }\n if (this.options.ecmaVersion >= 15 && u && v) {\n this.raise(state.start, \"Invalid regular expression flag\");\n }\n};\n\nfunction hasProp(obj) {\n for (var _ in obj) { return true }\n return false\n}\n\n/**\n * Validate the pattern part of a given RegExpLiteral.\n *\n * @param {RegExpValidationState} state The state to validate RegExp.\n * @returns {void}\n */\npp$1.validateRegExpPattern = function(state) {\n this.regexp_pattern(state);\n\n // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of\n // parsing contains a |GroupName|, reparse with the goal symbol\n // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError*\n // exception if _P_ did not conform to the grammar, if any elements of _P_\n // were not matched by the parse, or if any Early Error conditions exist.\n if (!state.switchN && this.options.ecmaVersion >= 9 && hasProp(state.groupNames)) {\n state.switchN = true;\n this.regexp_pattern(state);\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern\npp$1.regexp_pattern = function(state) {\n state.pos = 0;\n state.lastIntValue = 0;\n state.lastStringValue = \"\";\n state.lastAssertionIsQuantifiable = false;\n state.numCapturingParens = 0;\n state.maxBackReference = 0;\n state.groupNames = Object.create(null);\n state.backReferenceNames.length = 0;\n state.branchID = null;\n\n this.regexp_disjunction(state);\n\n if (state.pos !== state.source.length) {\n // Make the same messages as V8.\n if (state.eat(0x29 /* ) */)) {\n state.raise(\"Unmatched ')'\");\n }\n if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n }\n if (state.maxBackReference > state.numCapturingParens) {\n state.raise(\"Invalid escape\");\n }\n for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) {\n var name = list[i];\n\n if (!state.groupNames[name]) {\n state.raise(\"Invalid named capture referenced\");\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction\npp$1.regexp_disjunction = function(state) {\n var trackDisjunction = this.options.ecmaVersion >= 16;\n if (trackDisjunction) { state.branchID = new BranchID(state.branchID, null); }\n this.regexp_alternative(state);\n while (state.eat(0x7C /* | */)) {\n if (trackDisjunction) { state.branchID = state.branchID.sibling(); }\n this.regexp_alternative(state);\n }\n if (trackDisjunction) { state.branchID = state.branchID.parent; }\n\n // Make the same message as V8.\n if (this.regexp_eatQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n if (state.eat(0x7B /* { */)) {\n state.raise(\"Lone quantifier brackets\");\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative\npp$1.regexp_alternative = function(state) {\n while (state.pos < state.source.length && this.regexp_eatTerm(state)) {}\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term\npp$1.regexp_eatTerm = function(state) {\n if (this.regexp_eatAssertion(state)) {\n // Handle `QuantifiableAssertion Quantifier` alternative.\n // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion\n // is a QuantifiableAssertion.\n if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) {\n // Make the same message as V8.\n if (state.switchU) {\n state.raise(\"Invalid quantifier\");\n }\n }\n return true\n }\n\n if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) {\n this.regexp_eatQuantifier(state);\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion\npp$1.regexp_eatAssertion = function(state) {\n var start = state.pos;\n state.lastAssertionIsQuantifiable = false;\n\n // ^, $\n if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) {\n return true\n }\n\n // \\b \\B\n if (state.eat(0x5C /* \\ */)) {\n if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) {\n return true\n }\n state.pos = start;\n }\n\n // Lookahead / Lookbehind\n if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) {\n var lookbehind = false;\n if (this.options.ecmaVersion >= 9) {\n lookbehind = state.eat(0x3C /* < */);\n }\n if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) {\n this.regexp_disjunction(state);\n if (!state.eat(0x29 /* ) */)) {\n state.raise(\"Unterminated group\");\n }\n state.lastAssertionIsQuantifiable = !lookbehind;\n return true\n }\n }\n\n state.pos = start;\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier\npp$1.regexp_eatQuantifier = function(state, noError) {\n if ( noError === void 0 ) noError = false;\n\n if (this.regexp_eatQuantifierPrefix(state, noError)) {\n state.eat(0x3F /* ? */);\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix\npp$1.regexp_eatQuantifierPrefix = function(state, noError) {\n return (\n state.eat(0x2A /* * */) ||\n state.eat(0x2B /* + */) ||\n state.eat(0x3F /* ? */) ||\n this.regexp_eatBracedQuantifier(state, noError)\n )\n};\npp$1.regexp_eatBracedQuantifier = function(state, noError) {\n var start = state.pos;\n if (state.eat(0x7B /* { */)) {\n var min = 0, max = -1;\n if (this.regexp_eatDecimalDigits(state)) {\n min = state.lastIntValue;\n if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) {\n max = state.lastIntValue;\n }\n if (state.eat(0x7D /* } */)) {\n // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term\n if (max !== -1 && max < min && !noError) {\n state.raise(\"numbers out of order in {} quantifier\");\n }\n return true\n }\n }\n if (state.switchU && !noError) {\n state.raise(\"Incomplete quantifier\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Atom\npp$1.regexp_eatAtom = function(state) {\n return (\n this.regexp_eatPatternCharacters(state) ||\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state)\n )\n};\npp$1.regexp_eatReverseSolidusAtomEscape = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatAtomEscape(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatUncapturingGroup = function(state) {\n var start = state.pos;\n if (state.eat(0x28 /* ( */)) {\n if (state.eat(0x3F /* ? */)) {\n if (this.options.ecmaVersion >= 16) {\n var addModifiers = this.regexp_eatModifiers(state);\n var hasHyphen = state.eat(0x2D /* - */);\n if (addModifiers || hasHyphen) {\n for (var i = 0; i < addModifiers.length; i++) {\n var modifier = addModifiers.charAt(i);\n if (addModifiers.indexOf(modifier, i + 1) > -1) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n if (hasHyphen) {\n var removeModifiers = this.regexp_eatModifiers(state);\n if (!addModifiers && !removeModifiers && state.current() === 0x3A /* : */) {\n state.raise(\"Invalid regular expression modifiers\");\n }\n for (var i$1 = 0; i$1 < removeModifiers.length; i$1++) {\n var modifier$1 = removeModifiers.charAt(i$1);\n if (\n removeModifiers.indexOf(modifier$1, i$1 + 1) > -1 ||\n addModifiers.indexOf(modifier$1) > -1\n ) {\n state.raise(\"Duplicate regular expression modifiers\");\n }\n }\n }\n }\n }\n if (state.eat(0x3A /* : */)) {\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n return true\n }\n state.raise(\"Unterminated group\");\n }\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatCapturingGroup = function(state) {\n if (state.eat(0x28 /* ( */)) {\n if (this.options.ecmaVersion >= 9) {\n this.regexp_groupSpecifier(state);\n } else if (state.current() === 0x3F /* ? */) {\n state.raise(\"Invalid group\");\n }\n this.regexp_disjunction(state);\n if (state.eat(0x29 /* ) */)) {\n state.numCapturingParens += 1;\n return true\n }\n state.raise(\"Unterminated group\");\n }\n return false\n};\n// RegularExpressionModifiers ::\n// [empty]\n// RegularExpressionModifiers RegularExpressionModifier\npp$1.regexp_eatModifiers = function(state) {\n var modifiers = \"\";\n var ch = 0;\n while ((ch = state.current()) !== -1 && isRegularExpressionModifier(ch)) {\n modifiers += codePointToString(ch);\n state.advance();\n }\n return modifiers\n};\n// RegularExpressionModifier :: one of\n// `i` `m` `s`\nfunction isRegularExpressionModifier(ch) {\n return ch === 0x69 /* i */ || ch === 0x6d /* m */ || ch === 0x73 /* s */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom\npp$1.regexp_eatExtendedAtom = function(state) {\n return (\n state.eat(0x2E /* . */) ||\n this.regexp_eatReverseSolidusAtomEscape(state) ||\n this.regexp_eatCharacterClass(state) ||\n this.regexp_eatUncapturingGroup(state) ||\n this.regexp_eatCapturingGroup(state) ||\n this.regexp_eatInvalidBracedQuantifier(state) ||\n this.regexp_eatExtendedPatternCharacter(state)\n )\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier\npp$1.regexp_eatInvalidBracedQuantifier = function(state) {\n if (this.regexp_eatBracedQuantifier(state, true)) {\n state.raise(\"Nothing to repeat\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter\npp$1.regexp_eatSyntaxCharacter = function(state) {\n var ch = state.current();\n if (isSyntaxCharacter(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\nfunction isSyntaxCharacter(ch) {\n return (\n ch === 0x24 /* $ */ ||\n ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ ||\n ch === 0x2E /* . */ ||\n ch === 0x3F /* ? */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter\n// But eat eager.\npp$1.regexp_eatPatternCharacters = function(state) {\n var start = state.pos;\n var ch = 0;\n while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) {\n state.advance();\n }\n return state.pos !== start\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter\npp$1.regexp_eatExtendedPatternCharacter = function(state) {\n var ch = state.current();\n if (\n ch !== -1 &&\n ch !== 0x24 /* $ */ &&\n !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) &&\n ch !== 0x2E /* . */ &&\n ch !== 0x3F /* ? */ &&\n ch !== 0x5B /* [ */ &&\n ch !== 0x5E /* ^ */ &&\n ch !== 0x7C /* | */\n ) {\n state.advance();\n return true\n }\n return false\n};\n\n// GroupSpecifier ::\n// [empty]\n// `?` GroupName\npp$1.regexp_groupSpecifier = function(state) {\n if (state.eat(0x3F /* ? */)) {\n if (!this.regexp_eatGroupName(state)) { state.raise(\"Invalid group\"); }\n var trackDisjunction = this.options.ecmaVersion >= 16;\n var known = state.groupNames[state.lastStringValue];\n if (known) {\n if (trackDisjunction) {\n for (var i = 0, list = known; i < list.length; i += 1) {\n var altID = list[i];\n\n if (!altID.separatedFrom(state.branchID))\n { state.raise(\"Duplicate capture group name\"); }\n }\n } else {\n state.raise(\"Duplicate capture group name\");\n }\n }\n if (trackDisjunction) {\n (known || (state.groupNames[state.lastStringValue] = [])).push(state.branchID);\n } else {\n state.groupNames[state.lastStringValue] = true;\n }\n }\n};\n\n// GroupName ::\n// `<` RegExpIdentifierName `>`\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatGroupName = function(state) {\n state.lastStringValue = \"\";\n if (state.eat(0x3C /* < */)) {\n if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) {\n return true\n }\n state.raise(\"Invalid capture group name\");\n }\n return false\n};\n\n// RegExpIdentifierName ::\n// RegExpIdentifierStart\n// RegExpIdentifierName RegExpIdentifierPart\n// Note: this updates `state.lastStringValue` property with the eaten name.\npp$1.regexp_eatRegExpIdentifierName = function(state) {\n state.lastStringValue = \"\";\n if (this.regexp_eatRegExpIdentifierStart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n while (this.regexp_eatRegExpIdentifierPart(state)) {\n state.lastStringValue += codePointToString(state.lastIntValue);\n }\n return true\n }\n return false\n};\n\n// RegExpIdentifierStart ::\n// UnicodeIDStart\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\npp$1.regexp_eatRegExpIdentifierStart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierStart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierStart(ch) {\n return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */\n}\n\n// RegExpIdentifierPart ::\n// UnicodeIDContinue\n// `$`\n// `_`\n// `\\` RegExpUnicodeEscapeSequence[+U]\n// <ZWNJ>\n// <ZWJ>\npp$1.regexp_eatRegExpIdentifierPart = function(state) {\n var start = state.pos;\n var forceU = this.options.ecmaVersion >= 11;\n var ch = state.current(forceU);\n state.advance(forceU);\n\n if (ch === 0x5C /* \\ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) {\n ch = state.lastIntValue;\n }\n if (isRegExpIdentifierPart(ch)) {\n state.lastIntValue = ch;\n return true\n }\n\n state.pos = start;\n return false\n};\nfunction isRegExpIdentifierPart(ch) {\n return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* <ZWNJ> */ || ch === 0x200D /* <ZWJ> */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape\npp$1.regexp_eatAtomEscape = function(state) {\n if (\n this.regexp_eatBackReference(state) ||\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state) ||\n (state.switchN && this.regexp_eatKGroupName(state))\n ) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n if (state.current() === 0x63 /* c */) {\n state.raise(\"Invalid unicode escape\");\n }\n state.raise(\"Invalid escape\");\n }\n return false\n};\npp$1.regexp_eatBackReference = function(state) {\n var start = state.pos;\n if (this.regexp_eatDecimalEscape(state)) {\n var n = state.lastIntValue;\n if (state.switchU) {\n // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape\n if (n > state.maxBackReference) {\n state.maxBackReference = n;\n }\n return true\n }\n if (n <= state.numCapturingParens) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatKGroupName = function(state) {\n if (state.eat(0x6B /* k */)) {\n if (this.regexp_eatGroupName(state)) {\n state.backReferenceNames.push(state.lastStringValue);\n return true\n }\n state.raise(\"Invalid named reference\");\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape\npp$1.regexp_eatCharacterEscape = function(state) {\n return (\n this.regexp_eatControlEscape(state) ||\n this.regexp_eatCControlLetter(state) ||\n this.regexp_eatZero(state) ||\n this.regexp_eatHexEscapeSequence(state) ||\n this.regexp_eatRegExpUnicodeEscapeSequence(state, false) ||\n (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) ||\n this.regexp_eatIdentityEscape(state)\n )\n};\npp$1.regexp_eatCControlLetter = function(state) {\n var start = state.pos;\n if (state.eat(0x63 /* c */)) {\n if (this.regexp_eatControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n return false\n};\npp$1.regexp_eatZero = function(state) {\n if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) {\n state.lastIntValue = 0;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape\npp$1.regexp_eatControlEscape = function(state) {\n var ch = state.current();\n if (ch === 0x74 /* t */) {\n state.lastIntValue = 0x09; /* \\t */\n state.advance();\n return true\n }\n if (ch === 0x6E /* n */) {\n state.lastIntValue = 0x0A; /* \\n */\n state.advance();\n return true\n }\n if (ch === 0x76 /* v */) {\n state.lastIntValue = 0x0B; /* \\v */\n state.advance();\n return true\n }\n if (ch === 0x66 /* f */) {\n state.lastIntValue = 0x0C; /* \\f */\n state.advance();\n return true\n }\n if (ch === 0x72 /* r */) {\n state.lastIntValue = 0x0D; /* \\r */\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter\npp$1.regexp_eatControlLetter = function(state) {\n var ch = state.current();\n if (isControlLetter(ch)) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\nfunction isControlLetter(ch) {\n return (\n (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) ||\n (ch >= 0x61 /* a */ && ch <= 0x7A /* z */)\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence\npp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) {\n if ( forceU === void 0 ) forceU = false;\n\n var start = state.pos;\n var switchU = forceU || state.switchU;\n\n if (state.eat(0x75 /* u */)) {\n if (this.regexp_eatFixedHexDigits(state, 4)) {\n var lead = state.lastIntValue;\n if (switchU && lead >= 0xD800 && lead <= 0xDBFF) {\n var leadSurrogateEnd = state.pos;\n if (state.eat(0x5C /* \\ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) {\n var trail = state.lastIntValue;\n if (trail >= 0xDC00 && trail <= 0xDFFF) {\n state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;\n return true\n }\n }\n state.pos = leadSurrogateEnd;\n state.lastIntValue = lead;\n }\n return true\n }\n if (\n switchU &&\n state.eat(0x7B /* { */) &&\n this.regexp_eatHexDigits(state) &&\n state.eat(0x7D /* } */) &&\n isValidUnicode(state.lastIntValue)\n ) {\n return true\n }\n if (switchU) {\n state.raise(\"Invalid unicode escape\");\n }\n state.pos = start;\n }\n\n return false\n};\nfunction isValidUnicode(ch) {\n return ch >= 0 && ch <= 0x10FFFF\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape\npp$1.regexp_eatIdentityEscape = function(state) {\n if (state.switchU) {\n if (this.regexp_eatSyntaxCharacter(state)) {\n return true\n }\n if (state.eat(0x2F /* / */)) {\n state.lastIntValue = 0x2F; /* / */\n return true\n }\n return false\n }\n\n var ch = state.current();\n if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape\npp$1.regexp_eatDecimalEscape = function(state) {\n state.lastIntValue = 0;\n var ch = state.current();\n if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) {\n do {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */)\n return true\n }\n return false\n};\n\n// Return values used by character set parsing methods, needed to\n// forbid negation of sets that can match strings.\nvar CharSetNone = 0; // Nothing parsed\nvar CharSetOk = 1; // Construct parsed, cannot contain strings\nvar CharSetString = 2; // Construct parsed, can contain strings\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape\npp$1.regexp_eatCharacterClassEscape = function(state) {\n var ch = state.current();\n\n if (isCharacterClassEscape(ch)) {\n state.lastIntValue = -1;\n state.advance();\n return CharSetOk\n }\n\n var negate = false;\n if (\n state.switchU &&\n this.options.ecmaVersion >= 9 &&\n ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */)\n ) {\n state.lastIntValue = -1;\n state.advance();\n var result;\n if (\n state.eat(0x7B /* { */) &&\n (result = this.regexp_eatUnicodePropertyValueExpression(state)) &&\n state.eat(0x7D /* } */)\n ) {\n if (negate && result === CharSetString) { state.raise(\"Invalid property name\"); }\n return result\n }\n state.raise(\"Invalid property name\");\n }\n\n return CharSetNone\n};\n\nfunction isCharacterClassEscape(ch) {\n return (\n ch === 0x64 /* d */ ||\n ch === 0x44 /* D */ ||\n ch === 0x73 /* s */ ||\n ch === 0x53 /* S */ ||\n ch === 0x77 /* w */ ||\n ch === 0x57 /* W */\n )\n}\n\n// UnicodePropertyValueExpression ::\n// UnicodePropertyName `=` UnicodePropertyValue\n// LoneUnicodePropertyNameOrValue\npp$1.regexp_eatUnicodePropertyValueExpression = function(state) {\n var start = state.pos;\n\n // UnicodePropertyName `=` UnicodePropertyValue\n if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) {\n var name = state.lastStringValue;\n if (this.regexp_eatUnicodePropertyValue(state)) {\n var value = state.lastStringValue;\n this.regexp_validateUnicodePropertyNameAndValue(state, name, value);\n return CharSetOk\n }\n }\n state.pos = start;\n\n // LoneUnicodePropertyNameOrValue\n if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) {\n var nameOrValue = state.lastStringValue;\n return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue)\n }\n return CharSetNone\n};\n\npp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) {\n if (!hasOwn(state.unicodeProperties.nonBinary, name))\n { state.raise(\"Invalid property name\"); }\n if (!state.unicodeProperties.nonBinary[name].test(value))\n { state.raise(\"Invalid property value\"); }\n};\n\npp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) {\n if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk }\n if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString }\n state.raise(\"Invalid property name\");\n};\n\n// UnicodePropertyName ::\n// UnicodePropertyNameCharacters\npp$1.regexp_eatUnicodePropertyName = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyNameCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\n\nfunction isUnicodePropertyNameCharacter(ch) {\n return isControlLetter(ch) || ch === 0x5F /* _ */\n}\n\n// UnicodePropertyValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatUnicodePropertyValue = function(state) {\n var ch = 0;\n state.lastStringValue = \"\";\n while (isUnicodePropertyValueCharacter(ch = state.current())) {\n state.lastStringValue += codePointToString(ch);\n state.advance();\n }\n return state.lastStringValue !== \"\"\n};\nfunction isUnicodePropertyValueCharacter(ch) {\n return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch)\n}\n\n// LoneUnicodePropertyNameOrValue ::\n// UnicodePropertyValueCharacters\npp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) {\n return this.regexp_eatUnicodePropertyValue(state)\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass\npp$1.regexp_eatCharacterClass = function(state) {\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (!state.eat(0x5D /* ] */))\n { state.raise(\"Unterminated character class\"); }\n if (negate && result === CharSetString)\n { state.raise(\"Negated character class may contain strings\"); }\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassContents\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges\npp$1.regexp_classContents = function(state) {\n if (state.current() === 0x5D /* ] */) { return CharSetOk }\n if (state.switchV) { return this.regexp_classSetExpression(state) }\n this.regexp_nonEmptyClassRanges(state);\n return CharSetOk\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges\n// https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash\npp$1.regexp_nonEmptyClassRanges = function(state) {\n while (this.regexp_eatClassAtom(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) {\n var right = state.lastIntValue;\n if (state.switchU && (left === -1 || right === -1)) {\n state.raise(\"Invalid character class\");\n }\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n }\n }\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom\n// https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash\npp$1.regexp_eatClassAtom = function(state) {\n var start = state.pos;\n\n if (state.eat(0x5C /* \\ */)) {\n if (this.regexp_eatClassEscape(state)) {\n return true\n }\n if (state.switchU) {\n // Make the same message as V8.\n var ch$1 = state.current();\n if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) {\n state.raise(\"Invalid class escape\");\n }\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n\n var ch = state.current();\n if (ch !== 0x5D /* ] */) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape\npp$1.regexp_eatClassEscape = function(state) {\n var start = state.pos;\n\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n\n if (state.switchU && state.eat(0x2D /* - */)) {\n state.lastIntValue = 0x2D; /* - */\n return true\n }\n\n if (!state.switchU && state.eat(0x63 /* c */)) {\n if (this.regexp_eatClassControlLetter(state)) {\n return true\n }\n state.pos = start;\n }\n\n return (\n this.regexp_eatCharacterClassEscape(state) ||\n this.regexp_eatCharacterEscape(state)\n )\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetExpression\n// https://tc39.es/ecma262/#prod-ClassUnion\n// https://tc39.es/ecma262/#prod-ClassIntersection\n// https://tc39.es/ecma262/#prod-ClassSubtraction\npp$1.regexp_classSetExpression = function(state) {\n var result = CharSetOk, subResult;\n if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) {\n if (subResult === CharSetString) { result = CharSetString; }\n // https://tc39.es/ecma262/#prod-ClassIntersection\n var start = state.pos;\n while (state.eatChars([0x26, 0x26] /* && */)) {\n if (\n state.current() !== 0x26 /* & */ &&\n (subResult = this.regexp_eatClassSetOperand(state))\n ) {\n if (subResult !== CharSetString) { result = CharSetOk; }\n continue\n }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n // https://tc39.es/ecma262/#prod-ClassSubtraction\n while (state.eatChars([0x2D, 0x2D] /* -- */)) {\n if (this.regexp_eatClassSetOperand(state)) { continue }\n state.raise(\"Invalid character in character class\");\n }\n if (start !== state.pos) { return result }\n } else {\n state.raise(\"Invalid character in character class\");\n }\n // https://tc39.es/ecma262/#prod-ClassUnion\n for (;;) {\n if (this.regexp_eatClassSetRange(state)) { continue }\n subResult = this.regexp_eatClassSetOperand(state);\n if (!subResult) { return result }\n if (subResult === CharSetString) { result = CharSetString; }\n }\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetRange\npp$1.regexp_eatClassSetRange = function(state) {\n var start = state.pos;\n if (this.regexp_eatClassSetCharacter(state)) {\n var left = state.lastIntValue;\n if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) {\n var right = state.lastIntValue;\n if (left !== -1 && right !== -1 && left > right) {\n state.raise(\"Range out of order in character class\");\n }\n return true\n }\n state.pos = start;\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetOperand\npp$1.regexp_eatClassSetOperand = function(state) {\n if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk }\n return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state)\n};\n\n// https://tc39.es/ecma262/#prod-NestedClass\npp$1.regexp_eatNestedClass = function(state) {\n var start = state.pos;\n if (state.eat(0x5B /* [ */)) {\n var negate = state.eat(0x5E /* ^ */);\n var result = this.regexp_classContents(state);\n if (state.eat(0x5D /* ] */)) {\n if (negate && result === CharSetString) {\n state.raise(\"Negated character class may contain strings\");\n }\n return result\n }\n state.pos = start;\n }\n if (state.eat(0x5C /* \\ */)) {\n var result$1 = this.regexp_eatCharacterClassEscape(state);\n if (result$1) {\n return result$1\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunction\npp$1.regexp_eatClassStringDisjunction = function(state) {\n var start = state.pos;\n if (state.eatChars([0x5C, 0x71] /* \\q */)) {\n if (state.eat(0x7B /* { */)) {\n var result = this.regexp_classStringDisjunctionContents(state);\n if (state.eat(0x7D /* } */)) {\n return result\n }\n } else {\n // Make the same message as V8.\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return null\n};\n\n// https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents\npp$1.regexp_classStringDisjunctionContents = function(state) {\n var result = this.regexp_classString(state);\n while (state.eat(0x7C /* | */)) {\n if (this.regexp_classString(state) === CharSetString) { result = CharSetString; }\n }\n return result\n};\n\n// https://tc39.es/ecma262/#prod-ClassString\n// https://tc39.es/ecma262/#prod-NonEmptyClassString\npp$1.regexp_classString = function(state) {\n var count = 0;\n while (this.regexp_eatClassSetCharacter(state)) { count++; }\n return count === 1 ? CharSetOk : CharSetString\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetCharacter\npp$1.regexp_eatClassSetCharacter = function(state) {\n var start = state.pos;\n if (state.eat(0x5C /* \\ */)) {\n if (\n this.regexp_eatCharacterEscape(state) ||\n this.regexp_eatClassSetReservedPunctuator(state)\n ) {\n return true\n }\n if (state.eat(0x62 /* b */)) {\n state.lastIntValue = 0x08; /* <BS> */\n return true\n }\n state.pos = start;\n return false\n }\n var ch = state.current();\n if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false }\n if (isClassSetSyntaxCharacter(ch)) { return false }\n state.advance();\n state.lastIntValue = ch;\n return true\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator\nfunction isClassSetReservedDoublePunctuatorCharacter(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch >= 0x23 /* # */ && ch <= 0x26 /* & */ ||\n ch >= 0x2A /* * */ && ch <= 0x2C /* , */ ||\n ch === 0x2E /* . */ ||\n ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ ||\n ch === 0x5E /* ^ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter\nfunction isClassSetSyntaxCharacter(ch) {\n return (\n ch === 0x28 /* ( */ ||\n ch === 0x29 /* ) */ ||\n ch === 0x2D /* - */ ||\n ch === 0x2F /* / */ ||\n ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ ||\n ch >= 0x7B /* { */ && ch <= 0x7D /* } */\n )\n}\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\npp$1.regexp_eatClassSetReservedPunctuator = function(state) {\n var ch = state.current();\n if (isClassSetReservedPunctuator(ch)) {\n state.lastIntValue = ch;\n state.advance();\n return true\n }\n return false\n};\n\n// https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator\nfunction isClassSetReservedPunctuator(ch) {\n return (\n ch === 0x21 /* ! */ ||\n ch === 0x23 /* # */ ||\n ch === 0x25 /* % */ ||\n ch === 0x26 /* & */ ||\n ch === 0x2C /* , */ ||\n ch === 0x2D /* - */ ||\n ch >= 0x3A /* : */ && ch <= 0x3E /* > */ ||\n ch === 0x40 /* @ */ ||\n ch === 0x60 /* ` */ ||\n ch === 0x7E /* ~ */\n )\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter\npp$1.regexp_eatClassControlLetter = function(state) {\n var ch = state.current();\n if (isDecimalDigit(ch) || ch === 0x5F /* _ */) {\n state.lastIntValue = ch % 0x20;\n state.advance();\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatHexEscapeSequence = function(state) {\n var start = state.pos;\n if (state.eat(0x78 /* x */)) {\n if (this.regexp_eatFixedHexDigits(state, 2)) {\n return true\n }\n if (state.switchU) {\n state.raise(\"Invalid escape\");\n }\n state.pos = start;\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits\npp$1.regexp_eatDecimalDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isDecimalDigit(ch = state.current())) {\n state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isDecimalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits\npp$1.regexp_eatHexDigits = function(state) {\n var start = state.pos;\n var ch = 0;\n state.lastIntValue = 0;\n while (isHexDigit(ch = state.current())) {\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return state.pos !== start\n};\nfunction isHexDigit(ch) {\n return (\n (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) ||\n (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) ||\n (ch >= 0x61 /* a */ && ch <= 0x66 /* f */)\n )\n}\nfunction hexToInt(ch) {\n if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) {\n return 10 + (ch - 0x41 /* A */)\n }\n if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) {\n return 10 + (ch - 0x61 /* a */)\n }\n return ch - 0x30 /* 0 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence\n// Allows only 0-377(octal) i.e. 0-255(decimal).\npp$1.regexp_eatLegacyOctalEscapeSequence = function(state) {\n if (this.regexp_eatOctalDigit(state)) {\n var n1 = state.lastIntValue;\n if (this.regexp_eatOctalDigit(state)) {\n var n2 = state.lastIntValue;\n if (n1 <= 3 && this.regexp_eatOctalDigit(state)) {\n state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue;\n } else {\n state.lastIntValue = n1 * 8 + n2;\n }\n } else {\n state.lastIntValue = n1;\n }\n return true\n }\n return false\n};\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit\npp$1.regexp_eatOctalDigit = function(state) {\n var ch = state.current();\n if (isOctalDigit(ch)) {\n state.lastIntValue = ch - 0x30; /* 0 */\n state.advance();\n return true\n }\n state.lastIntValue = 0;\n return false\n};\nfunction isOctalDigit(ch) {\n return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */\n}\n\n// https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits\n// https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit\n// And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence\npp$1.regexp_eatFixedHexDigits = function(state, length) {\n var start = state.pos;\n state.lastIntValue = 0;\n for (var i = 0; i < length; ++i) {\n var ch = state.current();\n if (!isHexDigit(ch)) {\n state.pos = start;\n return false\n }\n state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch);\n state.advance();\n }\n return true\n};\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nvar Token = function Token(p) {\n this.type = p.type;\n this.value = p.value;\n this.start = p.start;\n this.end = p.end;\n if (p.options.locations)\n { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); }\n if (p.options.ranges)\n { this.range = [p.start, p.end]; }\n};\n\n// ## Tokenizer\n\nvar pp = Parser.prototype;\n\n// Move to the next token\n\npp.next = function(ignoreEscapeSequenceInKeyword) {\n if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc)\n { this.raiseRecoverable(this.start, \"Escape sequence in keyword \" + this.type.keyword); }\n if (this.options.onToken)\n { this.options.onToken(new Token(this)); }\n\n this.lastTokEnd = this.end;\n this.lastTokStart = this.start;\n this.lastTokEndLoc = this.endLoc;\n this.lastTokStartLoc = this.startLoc;\n this.nextToken();\n};\n\npp.getToken = function() {\n this.next();\n return new Token(this)\n};\n\n// If we're in an ES6 environment, make parsers iterable\nif (typeof Symbol !== \"undefined\")\n { pp[Symbol.iterator] = function() {\n var this$1$1 = this;\n\n return {\n next: function () {\n var token = this$1$1.getToken();\n return {\n done: token.type === types$1.eof,\n value: token\n }\n }\n }\n }; }\n\n// Toggle strict mode. Re-reads the next number or string to please\n// pedantic tests (`\"use strict\"; 010;` should fail).\n\n// Read a single token, updating the parser object's token-related\n// properties.\n\npp.nextToken = function() {\n var curContext = this.curContext();\n if (!curContext || !curContext.preserveSpace) { this.skipSpace(); }\n\n this.start = this.pos;\n if (this.options.locations) { this.startLoc = this.curPosition(); }\n if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) }\n\n if (curContext.override) { return curContext.override(this) }\n else { this.readToken(this.fullCharCodeAtPos()); }\n};\n\npp.readToken = function(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\\' */)\n { return this.readWord() }\n\n return this.getTokenFromCode(code)\n};\n\npp.fullCharCodeAtPos = function() {\n var code = this.input.charCodeAt(this.pos);\n if (code <= 0xd7ff || code >= 0xdc00) { return code }\n var next = this.input.charCodeAt(this.pos + 1);\n return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00\n};\n\npp.skipBlockComment = function() {\n var startLoc = this.options.onComment && this.curPosition();\n var start = this.pos, end = this.input.indexOf(\"*/\", this.pos += 2);\n if (end === -1) { this.raise(this.pos - 2, \"Unterminated comment\"); }\n this.pos = end + 2;\n if (this.options.locations) {\n for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) {\n ++this.curLine;\n pos = this.lineStart = nextBreak;\n }\n }\n if (this.options.onComment)\n { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\npp.skipLineComment = function(startSkip) {\n var start = this.pos;\n var startLoc = this.options.onComment && this.curPosition();\n var ch = this.input.charCodeAt(this.pos += startSkip);\n while (this.pos < this.input.length && !isNewLine(ch)) {\n ch = this.input.charCodeAt(++this.pos);\n }\n if (this.options.onComment)\n { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,\n startLoc, this.curPosition()); }\n};\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments, and.\n\npp.skipSpace = function() {\n loop: while (this.pos < this.input.length) {\n var ch = this.input.charCodeAt(this.pos);\n switch (ch) {\n case 32: case 160: // ' '\n ++this.pos;\n break\n case 13:\n if (this.input.charCodeAt(this.pos + 1) === 10) {\n ++this.pos;\n }\n case 10: case 8232: case 8233:\n ++this.pos;\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n break\n case 47: // '/'\n switch (this.input.charCodeAt(this.pos + 1)) {\n case 42: // '*'\n this.skipBlockComment();\n break\n case 47:\n this.skipLineComment(2);\n break\n default:\n break loop\n }\n break\n default:\n if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {\n ++this.pos;\n } else {\n break loop\n }\n }\n }\n};\n\n// Called at the end of every token. Sets `end`, `val`, and\n// maintains `context` and `exprAllowed`, and skips the space after\n// the token, so that the next one's `start` will point at the\n// right position.\n\npp.finishToken = function(type, val) {\n this.end = this.pos;\n if (this.options.locations) { this.endLoc = this.curPosition(); }\n var prevType = this.type;\n this.type = type;\n this.value = val;\n\n this.updateContext(prevType);\n};\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\n//\npp.readToken_dot = function() {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next >= 48 && next <= 57) { return this.readNumber(true) }\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'\n this.pos += 3;\n return this.finishToken(types$1.ellipsis)\n } else {\n ++this.pos;\n return this.finishToken(types$1.dot)\n }\n};\n\npp.readToken_slash = function() { // '/'\n var next = this.input.charCodeAt(this.pos + 1);\n if (this.exprAllowed) { ++this.pos; return this.readRegexp() }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.slash, 1)\n};\n\npp.readToken_mult_modulo_exp = function(code) { // '%*'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n var tokentype = code === 42 ? types$1.star : types$1.modulo;\n\n // exponentiation operator ** and **=\n if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) {\n ++size;\n tokentype = types$1.starstar;\n next = this.input.charCodeAt(this.pos + 2);\n }\n\n if (next === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(tokentype, size)\n};\n\npp.readToken_pipe_amp = function(code) { // '|&'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (this.options.ecmaVersion >= 12) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1)\n};\n\npp.readToken_caret = function() { // '^'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.bitwiseXOR, 1)\n};\n\npp.readToken_plus_min = function(code) { // '+-'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === code) {\n if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 &&\n (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) {\n // A `-->` line comment\n this.skipLineComment(3);\n this.skipSpace();\n return this.nextToken()\n }\n return this.finishOp(types$1.incDec, 2)\n }\n if (next === 61) { return this.finishOp(types$1.assign, 2) }\n return this.finishOp(types$1.plusMin, 1)\n};\n\npp.readToken_lt_gt = function(code) { // '<>'\n var next = this.input.charCodeAt(this.pos + 1);\n var size = 1;\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2;\n if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) }\n return this.finishOp(types$1.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `<!--`, an XML-style comment that should be interpreted as a line comment\n this.skipLineComment(4);\n this.skipSpace();\n return this.nextToken()\n }\n if (next === 61) { size = 2; }\n return this.finishOp(types$1.relational, size)\n};\n\npp.readToken_eq_excl = function(code) { // '=!'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 61) { return this.finishOp(types$1.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) }\n if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'\n this.pos += 2;\n return this.finishToken(types$1.arrow)\n }\n return this.finishOp(code === 61 ? types$1.eq : types$1.prefix, 1)\n};\n\npp.readToken_question = function() { // '?'\n var ecmaVersion = this.options.ecmaVersion;\n if (ecmaVersion >= 11) {\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 46) {\n var next2 = this.input.charCodeAt(this.pos + 2);\n if (next2 < 48 || next2 > 57) { return this.finishOp(types$1.questionDot, 2) }\n }\n if (next === 63) {\n if (ecmaVersion >= 12) {\n var next2$1 = this.input.charCodeAt(this.pos + 2);\n if (next2$1 === 61) { return this.finishOp(types$1.assign, 3) }\n }\n return this.finishOp(types$1.coalesce, 2)\n }\n }\n return this.finishOp(types$1.question, 1)\n};\n\npp.readToken_numberSign = function() { // '#'\n var ecmaVersion = this.options.ecmaVersion;\n var code = 35; // '#'\n if (ecmaVersion >= 13) {\n ++this.pos;\n code = this.fullCharCodeAtPos();\n if (isIdentifierStart(code, true) || code === 92 /* '\\' */) {\n return this.finishToken(types$1.privateId, this.readWord1())\n }\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.getTokenFromCode = function(code) {\n switch (code) {\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n case 46: // '.'\n return this.readToken_dot()\n\n // Punctuation tokens.\n case 40: ++this.pos; return this.finishToken(types$1.parenL)\n case 41: ++this.pos; return this.finishToken(types$1.parenR)\n case 59: ++this.pos; return this.finishToken(types$1.semi)\n case 44: ++this.pos; return this.finishToken(types$1.comma)\n case 91: ++this.pos; return this.finishToken(types$1.bracketL)\n case 93: ++this.pos; return this.finishToken(types$1.bracketR)\n case 123: ++this.pos; return this.finishToken(types$1.braceL)\n case 125: ++this.pos; return this.finishToken(types$1.braceR)\n case 58: ++this.pos; return this.finishToken(types$1.colon)\n\n case 96: // '`'\n if (this.options.ecmaVersion < 6) { break }\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n\n case 48: // '0'\n var next = this.input.charCodeAt(this.pos + 1);\n if (next === 120 || next === 88) { return this.readRadixNumber(16) } // '0x', '0X' - hex number\n if (this.options.ecmaVersion >= 6) {\n if (next === 111 || next === 79) { return this.readRadixNumber(8) } // '0o', '0O' - octal number\n if (next === 98 || next === 66) { return this.readRadixNumber(2) } // '0b', '0B' - binary number\n }\n\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9\n return this.readNumber(false)\n\n // Quotes produce strings.\n case 34: case 39: // '\"', \"'\"\n return this.readString(code)\n\n // Operators are parsed inline in tiny state machines. '=' (61) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n case 47: // '/'\n return this.readToken_slash()\n\n case 37: case 42: // '%*'\n return this.readToken_mult_modulo_exp(code)\n\n case 124: case 38: // '|&'\n return this.readToken_pipe_amp(code)\n\n case 94: // '^'\n return this.readToken_caret()\n\n case 43: case 45: // '+-'\n return this.readToken_plus_min(code)\n\n case 60: case 62: // '<>'\n return this.readToken_lt_gt(code)\n\n case 61: case 33: // '=!'\n return this.readToken_eq_excl(code)\n\n case 63: // '?'\n return this.readToken_question()\n\n case 126: // '~'\n return this.finishOp(types$1.prefix, 1)\n\n case 35: // '#'\n return this.readToken_numberSign()\n }\n\n this.raise(this.pos, \"Unexpected character '\" + codePointToString(code) + \"'\");\n};\n\npp.finishOp = function(type, size) {\n var str = this.input.slice(this.pos, this.pos + size);\n this.pos += size;\n return this.finishToken(type, str)\n};\n\npp.readRegexp = function() {\n var escaped, inClass, start = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(start, \"Unterminated regular expression\"); }\n var ch = this.input.charAt(this.pos);\n if (lineBreak.test(ch)) { this.raise(start, \"Unterminated regular expression\"); }\n if (!escaped) {\n if (ch === \"[\") { inClass = true; }\n else if (ch === \"]\" && inClass) { inClass = false; }\n else if (ch === \"/\" && !inClass) { break }\n escaped = ch === \"\\\\\";\n } else { escaped = false; }\n ++this.pos;\n }\n var pattern = this.input.slice(start, this.pos);\n ++this.pos;\n var flagsStart = this.pos;\n var flags = this.readWord1();\n if (this.containsEsc) { this.unexpected(flagsStart); }\n\n // Validate pattern\n var state = this.regexpState || (this.regexpState = new RegExpValidationState(this));\n state.reset(start, pattern, flags);\n this.validateRegExpFlags(state);\n this.validateRegExpPattern(state);\n\n // Create Literal#value property value.\n var value = null;\n try {\n value = new RegExp(pattern, flags);\n } catch (e) {\n // ESTree requires null if it failed to instantiate RegExp object.\n // https://github.com/estree/estree/blob/a27003adf4fd7bfad44de9cef372a2eacd527b1c/es5.md#regexpliteral\n }\n\n return this.finishToken(types$1.regexp, {pattern: pattern, flags: flags, value: value})\n};\n\n// Read an integer in the given radix. Return null if zero digits\n// were read, the integer value otherwise. When `len` is given, this\n// will return `null` unless the integer has exactly `len` digits.\n\npp.readInt = function(radix, len, maybeLegacyOctalNumericLiteral) {\n // `len` is used for character escape sequences. In that case, disallow separators.\n var allowSeparators = this.options.ecmaVersion >= 12 && len === undefined;\n\n // `maybeLegacyOctalNumericLiteral` is true if it doesn't have prefix (0x,0o,0b)\n // and isn't fraction part nor exponent part. In that case, if the first digit\n // is zero then disallow separators.\n var isLegacyOctalNumericLiteral = maybeLegacyOctalNumericLiteral && this.input.charCodeAt(this.pos) === 48;\n\n var start = this.pos, total = 0, lastCode = 0;\n for (var i = 0, e = len == null ? Infinity : len; i < e; ++i, ++this.pos) {\n var code = this.input.charCodeAt(this.pos), val = (void 0);\n\n if (allowSeparators && code === 95) {\n if (isLegacyOctalNumericLiteral) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed in legacy octal numeric literals\"); }\n if (lastCode === 95) { this.raiseRecoverable(this.pos, \"Numeric separator must be exactly one underscore\"); }\n if (i === 0) { this.raiseRecoverable(this.pos, \"Numeric separator is not allowed at the first of digits\"); }\n lastCode = code;\n continue\n }\n\n if (code >= 97) { val = code - 97 + 10; } // a\n else if (code >= 65) { val = code - 65 + 10; } // A\n else if (code >= 48 && code <= 57) { val = code - 48; } // 0-9\n else { val = Infinity; }\n if (val >= radix) { break }\n lastCode = code;\n total = total * radix + val;\n }\n\n if (allowSeparators && lastCode === 95) { this.raiseRecoverable(this.pos - 1, \"Numeric separator is not allowed at the last of digits\"); }\n if (this.pos === start || len != null && this.pos - start !== len) { return null }\n\n return total\n};\n\nfunction stringToNumber(str, isLegacyOctalNumericLiteral) {\n if (isLegacyOctalNumericLiteral) {\n return parseInt(str, 8)\n }\n\n // `parseFloat(value)` stops parsing at the first numeric separator then returns a wrong value.\n return parseFloat(str.replace(/_/g, \"\"))\n}\n\nfunction stringToBigInt(str) {\n if (typeof BigInt !== \"function\") {\n return null\n }\n\n // `BigInt(value)` throws syntax error if the string contains numeric separators.\n return BigInt(str.replace(/_/g, \"\"))\n}\n\npp.readRadixNumber = function(radix) {\n var start = this.pos;\n this.pos += 2; // 0x\n var val = this.readInt(radix);\n if (val == null) { this.raise(this.start + 2, \"Expected number in radix \" + radix); }\n if (this.options.ecmaVersion >= 11 && this.input.charCodeAt(this.pos) === 110) {\n val = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n } else if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val)\n};\n\n// Read an integer, octal integer, or floating-point number.\n\npp.readNumber = function(startsWithDot) {\n var start = this.pos;\n if (!startsWithDot && this.readInt(10, undefined, true) === null) { this.raise(start, \"Invalid number\"); }\n var octal = this.pos - start >= 2 && this.input.charCodeAt(start) === 48;\n if (octal && this.strict) { this.raise(start, \"Invalid number\"); }\n var next = this.input.charCodeAt(this.pos);\n if (!octal && !startsWithDot && this.options.ecmaVersion >= 11 && next === 110) {\n var val$1 = stringToBigInt(this.input.slice(start, this.pos));\n ++this.pos;\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n return this.finishToken(types$1.num, val$1)\n }\n if (octal && /[89]/.test(this.input.slice(start, this.pos))) { octal = false; }\n if (next === 46 && !octal) { // '.'\n ++this.pos;\n this.readInt(10);\n next = this.input.charCodeAt(this.pos);\n }\n if ((next === 69 || next === 101) && !octal) { // 'eE'\n next = this.input.charCodeAt(++this.pos);\n if (next === 43 || next === 45) { ++this.pos; } // '+-'\n if (this.readInt(10) === null) { this.raise(start, \"Invalid number\"); }\n }\n if (isIdentifierStart(this.fullCharCodeAtPos())) { this.raise(this.pos, \"Identifier directly after number\"); }\n\n var val = stringToNumber(this.input.slice(start, this.pos), octal);\n return this.finishToken(types$1.num, val)\n};\n\n// Read a string value, interpreting backslash-escapes.\n\npp.readCodePoint = function() {\n var ch = this.input.charCodeAt(this.pos), code;\n\n if (ch === 123) { // '{'\n if (this.options.ecmaVersion < 6) { this.unexpected(); }\n var codePos = ++this.pos;\n code = this.readHexChar(this.input.indexOf(\"}\", this.pos) - this.pos);\n ++this.pos;\n if (code > 0x10FFFF) { this.invalidStringToken(codePos, \"Code point out of bounds\"); }\n } else {\n code = this.readHexChar(4);\n }\n return code\n};\n\npp.readString = function(quote) {\n var out = \"\", chunkStart = ++this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated string constant\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === quote) { break }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(false);\n chunkStart = this.pos;\n } else if (ch === 0x2028 || ch === 0x2029) {\n if (this.options.ecmaVersion < 10) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n if (this.options.locations) {\n this.curLine++;\n this.lineStart = this.pos;\n }\n } else {\n if (isNewLine(ch)) { this.raise(this.start, \"Unterminated string constant\"); }\n ++this.pos;\n }\n }\n out += this.input.slice(chunkStart, this.pos++);\n return this.finishToken(types$1.string, out)\n};\n\n// Reads template string tokens.\n\nvar INVALID_TEMPLATE_ESCAPE_ERROR = {};\n\npp.tryReadTemplateToken = function() {\n this.inTemplateElement = true;\n try {\n this.readTmplToken();\n } catch (err) {\n if (err === INVALID_TEMPLATE_ESCAPE_ERROR) {\n this.readInvalidTemplateToken();\n } else {\n throw err\n }\n }\n\n this.inTemplateElement = false;\n};\n\npp.invalidStringToken = function(position, message) {\n if (this.inTemplateElement && this.options.ecmaVersion >= 9) {\n throw INVALID_TEMPLATE_ESCAPE_ERROR\n } else {\n this.raise(position, message);\n }\n};\n\npp.readTmplToken = function() {\n var out = \"\", chunkStart = this.pos;\n for (;;) {\n if (this.pos >= this.input.length) { this.raise(this.start, \"Unterminated template\"); }\n var ch = this.input.charCodeAt(this.pos);\n if (ch === 96 || ch === 36 && this.input.charCodeAt(this.pos + 1) === 123) { // '`', '${'\n if (this.pos === this.start && (this.type === types$1.template || this.type === types$1.invalidTemplate)) {\n if (ch === 36) {\n this.pos += 2;\n return this.finishToken(types$1.dollarBraceL)\n } else {\n ++this.pos;\n return this.finishToken(types$1.backQuote)\n }\n }\n out += this.input.slice(chunkStart, this.pos);\n return this.finishToken(types$1.template, out)\n }\n if (ch === 92) { // '\\'\n out += this.input.slice(chunkStart, this.pos);\n out += this.readEscapedChar(true);\n chunkStart = this.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.pos);\n ++this.pos;\n switch (ch) {\n case 13:\n if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; }\n case 10:\n out += \"\\n\";\n break\n default:\n out += String.fromCharCode(ch);\n break\n }\n if (this.options.locations) {\n ++this.curLine;\n this.lineStart = this.pos;\n }\n chunkStart = this.pos;\n } else {\n ++this.pos;\n }\n }\n};\n\n// Reads a template token to search for the end, without validating any escape sequences\npp.readInvalidTemplateToken = function() {\n for (; this.pos < this.input.length; this.pos++) {\n switch (this.input[this.pos]) {\n case \"\\\\\":\n ++this.pos;\n break\n\n case \"$\":\n if (this.input[this.pos + 1] !== \"{\") { break }\n // fall through\n case \"`\":\n return this.finishToken(types$1.invalidTemplate, this.input.slice(this.start, this.pos))\n\n case \"\\r\":\n if (this.input[this.pos + 1] === \"\\n\") { ++this.pos; }\n // fall through\n case \"\\n\": case \"\\u2028\": case \"\\u2029\":\n ++this.curLine;\n this.lineStart = this.pos + 1;\n break\n }\n }\n this.raise(this.start, \"Unterminated template\");\n};\n\n// Used to read escaped characters\n\npp.readEscapedChar = function(inTemplate) {\n var ch = this.input.charCodeAt(++this.pos);\n ++this.pos;\n switch (ch) {\n case 110: return \"\\n\" // 'n' -> '\\n'\n case 114: return \"\\r\" // 'r' -> '\\r'\n case 120: return String.fromCharCode(this.readHexChar(2)) // 'x'\n case 117: return codePointToString(this.readCodePoint()) // 'u'\n case 116: return \"\\t\" // 't' -> '\\t'\n case 98: return \"\\b\" // 'b' -> '\\b'\n case 118: return \"\\u000b\" // 'v' -> '\\u000b'\n case 102: return \"\\f\" // 'f' -> '\\f'\n case 13: if (this.input.charCodeAt(this.pos) === 10) { ++this.pos; } // '\\r\\n'\n case 10: // ' \\n'\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n case 56:\n case 57:\n if (this.strict) {\n this.invalidStringToken(\n this.pos - 1,\n \"Invalid escape sequence\"\n );\n }\n if (inTemplate) {\n var codePos = this.pos - 1;\n\n this.invalidStringToken(\n codePos,\n \"Invalid escape sequence in template string\"\n );\n }\n default:\n if (ch >= 48 && ch <= 55) {\n var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0];\n var octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n this.pos += octalStr.length - 1;\n ch = this.input.charCodeAt(this.pos);\n if ((octalStr !== \"0\" || ch === 56 || ch === 57) && (this.strict || inTemplate)) {\n this.invalidStringToken(\n this.pos - 1 - octalStr.length,\n inTemplate\n ? \"Octal literal in template string\"\n : \"Octal literal in strict mode\"\n );\n }\n return String.fromCharCode(octal)\n }\n if (isNewLine(ch)) {\n // Unicode new line characters after \\ get removed from output in both\n // template literals and strings\n if (this.options.locations) { this.lineStart = this.pos; ++this.curLine; }\n return \"\"\n }\n return String.fromCharCode(ch)\n }\n};\n\n// Used to read character escape sequences ('\\x', '\\u', '\\U').\n\npp.readHexChar = function(len) {\n var codePos = this.pos;\n var n = this.readInt(16, len);\n if (n === null) { this.invalidStringToken(codePos, \"Bad character escape sequence\"); }\n return n\n};\n\n// Read an identifier, and return it as a string. Sets `this.containsEsc`\n// to whether the word contained a '\\u' escape.\n//\n// Incrementally adds only escaped chars, adding other chunks as-is\n// as a micro-optimization.\n\npp.readWord1 = function() {\n this.containsEsc = false;\n var word = \"\", first = true, chunkStart = this.pos;\n var astral = this.options.ecmaVersion >= 6;\n while (this.pos < this.input.length) {\n var ch = this.fullCharCodeAtPos();\n if (isIdentifierChar(ch, astral)) {\n this.pos += ch <= 0xffff ? 1 : 2;\n } else if (ch === 92) { // \"\\\"\n this.containsEsc = true;\n word += this.input.slice(chunkStart, this.pos);\n var escStart = this.pos;\n if (this.input.charCodeAt(++this.pos) !== 117) // \"u\"\n { this.invalidStringToken(this.pos, \"Expecting Unicode escape sequence \\\\uXXXX\"); }\n ++this.pos;\n var esc = this.readCodePoint();\n if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral))\n { this.invalidStringToken(escStart, \"Invalid Unicode escape\"); }\n word += codePointToString(esc);\n chunkStart = this.pos;\n } else {\n break\n }\n first = false;\n }\n return word + this.input.slice(chunkStart, this.pos)\n};\n\n// Read an identifier or keyword token. Will check for reserved\n// words when necessary.\n\npp.readWord = function() {\n var word = this.readWord1();\n var type = types$1.name;\n if (this.keywords.test(word)) {\n type = keywords[word];\n }\n return this.finishToken(type, word)\n};\n\n// Acorn is a tiny, fast JavaScript parser written in JavaScript.\n//\n// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and\n// various contributors and released under an MIT license.\n//\n// Git repositories for Acorn are available at\n//\n// http://marijnhaverbeke.nl/git/acorn\n// https://github.com/acornjs/acorn.git\n//\n// Please use the [github bug tracker][ghbt] to report issues.\n//\n// [ghbt]: https://github.com/acornjs/acorn/issues\n\n\nvar version = \"8.15.0\";\n\nParser.acorn = {\n Parser: Parser,\n version: version,\n defaultOptions: defaultOptions,\n Position: Position,\n SourceLocation: SourceLocation,\n getLineInfo: getLineInfo,\n Node: Node,\n TokenType: TokenType,\n tokTypes: types$1,\n keywordTypes: keywords,\n TokContext: TokContext,\n tokContexts: types,\n isIdentifierChar: isIdentifierChar,\n isIdentifierStart: isIdentifierStart,\n Token: Token,\n isNewLine: isNewLine,\n lineBreak: lineBreak,\n lineBreakG: lineBreakG,\n nonASCIIwhitespace: nonASCIIwhitespace\n};\n\n// The main exported interface (under `self.acorn` when in the\n// browser) is a `parse` function that takes a code string and returns\n// an abstract syntax tree as specified by the [ESTree spec][estree].\n//\n// [estree]: https://github.com/estree/estree\n\nfunction parse(input, options) {\n return Parser.parse(input, options)\n}\n\n// This function tries to parse a single expression at a given\n// offset in a string. Useful for parsing mixed-language formats\n// that embed JavaScript expressions.\n\nfunction parseExpressionAt(input, pos, options) {\n return Parser.parseExpressionAt(input, pos, options)\n}\n\n// Acorn is organized as a tokenizer and a recursive-descent parser.\n// The `tokenizer` export provides an interface to the tokenizer.\n\nfunction tokenizer(input, options) {\n return Parser.tokenizer(input, options)\n}\n\nexport { Node, Parser, Position, SourceLocation, TokContext, Token, TokenType, defaultOptions, getLineInfo, isIdentifierChar, isIdentifierStart, isNewLine, keywords as keywordTypes, lineBreak, lineBreakG, nonASCIIwhitespace, parse, parseExpressionAt, types as tokContexts, types$1 as tokTypes, tokenizer, version };\n", "// AST walker module for ESTree compatible trees\n\n// A simple walk is one where you simply specify callbacks to be\n// called on specific nodes. The last two arguments are optional. A\n// simple use would be\n//\n// walk.simple(myTree, {\n// Expression: function(node) { ... }\n// });\n//\n// to do something with all expressions. All ESTree node types\n// can be used to identify node types, as well as Expression and\n// Statement, which denote categories of nodes.\n//\n// The base argument can be used to pass a custom (recursive)\n// walker, and state can be used to give this walked an initial\n// state.\n\nfunction simple(node, visitors, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st); }\n })(node, state, override);\n}\n\n// An ancestor walk keeps an array of ancestor nodes (including the\n// current node) and passes them to the callback as third parameter\n// (and also as state parameter when no other state is present).\nfunction ancestor(node, visitors, baseVisitor, state, override) {\n var ancestors = [];\n if (!baseVisitor) { baseVisitor = base\n ; }(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (visitors[type]) { visitors[type](node, st || ancestors, ancestors); }\n if (isNew) { ancestors.pop(); }\n })(node, state, override);\n}\n\n// A recursive walk is one where your functions override the default\n// walkers. They can modify and replace the state parameter that's\n// threaded through the walk, and can opt how and whether to walk\n// their child nodes (by calling their third argument on these\n// nodes).\nfunction recursive(node, state, funcs, baseVisitor, override) {\n var visitor = funcs ? make(funcs, baseVisitor || undefined) : baseVisitor\n ;(function c(node, st, override) {\n visitor[override || node.type](node, st, c);\n })(node, state, override);\n}\n\nfunction makeTest(test) {\n if (typeof test === \"string\")\n { return function (type) { return type === test; } }\n else if (!test)\n { return function () { return true; } }\n else\n { return test }\n}\n\nvar Found = function Found(node, state) { this.node = node; this.state = state; };\n\n// A full walk triggers the callback on each node\nfunction full(node, callback, baseVisitor, state, override) {\n if (!baseVisitor) { baseVisitor = base; }\n var last\n ;(function c(node, st, override) {\n var type = override || node.type;\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st, type);\n last = node;\n }\n })(node, state, override);\n}\n\n// An fullAncestor walk is like an ancestor walk, but triggers\n// the callback on each node\nfunction fullAncestor(node, callback, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n var ancestors = [], last\n ;(function c(node, st, override) {\n var type = override || node.type;\n var isNew = node !== ancestors[ancestors.length - 1];\n if (isNew) { ancestors.push(node); }\n baseVisitor[type](node, st, c);\n if (last !== node) {\n callback(node, st || ancestors, ancestors, type);\n last = node;\n }\n if (isNew) { ancestors.pop(); }\n })(node, state);\n}\n\n// Find a node with a given start, end, and type (all are optional,\n// null can be used as wildcard). Returns a {node, state} object, or\n// undefined when it doesn't find a matching node.\nfunction findNodeAt(node, start, end, test, baseVisitor, state) {\n if (!baseVisitor) { baseVisitor = base; }\n test = makeTest(test);\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if ((start == null || node.start <= start) &&\n (end == null || node.end >= end))\n { baseVisitor[type](node, st, c); }\n if ((start == null || node.start === start) &&\n (end == null || node.end === end) &&\n test(type, node))\n { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the innermost node of a given type that contains the given\n// position. Interface similar to findNodeAt.\nfunction findNodeAround(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n var type = override || node.type;\n if (node.start > pos || node.end < pos) { return }\n baseVisitor[type](node, st, c);\n if (test(type, node)) { throw new Found(node, st) }\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node after a given position.\nfunction findNodeAfter(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n try {\n (function c(node, st, override) {\n if (node.end < pos) { return }\n var type = override || node.type;\n if (node.start >= pos && test(type, node)) { throw new Found(node, st) }\n baseVisitor[type](node, st, c);\n })(node, state);\n } catch (e) {\n if (e instanceof Found) { return e }\n throw e\n }\n}\n\n// Find the outermost matching node before a given position.\nfunction findNodeBefore(node, pos, test, baseVisitor, state) {\n test = makeTest(test);\n if (!baseVisitor) { baseVisitor = base; }\n var max\n ;(function c(node, st, override) {\n if (node.start > pos) { return }\n var type = override || node.type;\n if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node))\n { max = new Found(node, st); }\n baseVisitor[type](node, st, c);\n })(node, state);\n return max\n}\n\n// Used to create a custom walker. Will fill in all missing node\n// type properties with the defaults.\nfunction make(funcs, baseVisitor) {\n var visitor = Object.create(baseVisitor || base);\n for (var type in funcs) { visitor[type] = funcs[type]; }\n return visitor\n}\n\nfunction skipThrough(node, st, c) { c(node, st); }\nfunction ignore(_node, _st, _c) {}\n\n// Node walkers.\n\nvar base = {};\n\nbase.Program = base.BlockStatement = base.StaticBlock = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var stmt = list[i];\n\n c(stmt, st, \"Statement\");\n }\n};\nbase.Statement = skipThrough;\nbase.EmptyStatement = ignore;\nbase.ExpressionStatement = base.ParenthesizedExpression = base.ChainExpression =\n function (node, st, c) { return c(node.expression, st, \"Expression\"); };\nbase.IfStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Statement\");\n if (node.alternate) { c(node.alternate, st, \"Statement\"); }\n};\nbase.LabeledStatement = function (node, st, c) { return c(node.body, st, \"Statement\"); };\nbase.BreakStatement = base.ContinueStatement = ignore;\nbase.WithStatement = function (node, st, c) {\n c(node.object, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.SwitchStatement = function (node, st, c) {\n c(node.discriminant, st, \"Expression\");\n for (var i = 0, list = node.cases; i < list.length; i += 1) {\n var cs = list[i];\n\n c(cs, st);\n }\n};\nbase.SwitchCase = function (node, st, c) {\n if (node.test) { c(node.test, st, \"Expression\"); }\n for (var i = 0, list = node.consequent; i < list.length; i += 1)\n {\n var cons = list[i];\n\n c(cons, st, \"Statement\");\n }\n};\nbase.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) {\n if (node.argument) { c(node.argument, st, \"Expression\"); }\n};\nbase.ThrowStatement = base.SpreadElement =\n function (node, st, c) { return c(node.argument, st, \"Expression\"); };\nbase.TryStatement = function (node, st, c) {\n c(node.block, st, \"Statement\");\n if (node.handler) { c(node.handler, st); }\n if (node.finalizer) { c(node.finalizer, st, \"Statement\"); }\n};\nbase.CatchClause = function (node, st, c) {\n if (node.param) { c(node.param, st, \"Pattern\"); }\n c(node.body, st, \"Statement\");\n};\nbase.WhileStatement = base.DoWhileStatement = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForStatement = function (node, st, c) {\n if (node.init) { c(node.init, st, \"ForInit\"); }\n if (node.test) { c(node.test, st, \"Expression\"); }\n if (node.update) { c(node.update, st, \"Expression\"); }\n c(node.body, st, \"Statement\");\n};\nbase.ForInStatement = base.ForOfStatement = function (node, st, c) {\n c(node.left, st, \"ForInit\");\n c(node.right, st, \"Expression\");\n c(node.body, st, \"Statement\");\n};\nbase.ForInit = function (node, st, c) {\n if (node.type === \"VariableDeclaration\") { c(node, st); }\n else { c(node, st, \"Expression\"); }\n};\nbase.DebuggerStatement = ignore;\n\nbase.FunctionDeclaration = function (node, st, c) { return c(node, st, \"Function\"); };\nbase.VariableDeclaration = function (node, st, c) {\n for (var i = 0, list = node.declarations; i < list.length; i += 1)\n {\n var decl = list[i];\n\n c(decl, st);\n }\n};\nbase.VariableDeclarator = function (node, st, c) {\n c(node.id, st, \"Pattern\");\n if (node.init) { c(node.init, st, \"Expression\"); }\n};\n\nbase.Function = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n for (var i = 0, list = node.params; i < list.length; i += 1)\n {\n var param = list[i];\n\n c(param, st, \"Pattern\");\n }\n c(node.body, st, node.expression ? \"Expression\" : \"Statement\");\n};\n\nbase.Pattern = function (node, st, c) {\n if (node.type === \"Identifier\")\n { c(node, st, \"VariablePattern\"); }\n else if (node.type === \"MemberExpression\")\n { c(node, st, \"MemberPattern\"); }\n else\n { c(node, st); }\n};\nbase.VariablePattern = ignore;\nbase.MemberPattern = skipThrough;\nbase.RestElement = function (node, st, c) { return c(node.argument, st, \"Pattern\"); };\nbase.ArrayPattern = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Pattern\"); }\n }\n};\nbase.ObjectPattern = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n\n if (prop.type === \"Property\") {\n if (prop.computed) { c(prop.key, st, \"Expression\"); }\n c(prop.value, st, \"Pattern\");\n } else if (prop.type === \"RestElement\") {\n c(prop.argument, st, \"Pattern\");\n }\n }\n};\n\nbase.Expression = skipThrough;\nbase.ThisExpression = base.Super = base.MetaProperty = ignore;\nbase.ArrayExpression = function (node, st, c) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var elt = list[i];\n\n if (elt) { c(elt, st, \"Expression\"); }\n }\n};\nbase.ObjectExpression = function (node, st, c) {\n for (var i = 0, list = node.properties; i < list.length; i += 1)\n {\n var prop = list[i];\n\n c(prop, st);\n }\n};\nbase.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration;\nbase.SequenceExpression = function (node, st, c) {\n for (var i = 0, list = node.expressions; i < list.length; i += 1)\n {\n var expr = list[i];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateLiteral = function (node, st, c) {\n for (var i = 0, list = node.quasis; i < list.length; i += 1)\n {\n var quasi = list[i];\n\n c(quasi, st);\n }\n\n for (var i$1 = 0, list$1 = node.expressions; i$1 < list$1.length; i$1 += 1)\n {\n var expr = list$1[i$1];\n\n c(expr, st, \"Expression\");\n }\n};\nbase.TemplateElement = ignore;\nbase.UnaryExpression = base.UpdateExpression = function (node, st, c) {\n c(node.argument, st, \"Expression\");\n};\nbase.BinaryExpression = base.LogicalExpression = function (node, st, c) {\n c(node.left, st, \"Expression\");\n c(node.right, st, \"Expression\");\n};\nbase.AssignmentExpression = base.AssignmentPattern = function (node, st, c) {\n c(node.left, st, \"Pattern\");\n c(node.right, st, \"Expression\");\n};\nbase.ConditionalExpression = function (node, st, c) {\n c(node.test, st, \"Expression\");\n c(node.consequent, st, \"Expression\");\n c(node.alternate, st, \"Expression\");\n};\nbase.NewExpression = base.CallExpression = function (node, st, c) {\n c(node.callee, st, \"Expression\");\n if (node.arguments)\n { for (var i = 0, list = node.arguments; i < list.length; i += 1)\n {\n var arg = list[i];\n\n c(arg, st, \"Expression\");\n } }\n};\nbase.MemberExpression = function (node, st, c) {\n c(node.object, st, \"Expression\");\n if (node.computed) { c(node.property, st, \"Expression\"); }\n};\nbase.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) {\n if (node.declaration)\n { c(node.declaration, st, node.type === \"ExportNamedDeclaration\" || node.declaration.id ? \"Statement\" : \"Expression\"); }\n if (node.source) { c(node.source, st, \"Expression\"); }\n};\nbase.ExportAllDeclaration = function (node, st, c) {\n if (node.exported)\n { c(node.exported, st); }\n c(node.source, st, \"Expression\");\n};\nbase.ImportDeclaration = function (node, st, c) {\n for (var i = 0, list = node.specifiers; i < list.length; i += 1)\n {\n var spec = list[i];\n\n c(spec, st);\n }\n c(node.source, st, \"Expression\");\n};\nbase.ImportExpression = function (node, st, c) {\n c(node.source, st, \"Expression\");\n};\nbase.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.PrivateIdentifier = base.Literal = ignore;\n\nbase.TaggedTemplateExpression = function (node, st, c) {\n c(node.tag, st, \"Expression\");\n c(node.quasi, st, \"Expression\");\n};\nbase.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, \"Class\"); };\nbase.Class = function (node, st, c) {\n if (node.id) { c(node.id, st, \"Pattern\"); }\n if (node.superClass) { c(node.superClass, st, \"Expression\"); }\n c(node.body, st);\n};\nbase.ClassBody = function (node, st, c) {\n for (var i = 0, list = node.body; i < list.length; i += 1)\n {\n var elt = list[i];\n\n c(elt, st);\n }\n};\nbase.MethodDefinition = base.PropertyDefinition = base.Property = function (node, st, c) {\n if (node.computed) { c(node.key, st, \"Expression\"); }\n if (node.value) { c(node.value, st, \"Expression\"); }\n};\n\nexport { ancestor, base, findNodeAfter, findNodeAround, findNodeAt, findNodeBefore, full, fullAncestor, make, recursive, simple };\n", "// Line mapping between a cell as written and the script that runs, for the\n// debugger (#18): a breakpoint set on a cell's line must land on the line\n// esbuild's output put it on, and a paused frame must report the line the\n// user wrote. Only lines: Jupyter's breakpoints are per line.\n\nconst BASE64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst DIGIT = new Map([...BASE64].map((c, i) => [c, i]));\n\n/** One segment's VLQ fields: generated column, source, line, column, name. */\nexport function decodeVlq(segment: string): number[] {\n const values: number[] = [];\n let value = 0;\n let shift = 0;\n for (const char of segment) {\n const digit = DIGIT.get(char);\n if (digit === undefined) throw new Error(`bad base64 VLQ digit ${JSON.stringify(char)}`);\n value += (digit & 31) << shift;\n if (digit & 32) {\n shift += 5;\n continue;\n }\n values.push(value & 1 ? -(value >>> 1) : value >>> 1);\n value = 0;\n shift = 0;\n }\n return values;\n}\n\n/**\n * For each generated line (0-based), the first original line (0-based) a\n * segment on it maps to, or -1. Source-map fields are relative to the\n * previous segment's; only the original line is tracked.\n */\nexport function generatedToOriginalLines(mappings: string): number[] {\n const lines: number[] = [];\n let original = 0;\n for (const line of mappings.split(\";\")) {\n let first = -1;\n for (const segment of line.split(\",\")) {\n if (!segment) continue;\n const fields = decodeVlq(segment);\n if (fields.length >= 4) {\n original += fields[2];\n if (first === -1) first = original;\n }\n }\n lines.push(first);\n }\n return lines;\n}\n\n/** Both directions between the lines of a cell and of its script (0-based). */\nexport class LineMap {\n readonly #toOriginal: number[];\n readonly #toGenerated = new Map<number, number>();\n\n /**\n * `offset`: lines the script adds before esbuild's output (the prelude).\n * `generated`: that output. A stripper that keeps lines blanks a\n * type-only line in place and still maps it; with the output given, a\n * blank line counts as unmapped, so a breakpoint there moves down (#239).\n */\n constructor(mappings: string, offset = 0, generated?: string) {\n const blank = generated?.split(\"\\n\").map((line) => line.trim() === \"\");\n const fromEsbuild = generatedToOriginalLines(mappings).map((original, line) => blank?.[line] ? -1 : original);\n this.#toOriginal = [...Array<number>(offset).fill(-1), ...fromEsbuild];\n this.#toOriginal.forEach((original, generated) => {\n if (original !== -1 && !this.#toGenerated.has(original)) this.#toGenerated.set(original, generated);\n });\n }\n\n /** The cell line a script line came from: its own mapping, or the nearest one above. */\n toOriginal(generated: number): number {\n for (let line = Math.min(generated, this.#toOriginal.length - 1); line >= 0; line--) {\n if (this.#toOriginal[line] !== -1) return this.#toOriginal[line];\n }\n return 0;\n }\n\n /**\n * The script line for a cell line, or for the next cell line that has\n * code (a breakpoint on a blank or comment line moves down, as debuggers\n * do), or null past the end.\n */\n toGenerated(original: number): number | null {\n const last = Math.max(-1, ...this.#toGenerated.keys());\n for (let line = original; line <= last; line++) {\n const generated = this.#toGenerated.get(line);\n if (generated !== undefined) return generated;\n }\n return null;\n }\n}\n", "export var ContextualKeyword; (function (ContextualKeyword) {\n const NONE = 0; ContextualKeyword[ContextualKeyword[\"NONE\"] = NONE] = \"NONE\";\n const _abstract = NONE + 1; ContextualKeyword[ContextualKeyword[\"_abstract\"] = _abstract] = \"_abstract\";\n const _accessor = _abstract + 1; ContextualKeyword[ContextualKeyword[\"_accessor\"] = _accessor] = \"_accessor\";\n const _as = _accessor + 1; ContextualKeyword[ContextualKeyword[\"_as\"] = _as] = \"_as\";\n const _assert = _as + 1; ContextualKeyword[ContextualKeyword[\"_assert\"] = _assert] = \"_assert\";\n const _asserts = _assert + 1; ContextualKeyword[ContextualKeyword[\"_asserts\"] = _asserts] = \"_asserts\";\n const _async = _asserts + 1; ContextualKeyword[ContextualKeyword[\"_async\"] = _async] = \"_async\";\n const _await = _async + 1; ContextualKeyword[ContextualKeyword[\"_await\"] = _await] = \"_await\";\n const _checks = _await + 1; ContextualKeyword[ContextualKeyword[\"_checks\"] = _checks] = \"_checks\";\n const _constructor = _checks + 1; ContextualKeyword[ContextualKeyword[\"_constructor\"] = _constructor] = \"_constructor\";\n const _declare = _constructor + 1; ContextualKeyword[ContextualKeyword[\"_declare\"] = _declare] = \"_declare\";\n const _enum = _declare + 1; ContextualKeyword[ContextualKeyword[\"_enum\"] = _enum] = \"_enum\";\n const _exports = _enum + 1; ContextualKeyword[ContextualKeyword[\"_exports\"] = _exports] = \"_exports\";\n const _from = _exports + 1; ContextualKeyword[ContextualKeyword[\"_from\"] = _from] = \"_from\";\n const _get = _from + 1; ContextualKeyword[ContextualKeyword[\"_get\"] = _get] = \"_get\";\n const _global = _get + 1; ContextualKeyword[ContextualKeyword[\"_global\"] = _global] = \"_global\";\n const _implements = _global + 1; ContextualKeyword[ContextualKeyword[\"_implements\"] = _implements] = \"_implements\";\n const _infer = _implements + 1; ContextualKeyword[ContextualKeyword[\"_infer\"] = _infer] = \"_infer\";\n const _interface = _infer + 1; ContextualKeyword[ContextualKeyword[\"_interface\"] = _interface] = \"_interface\";\n const _is = _interface + 1; ContextualKeyword[ContextualKeyword[\"_is\"] = _is] = \"_is\";\n const _keyof = _is + 1; ContextualKeyword[ContextualKeyword[\"_keyof\"] = _keyof] = \"_keyof\";\n const _mixins = _keyof + 1; ContextualKeyword[ContextualKeyword[\"_mixins\"] = _mixins] = \"_mixins\";\n const _module = _mixins + 1; ContextualKeyword[ContextualKeyword[\"_module\"] = _module] = \"_module\";\n const _namespace = _module + 1; ContextualKeyword[ContextualKeyword[\"_namespace\"] = _namespace] = \"_namespace\";\n const _of = _namespace + 1; ContextualKeyword[ContextualKeyword[\"_of\"] = _of] = \"_of\";\n const _opaque = _of + 1; ContextualKeyword[ContextualKeyword[\"_opaque\"] = _opaque] = \"_opaque\";\n const _out = _opaque + 1; ContextualKeyword[ContextualKeyword[\"_out\"] = _out] = \"_out\";\n const _override = _out + 1; ContextualKeyword[ContextualKeyword[\"_override\"] = _override] = \"_override\";\n const _private = _override + 1; ContextualKeyword[ContextualKeyword[\"_private\"] = _private] = \"_private\";\n const _protected = _private + 1; ContextualKeyword[ContextualKeyword[\"_protected\"] = _protected] = \"_protected\";\n const _proto = _protected + 1; ContextualKeyword[ContextualKeyword[\"_proto\"] = _proto] = \"_proto\";\n const _public = _proto + 1; ContextualKeyword[ContextualKeyword[\"_public\"] = _public] = \"_public\";\n const _readonly = _public + 1; ContextualKeyword[ContextualKeyword[\"_readonly\"] = _readonly] = \"_readonly\";\n const _require = _readonly + 1; ContextualKeyword[ContextualKeyword[\"_require\"] = _require] = \"_require\";\n const _satisfies = _require + 1; ContextualKeyword[ContextualKeyword[\"_satisfies\"] = _satisfies] = \"_satisfies\";\n const _set = _satisfies + 1; ContextualKeyword[ContextualKeyword[\"_set\"] = _set] = \"_set\";\n const _static = _set + 1; ContextualKeyword[ContextualKeyword[\"_static\"] = _static] = \"_static\";\n const _symbol = _static + 1; ContextualKeyword[ContextualKeyword[\"_symbol\"] = _symbol] = \"_symbol\";\n const _type = _symbol + 1; ContextualKeyword[ContextualKeyword[\"_type\"] = _type] = \"_type\";\n const _unique = _type + 1; ContextualKeyword[ContextualKeyword[\"_unique\"] = _unique] = \"_unique\";\n const _using = _unique + 1; ContextualKeyword[ContextualKeyword[\"_using\"] = _using] = \"_using\";\n})(ContextualKeyword || (ContextualKeyword = {}));\n", "// Generated file, do not edit! Run \"yarn generate\" to re-generate this file.\n/* istanbul ignore file */\n/**\n * Enum of all token types, with bit fields to signify meaningful properties.\n */\nexport var TokenType; (function (TokenType) {\n // Precedence 0 means not an operator; otherwise it is a positive number up to 12.\n const PRECEDENCE_MASK = 0xf; TokenType[TokenType[\"PRECEDENCE_MASK\"] = PRECEDENCE_MASK] = \"PRECEDENCE_MASK\";\n const IS_KEYWORD = 1 << 4; TokenType[TokenType[\"IS_KEYWORD\"] = IS_KEYWORD] = \"IS_KEYWORD\";\n const IS_ASSIGN = 1 << 5; TokenType[TokenType[\"IS_ASSIGN\"] = IS_ASSIGN] = \"IS_ASSIGN\";\n const IS_RIGHT_ASSOCIATIVE = 1 << 6; TokenType[TokenType[\"IS_RIGHT_ASSOCIATIVE\"] = IS_RIGHT_ASSOCIATIVE] = \"IS_RIGHT_ASSOCIATIVE\";\n const IS_PREFIX = 1 << 7; TokenType[TokenType[\"IS_PREFIX\"] = IS_PREFIX] = \"IS_PREFIX\";\n const IS_POSTFIX = 1 << 8; TokenType[TokenType[\"IS_POSTFIX\"] = IS_POSTFIX] = \"IS_POSTFIX\";\n const IS_EXPRESSION_START = 1 << 9; TokenType[TokenType[\"IS_EXPRESSION_START\"] = IS_EXPRESSION_START] = \"IS_EXPRESSION_START\";\n\n const num = 512; TokenType[TokenType[\"num\"] = num] = \"num\"; // num startsExpr\n const bigint = 1536; TokenType[TokenType[\"bigint\"] = bigint] = \"bigint\"; // bigint startsExpr\n const decimal = 2560; TokenType[TokenType[\"decimal\"] = decimal] = \"decimal\"; // decimal startsExpr\n const regexp = 3584; TokenType[TokenType[\"regexp\"] = regexp] = \"regexp\"; // regexp startsExpr\n const string = 4608; TokenType[TokenType[\"string\"] = string] = \"string\"; // string startsExpr\n const name = 5632; TokenType[TokenType[\"name\"] = name] = \"name\"; // name startsExpr\n const eof = 6144; TokenType[TokenType[\"eof\"] = eof] = \"eof\"; // eof\n const bracketL = 7680; TokenType[TokenType[\"bracketL\"] = bracketL] = \"bracketL\"; // [ startsExpr\n const bracketR = 8192; TokenType[TokenType[\"bracketR\"] = bracketR] = \"bracketR\"; // ]\n const braceL = 9728; TokenType[TokenType[\"braceL\"] = braceL] = \"braceL\"; // { startsExpr\n const braceBarL = 10752; TokenType[TokenType[\"braceBarL\"] = braceBarL] = \"braceBarL\"; // {| startsExpr\n const braceR = 11264; TokenType[TokenType[\"braceR\"] = braceR] = \"braceR\"; // }\n const braceBarR = 12288; TokenType[TokenType[\"braceBarR\"] = braceBarR] = \"braceBarR\"; // |}\n const parenL = 13824; TokenType[TokenType[\"parenL\"] = parenL] = \"parenL\"; // ( startsExpr\n const parenR = 14336; TokenType[TokenType[\"parenR\"] = parenR] = \"parenR\"; // )\n const comma = 15360; TokenType[TokenType[\"comma\"] = comma] = \"comma\"; // ,\n const semi = 16384; TokenType[TokenType[\"semi\"] = semi] = \"semi\"; // ;\n const colon = 17408; TokenType[TokenType[\"colon\"] = colon] = \"colon\"; // :\n const doubleColon = 18432; TokenType[TokenType[\"doubleColon\"] = doubleColon] = \"doubleColon\"; // ::\n const dot = 19456; TokenType[TokenType[\"dot\"] = dot] = \"dot\"; // .\n const question = 20480; TokenType[TokenType[\"question\"] = question] = \"question\"; // ?\n const questionDot = 21504; TokenType[TokenType[\"questionDot\"] = questionDot] = \"questionDot\"; // ?.\n const arrow = 22528; TokenType[TokenType[\"arrow\"] = arrow] = \"arrow\"; // =>\n const template = 23552; TokenType[TokenType[\"template\"] = template] = \"template\"; // template\n const ellipsis = 24576; TokenType[TokenType[\"ellipsis\"] = ellipsis] = \"ellipsis\"; // ...\n const backQuote = 25600; TokenType[TokenType[\"backQuote\"] = backQuote] = \"backQuote\"; // `\n const dollarBraceL = 27136; TokenType[TokenType[\"dollarBraceL\"] = dollarBraceL] = \"dollarBraceL\"; // ${ startsExpr\n const at = 27648; TokenType[TokenType[\"at\"] = at] = \"at\"; // @\n const hash = 29184; TokenType[TokenType[\"hash\"] = hash] = \"hash\"; // # startsExpr\n const eq = 29728; TokenType[TokenType[\"eq\"] = eq] = \"eq\"; // = isAssign\n const assign = 30752; TokenType[TokenType[\"assign\"] = assign] = \"assign\"; // _= isAssign\n const preIncDec = 32640; TokenType[TokenType[\"preIncDec\"] = preIncDec] = \"preIncDec\"; // ++/-- prefix postfix startsExpr\n const postIncDec = 33664; TokenType[TokenType[\"postIncDec\"] = postIncDec] = \"postIncDec\"; // ++/-- prefix postfix startsExpr\n const bang = 34432; TokenType[TokenType[\"bang\"] = bang] = \"bang\"; // ! prefix startsExpr\n const tilde = 35456; TokenType[TokenType[\"tilde\"] = tilde] = \"tilde\"; // ~ prefix startsExpr\n const pipeline = 35841; TokenType[TokenType[\"pipeline\"] = pipeline] = \"pipeline\"; // |> prec:1\n const nullishCoalescing = 36866; TokenType[TokenType[\"nullishCoalescing\"] = nullishCoalescing] = \"nullishCoalescing\"; // ?? prec:2\n const logicalOR = 37890; TokenType[TokenType[\"logicalOR\"] = logicalOR] = \"logicalOR\"; // || prec:2\n const logicalAND = 38915; TokenType[TokenType[\"logicalAND\"] = logicalAND] = \"logicalAND\"; // && prec:3\n const bitwiseOR = 39940; TokenType[TokenType[\"bitwiseOR\"] = bitwiseOR] = \"bitwiseOR\"; // | prec:4\n const bitwiseXOR = 40965; TokenType[TokenType[\"bitwiseXOR\"] = bitwiseXOR] = \"bitwiseXOR\"; // ^ prec:5\n const bitwiseAND = 41990; TokenType[TokenType[\"bitwiseAND\"] = bitwiseAND] = \"bitwiseAND\"; // & prec:6\n const equality = 43015; TokenType[TokenType[\"equality\"] = equality] = \"equality\"; // ==/!= prec:7\n const lessThan = 44040; TokenType[TokenType[\"lessThan\"] = lessThan] = \"lessThan\"; // < prec:8\n const greaterThan = 45064; TokenType[TokenType[\"greaterThan\"] = greaterThan] = \"greaterThan\"; // > prec:8\n const relationalOrEqual = 46088; TokenType[TokenType[\"relationalOrEqual\"] = relationalOrEqual] = \"relationalOrEqual\"; // <=/>= prec:8\n const bitShiftL = 47113; TokenType[TokenType[\"bitShiftL\"] = bitShiftL] = \"bitShiftL\"; // << prec:9\n const bitShiftR = 48137; TokenType[TokenType[\"bitShiftR\"] = bitShiftR] = \"bitShiftR\"; // >>/>>> prec:9\n const plus = 49802; TokenType[TokenType[\"plus\"] = plus] = \"plus\"; // + prec:10 prefix startsExpr\n const minus = 50826; TokenType[TokenType[\"minus\"] = minus] = \"minus\"; // - prec:10 prefix startsExpr\n const modulo = 51723; TokenType[TokenType[\"modulo\"] = modulo] = \"modulo\"; // % prec:11 startsExpr\n const star = 52235; TokenType[TokenType[\"star\"] = star] = \"star\"; // * prec:11\n const slash = 53259; TokenType[TokenType[\"slash\"] = slash] = \"slash\"; // / prec:11\n const exponent = 54348; TokenType[TokenType[\"exponent\"] = exponent] = \"exponent\"; // ** prec:12 rightAssociative\n const jsxName = 55296; TokenType[TokenType[\"jsxName\"] = jsxName] = \"jsxName\"; // jsxName\n const jsxText = 56320; TokenType[TokenType[\"jsxText\"] = jsxText] = \"jsxText\"; // jsxText\n const jsxEmptyText = 57344; TokenType[TokenType[\"jsxEmptyText\"] = jsxEmptyText] = \"jsxEmptyText\"; // jsxEmptyText\n const jsxTagStart = 58880; TokenType[TokenType[\"jsxTagStart\"] = jsxTagStart] = \"jsxTagStart\"; // jsxTagStart startsExpr\n const jsxTagEnd = 59392; TokenType[TokenType[\"jsxTagEnd\"] = jsxTagEnd] = \"jsxTagEnd\"; // jsxTagEnd\n const typeParameterStart = 60928; TokenType[TokenType[\"typeParameterStart\"] = typeParameterStart] = \"typeParameterStart\"; // typeParameterStart startsExpr\n const nonNullAssertion = 61440; TokenType[TokenType[\"nonNullAssertion\"] = nonNullAssertion] = \"nonNullAssertion\"; // nonNullAssertion\n const _break = 62480; TokenType[TokenType[\"_break\"] = _break] = \"_break\"; // break keyword\n const _case = 63504; TokenType[TokenType[\"_case\"] = _case] = \"_case\"; // case keyword\n const _catch = 64528; TokenType[TokenType[\"_catch\"] = _catch] = \"_catch\"; // catch keyword\n const _continue = 65552; TokenType[TokenType[\"_continue\"] = _continue] = \"_continue\"; // continue keyword\n const _debugger = 66576; TokenType[TokenType[\"_debugger\"] = _debugger] = \"_debugger\"; // debugger keyword\n const _default = 67600; TokenType[TokenType[\"_default\"] = _default] = \"_default\"; // default keyword\n const _do = 68624; TokenType[TokenType[\"_do\"] = _do] = \"_do\"; // do keyword\n const _else = 69648; TokenType[TokenType[\"_else\"] = _else] = \"_else\"; // else keyword\n const _finally = 70672; TokenType[TokenType[\"_finally\"] = _finally] = \"_finally\"; // finally keyword\n const _for = 71696; TokenType[TokenType[\"_for\"] = _for] = \"_for\"; // for keyword\n const _function = 73232; TokenType[TokenType[\"_function\"] = _function] = \"_function\"; // function keyword startsExpr\n const _if = 73744; TokenType[TokenType[\"_if\"] = _if] = \"_if\"; // if keyword\n const _return = 74768; TokenType[TokenType[\"_return\"] = _return] = \"_return\"; // return keyword\n const _switch = 75792; TokenType[TokenType[\"_switch\"] = _switch] = \"_switch\"; // switch keyword\n const _throw = 77456; TokenType[TokenType[\"_throw\"] = _throw] = \"_throw\"; // throw keyword prefix startsExpr\n const _try = 77840; TokenType[TokenType[\"_try\"] = _try] = \"_try\"; // try keyword\n const _var = 78864; TokenType[TokenType[\"_var\"] = _var] = \"_var\"; // var keyword\n const _let = 79888; TokenType[TokenType[\"_let\"] = _let] = \"_let\"; // let keyword\n const _const = 80912; TokenType[TokenType[\"_const\"] = _const] = \"_const\"; // const keyword\n const _while = 81936; TokenType[TokenType[\"_while\"] = _while] = \"_while\"; // while keyword\n const _with = 82960; TokenType[TokenType[\"_with\"] = _with] = \"_with\"; // with keyword\n const _new = 84496; TokenType[TokenType[\"_new\"] = _new] = \"_new\"; // new keyword startsExpr\n const _this = 85520; TokenType[TokenType[\"_this\"] = _this] = \"_this\"; // this keyword startsExpr\n const _super = 86544; TokenType[TokenType[\"_super\"] = _super] = \"_super\"; // super keyword startsExpr\n const _class = 87568; TokenType[TokenType[\"_class\"] = _class] = \"_class\"; // class keyword startsExpr\n const _extends = 88080; TokenType[TokenType[\"_extends\"] = _extends] = \"_extends\"; // extends keyword\n const _export = 89104; TokenType[TokenType[\"_export\"] = _export] = \"_export\"; // export keyword\n const _import = 90640; TokenType[TokenType[\"_import\"] = _import] = \"_import\"; // import keyword startsExpr\n const _yield = 91664; TokenType[TokenType[\"_yield\"] = _yield] = \"_yield\"; // yield keyword startsExpr\n const _null = 92688; TokenType[TokenType[\"_null\"] = _null] = \"_null\"; // null keyword startsExpr\n const _true = 93712; TokenType[TokenType[\"_true\"] = _true] = \"_true\"; // true keyword startsExpr\n const _false = 94736; TokenType[TokenType[\"_false\"] = _false] = \"_false\"; // false keyword startsExpr\n const _in = 95256; TokenType[TokenType[\"_in\"] = _in] = \"_in\"; // in prec:8 keyword\n const _instanceof = 96280; TokenType[TokenType[\"_instanceof\"] = _instanceof] = \"_instanceof\"; // instanceof prec:8 keyword\n const _typeof = 97936; TokenType[TokenType[\"_typeof\"] = _typeof] = \"_typeof\"; // typeof keyword prefix startsExpr\n const _void = 98960; TokenType[TokenType[\"_void\"] = _void] = \"_void\"; // void keyword prefix startsExpr\n const _delete = 99984; TokenType[TokenType[\"_delete\"] = _delete] = \"_delete\"; // delete keyword prefix startsExpr\n const _async = 100880; TokenType[TokenType[\"_async\"] = _async] = \"_async\"; // async keyword startsExpr\n const _get = 101904; TokenType[TokenType[\"_get\"] = _get] = \"_get\"; // get keyword startsExpr\n const _set = 102928; TokenType[TokenType[\"_set\"] = _set] = \"_set\"; // set keyword startsExpr\n const _declare = 103952; TokenType[TokenType[\"_declare\"] = _declare] = \"_declare\"; // declare keyword startsExpr\n const _readonly = 104976; TokenType[TokenType[\"_readonly\"] = _readonly] = \"_readonly\"; // readonly keyword startsExpr\n const _abstract = 106000; TokenType[TokenType[\"_abstract\"] = _abstract] = \"_abstract\"; // abstract keyword startsExpr\n const _static = 107024; TokenType[TokenType[\"_static\"] = _static] = \"_static\"; // static keyword startsExpr\n const _public = 107536; TokenType[TokenType[\"_public\"] = _public] = \"_public\"; // public keyword\n const _private = 108560; TokenType[TokenType[\"_private\"] = _private] = \"_private\"; // private keyword\n const _protected = 109584; TokenType[TokenType[\"_protected\"] = _protected] = \"_protected\"; // protected keyword\n const _override = 110608; TokenType[TokenType[\"_override\"] = _override] = \"_override\"; // override keyword\n const _as = 112144; TokenType[TokenType[\"_as\"] = _as] = \"_as\"; // as keyword startsExpr\n const _enum = 113168; TokenType[TokenType[\"_enum\"] = _enum] = \"_enum\"; // enum keyword startsExpr\n const _type = 114192; TokenType[TokenType[\"_type\"] = _type] = \"_type\"; // type keyword startsExpr\n const _implements = 115216; TokenType[TokenType[\"_implements\"] = _implements] = \"_implements\"; // implements keyword startsExpr\n})(TokenType || (TokenType = {}));\nexport function formatTokenType(tokenType) {\n switch (tokenType) {\n case TokenType.num:\n return \"num\";\n case TokenType.bigint:\n return \"bigint\";\n case TokenType.decimal:\n return \"decimal\";\n case TokenType.regexp:\n return \"regexp\";\n case TokenType.string:\n return \"string\";\n case TokenType.name:\n return \"name\";\n case TokenType.eof:\n return \"eof\";\n case TokenType.bracketL:\n return \"[\";\n case TokenType.bracketR:\n return \"]\";\n case TokenType.braceL:\n return \"{\";\n case TokenType.braceBarL:\n return \"{|\";\n case TokenType.braceR:\n return \"}\";\n case TokenType.braceBarR:\n return \"|}\";\n case TokenType.parenL:\n return \"(\";\n case TokenType.parenR:\n return \")\";\n case TokenType.comma:\n return \",\";\n case TokenType.semi:\n return \";\";\n case TokenType.colon:\n return \":\";\n case TokenType.doubleColon:\n return \"::\";\n case TokenType.dot:\n return \".\";\n case TokenType.question:\n return \"?\";\n case TokenType.questionDot:\n return \"?.\";\n case TokenType.arrow:\n return \"=>\";\n case TokenType.template:\n return \"template\";\n case TokenType.ellipsis:\n return \"...\";\n case TokenType.backQuote:\n return \"`\";\n case TokenType.dollarBraceL:\n return \"${\";\n case TokenType.at:\n return \"@\";\n case TokenType.hash:\n return \"#\";\n case TokenType.eq:\n return \"=\";\n case TokenType.assign:\n return \"_=\";\n case TokenType.preIncDec:\n return \"++/--\";\n case TokenType.postIncDec:\n return \"++/--\";\n case TokenType.bang:\n return \"!\";\n case TokenType.tilde:\n return \"~\";\n case TokenType.pipeline:\n return \"|>\";\n case TokenType.nullishCoalescing:\n return \"??\";\n case TokenType.logicalOR:\n return \"||\";\n case TokenType.logicalAND:\n return \"&&\";\n case TokenType.bitwiseOR:\n return \"|\";\n case TokenType.bitwiseXOR:\n return \"^\";\n case TokenType.bitwiseAND:\n return \"&\";\n case TokenType.equality:\n return \"==/!=\";\n case TokenType.lessThan:\n return \"<\";\n case TokenType.greaterThan:\n return \">\";\n case TokenType.relationalOrEqual:\n return \"<=/>=\";\n case TokenType.bitShiftL:\n return \"<<\";\n case TokenType.bitShiftR:\n return \">>/>>>\";\n case TokenType.plus:\n return \"+\";\n case TokenType.minus:\n return \"-\";\n case TokenType.modulo:\n return \"%\";\n case TokenType.star:\n return \"*\";\n case TokenType.slash:\n return \"/\";\n case TokenType.exponent:\n return \"**\";\n case TokenType.jsxName:\n return \"jsxName\";\n case TokenType.jsxText:\n return \"jsxText\";\n case TokenType.jsxEmptyText:\n return \"jsxEmptyText\";\n case TokenType.jsxTagStart:\n return \"jsxTagStart\";\n case TokenType.jsxTagEnd:\n return \"jsxTagEnd\";\n case TokenType.typeParameterStart:\n return \"typeParameterStart\";\n case TokenType.nonNullAssertion:\n return \"nonNullAssertion\";\n case TokenType._break:\n return \"break\";\n case TokenType._case:\n return \"case\";\n case TokenType._catch:\n return \"catch\";\n case TokenType._continue:\n return \"continue\";\n case TokenType._debugger:\n return \"debugger\";\n case TokenType._default:\n return \"default\";\n case TokenType._do:\n return \"do\";\n case TokenType._else:\n return \"else\";\n case TokenType._finally:\n return \"finally\";\n case TokenType._for:\n return \"for\";\n case TokenType._function:\n return \"function\";\n case TokenType._if:\n return \"if\";\n case TokenType._return:\n return \"return\";\n case TokenType._switch:\n return \"switch\";\n case TokenType._throw:\n return \"throw\";\n case TokenType._try:\n return \"try\";\n case TokenType._var:\n return \"var\";\n case TokenType._let:\n return \"let\";\n case TokenType._const:\n return \"const\";\n case TokenType._while:\n return \"while\";\n case TokenType._with:\n return \"with\";\n case TokenType._new:\n return \"new\";\n case TokenType._this:\n return \"this\";\n case TokenType._super:\n return \"super\";\n case TokenType._class:\n return \"class\";\n case TokenType._extends:\n return \"extends\";\n case TokenType._export:\n return \"export\";\n case TokenType._import:\n return \"import\";\n case TokenType._yield:\n return \"yield\";\n case TokenType._null:\n return \"null\";\n case TokenType._true:\n return \"true\";\n case TokenType._false:\n return \"false\";\n case TokenType._in:\n return \"in\";\n case TokenType._instanceof:\n return \"instanceof\";\n case TokenType._typeof:\n return \"typeof\";\n case TokenType._void:\n return \"void\";\n case TokenType._delete:\n return \"delete\";\n case TokenType._async:\n return \"async\";\n case TokenType._get:\n return \"get\";\n case TokenType._set:\n return \"set\";\n case TokenType._declare:\n return \"declare\";\n case TokenType._readonly:\n return \"readonly\";\n case TokenType._abstract:\n return \"abstract\";\n case TokenType._static:\n return \"static\";\n case TokenType._public:\n return \"public\";\n case TokenType._private:\n return \"private\";\n case TokenType._protected:\n return \"protected\";\n case TokenType._override:\n return \"override\";\n case TokenType._as:\n return \"as\";\n case TokenType._enum:\n return \"enum\";\n case TokenType._type:\n return \"type\";\n case TokenType._implements:\n return \"implements\";\n default:\n return \"\";\n }\n}\n", "\nimport {ContextualKeyword} from \"./keywords\";\nimport { TokenType as tt} from \"./types\";\n\nexport class Scope {\n \n \n \n\n constructor(startTokenIndex, endTokenIndex, isFunctionScope) {\n this.startTokenIndex = startTokenIndex;\n this.endTokenIndex = endTokenIndex;\n this.isFunctionScope = isFunctionScope;\n }\n}\n\nexport class StateSnapshot {\n constructor(\n potentialArrowAt,\n noAnonFunctionType,\n inDisallowConditionalTypesContext,\n tokensLength,\n scopesLength,\n pos,\n type,\n contextualKeyword,\n start,\n end,\n isType,\n scopeDepth,\n error,\n ) {;this.potentialArrowAt = potentialArrowAt;this.noAnonFunctionType = noAnonFunctionType;this.inDisallowConditionalTypesContext = inDisallowConditionalTypesContext;this.tokensLength = tokensLength;this.scopesLength = scopesLength;this.pos = pos;this.type = type;this.contextualKeyword = contextualKeyword;this.start = start;this.end = end;this.isType = isType;this.scopeDepth = scopeDepth;this.error = error;}\n}\n\nexport default class State {constructor() { State.prototype.__init.call(this);State.prototype.__init2.call(this);State.prototype.__init3.call(this);State.prototype.__init4.call(this);State.prototype.__init5.call(this);State.prototype.__init6.call(this);State.prototype.__init7.call(this);State.prototype.__init8.call(this);State.prototype.__init9.call(this);State.prototype.__init10.call(this);State.prototype.__init11.call(this);State.prototype.__init12.call(this);State.prototype.__init13.call(this); }\n // Used to signify the start of a potential arrow function\n __init() {this.potentialArrowAt = -1}\n\n // Used by Flow to handle an edge case involving function type parsing.\n __init2() {this.noAnonFunctionType = false}\n\n // Used by TypeScript to handle ambiguities when parsing conditional types.\n __init3() {this.inDisallowConditionalTypesContext = false}\n\n // Token store.\n __init4() {this.tokens = []}\n\n // Array of all observed scopes, ordered by their ending position.\n __init5() {this.scopes = []}\n\n // The current position of the tokenizer in the input.\n __init6() {this.pos = 0}\n\n // Information about the current token.\n __init7() {this.type = tt.eof}\n __init8() {this.contextualKeyword = ContextualKeyword.NONE}\n __init9() {this.start = 0}\n __init10() {this.end = 0}\n\n __init11() {this.isType = false}\n __init12() {this.scopeDepth = 0}\n\n /**\n * If the parser is in an error state, then the token is always tt.eof and all functions can\n * keep executing but should be written so they don't get into an infinite loop in this situation.\n *\n * This approach, combined with the ability to snapshot and restore state, allows us to implement\n * backtracking without exceptions and without needing to explicitly propagate error states\n * everywhere.\n */\n __init13() {this.error = null}\n\n snapshot() {\n return new StateSnapshot(\n this.potentialArrowAt,\n this.noAnonFunctionType,\n this.inDisallowConditionalTypesContext,\n this.tokens.length,\n this.scopes.length,\n this.pos,\n this.type,\n this.contextualKeyword,\n this.start,\n this.end,\n this.isType,\n this.scopeDepth,\n this.error,\n );\n }\n\n restoreFromSnapshot(snapshot) {\n this.potentialArrowAt = snapshot.potentialArrowAt;\n this.noAnonFunctionType = snapshot.noAnonFunctionType;\n this.inDisallowConditionalTypesContext = snapshot.inDisallowConditionalTypesContext;\n this.tokens.length = snapshot.tokensLength;\n this.scopes.length = snapshot.scopesLength;\n this.pos = snapshot.pos;\n this.type = snapshot.type;\n this.contextualKeyword = snapshot.contextualKeyword;\n this.start = snapshot.start;\n this.end = snapshot.end;\n this.isType = snapshot.isType;\n this.scopeDepth = snapshot.scopeDepth;\n this.error = snapshot.error;\n }\n}\n", "export var charCodes; (function (charCodes) {\n const backSpace = 8; charCodes[charCodes[\"backSpace\"] = backSpace] = \"backSpace\";\n const lineFeed = 10; charCodes[charCodes[\"lineFeed\"] = lineFeed] = \"lineFeed\"; // '\\n'\n const tab = 9; charCodes[charCodes[\"tab\"] = tab] = \"tab\"; // '\\t'\n const carriageReturn = 13; charCodes[charCodes[\"carriageReturn\"] = carriageReturn] = \"carriageReturn\"; // '\\r'\n const shiftOut = 14; charCodes[charCodes[\"shiftOut\"] = shiftOut] = \"shiftOut\";\n const space = 32; charCodes[charCodes[\"space\"] = space] = \"space\";\n const exclamationMark = 33; charCodes[charCodes[\"exclamationMark\"] = exclamationMark] = \"exclamationMark\"; // '!'\n const quotationMark = 34; charCodes[charCodes[\"quotationMark\"] = quotationMark] = \"quotationMark\"; // '\"'\n const numberSign = 35; charCodes[charCodes[\"numberSign\"] = numberSign] = \"numberSign\"; // '#'\n const dollarSign = 36; charCodes[charCodes[\"dollarSign\"] = dollarSign] = \"dollarSign\"; // '$'\n const percentSign = 37; charCodes[charCodes[\"percentSign\"] = percentSign] = \"percentSign\"; // '%'\n const ampersand = 38; charCodes[charCodes[\"ampersand\"] = ampersand] = \"ampersand\"; // '&'\n const apostrophe = 39; charCodes[charCodes[\"apostrophe\"] = apostrophe] = \"apostrophe\"; // '''\n const leftParenthesis = 40; charCodes[charCodes[\"leftParenthesis\"] = leftParenthesis] = \"leftParenthesis\"; // '('\n const rightParenthesis = 41; charCodes[charCodes[\"rightParenthesis\"] = rightParenthesis] = \"rightParenthesis\"; // ')'\n const asterisk = 42; charCodes[charCodes[\"asterisk\"] = asterisk] = \"asterisk\"; // '*'\n const plusSign = 43; charCodes[charCodes[\"plusSign\"] = plusSign] = \"plusSign\"; // '+'\n const comma = 44; charCodes[charCodes[\"comma\"] = comma] = \"comma\"; // ','\n const dash = 45; charCodes[charCodes[\"dash\"] = dash] = \"dash\"; // '-'\n const dot = 46; charCodes[charCodes[\"dot\"] = dot] = \"dot\"; // '.'\n const slash = 47; charCodes[charCodes[\"slash\"] = slash] = \"slash\"; // '/'\n const digit0 = 48; charCodes[charCodes[\"digit0\"] = digit0] = \"digit0\"; // '0'\n const digit1 = 49; charCodes[charCodes[\"digit1\"] = digit1] = \"digit1\"; // '1'\n const digit2 = 50; charCodes[charCodes[\"digit2\"] = digit2] = \"digit2\"; // '2'\n const digit3 = 51; charCodes[charCodes[\"digit3\"] = digit3] = \"digit3\"; // '3'\n const digit4 = 52; charCodes[charCodes[\"digit4\"] = digit4] = \"digit4\"; // '4'\n const digit5 = 53; charCodes[charCodes[\"digit5\"] = digit5] = \"digit5\"; // '5'\n const digit6 = 54; charCodes[charCodes[\"digit6\"] = digit6] = \"digit6\"; // '6'\n const digit7 = 55; charCodes[charCodes[\"digit7\"] = digit7] = \"digit7\"; // '7'\n const digit8 = 56; charCodes[charCodes[\"digit8\"] = digit8] = \"digit8\"; // '8'\n const digit9 = 57; charCodes[charCodes[\"digit9\"] = digit9] = \"digit9\"; // '9'\n const colon = 58; charCodes[charCodes[\"colon\"] = colon] = \"colon\"; // ':'\n const semicolon = 59; charCodes[charCodes[\"semicolon\"] = semicolon] = \"semicolon\"; // ';'\n const lessThan = 60; charCodes[charCodes[\"lessThan\"] = lessThan] = \"lessThan\"; // '<'\n const equalsTo = 61; charCodes[charCodes[\"equalsTo\"] = equalsTo] = \"equalsTo\"; // '='\n const greaterThan = 62; charCodes[charCodes[\"greaterThan\"] = greaterThan] = \"greaterThan\"; // '>'\n const questionMark = 63; charCodes[charCodes[\"questionMark\"] = questionMark] = \"questionMark\"; // '?'\n const atSign = 64; charCodes[charCodes[\"atSign\"] = atSign] = \"atSign\"; // '@'\n const uppercaseA = 65; charCodes[charCodes[\"uppercaseA\"] = uppercaseA] = \"uppercaseA\"; // 'A'\n const uppercaseB = 66; charCodes[charCodes[\"uppercaseB\"] = uppercaseB] = \"uppercaseB\"; // 'B'\n const uppercaseC = 67; charCodes[charCodes[\"uppercaseC\"] = uppercaseC] = \"uppercaseC\"; // 'C'\n const uppercaseD = 68; charCodes[charCodes[\"uppercaseD\"] = uppercaseD] = \"uppercaseD\"; // 'D'\n const uppercaseE = 69; charCodes[charCodes[\"uppercaseE\"] = uppercaseE] = \"uppercaseE\"; // 'E'\n const uppercaseF = 70; charCodes[charCodes[\"uppercaseF\"] = uppercaseF] = \"uppercaseF\"; // 'F'\n const uppercaseG = 71; charCodes[charCodes[\"uppercaseG\"] = uppercaseG] = \"uppercaseG\"; // 'G'\n const uppercaseH = 72; charCodes[charCodes[\"uppercaseH\"] = uppercaseH] = \"uppercaseH\"; // 'H'\n const uppercaseI = 73; charCodes[charCodes[\"uppercaseI\"] = uppercaseI] = \"uppercaseI\"; // 'I'\n const uppercaseJ = 74; charCodes[charCodes[\"uppercaseJ\"] = uppercaseJ] = \"uppercaseJ\"; // 'J'\n const uppercaseK = 75; charCodes[charCodes[\"uppercaseK\"] = uppercaseK] = \"uppercaseK\"; // 'K'\n const uppercaseL = 76; charCodes[charCodes[\"uppercaseL\"] = uppercaseL] = \"uppercaseL\"; // 'L'\n const uppercaseM = 77; charCodes[charCodes[\"uppercaseM\"] = uppercaseM] = \"uppercaseM\"; // 'M'\n const uppercaseN = 78; charCodes[charCodes[\"uppercaseN\"] = uppercaseN] = \"uppercaseN\"; // 'N'\n const uppercaseO = 79; charCodes[charCodes[\"uppercaseO\"] = uppercaseO] = \"uppercaseO\"; // 'O'\n const uppercaseP = 80; charCodes[charCodes[\"uppercaseP\"] = uppercaseP] = \"uppercaseP\"; // 'P'\n const uppercaseQ = 81; charCodes[charCodes[\"uppercaseQ\"] = uppercaseQ] = \"uppercaseQ\"; // 'Q'\n const uppercaseR = 82; charCodes[charCodes[\"uppercaseR\"] = uppercaseR] = \"uppercaseR\"; // 'R'\n const uppercaseS = 83; charCodes[charCodes[\"uppercaseS\"] = uppercaseS] = \"uppercaseS\"; // 'S'\n const uppercaseT = 84; charCodes[charCodes[\"uppercaseT\"] = uppercaseT] = \"uppercaseT\"; // 'T'\n const uppercaseU = 85; charCodes[charCodes[\"uppercaseU\"] = uppercaseU] = \"uppercaseU\"; // 'U'\n const uppercaseV = 86; charCodes[charCodes[\"uppercaseV\"] = uppercaseV] = \"uppercaseV\"; // 'V'\n const uppercaseW = 87; charCodes[charCodes[\"uppercaseW\"] = uppercaseW] = \"uppercaseW\"; // 'W'\n const uppercaseX = 88; charCodes[charCodes[\"uppercaseX\"] = uppercaseX] = \"uppercaseX\"; // 'X'\n const uppercaseY = 89; charCodes[charCodes[\"uppercaseY\"] = uppercaseY] = \"uppercaseY\"; // 'Y'\n const uppercaseZ = 90; charCodes[charCodes[\"uppercaseZ\"] = uppercaseZ] = \"uppercaseZ\"; // 'Z'\n const leftSquareBracket = 91; charCodes[charCodes[\"leftSquareBracket\"] = leftSquareBracket] = \"leftSquareBracket\"; // '['\n const backslash = 92; charCodes[charCodes[\"backslash\"] = backslash] = \"backslash\"; // '\\ '\n const rightSquareBracket = 93; charCodes[charCodes[\"rightSquareBracket\"] = rightSquareBracket] = \"rightSquareBracket\"; // ']'\n const caret = 94; charCodes[charCodes[\"caret\"] = caret] = \"caret\"; // '^'\n const underscore = 95; charCodes[charCodes[\"underscore\"] = underscore] = \"underscore\"; // '_'\n const graveAccent = 96; charCodes[charCodes[\"graveAccent\"] = graveAccent] = \"graveAccent\"; // '`'\n const lowercaseA = 97; charCodes[charCodes[\"lowercaseA\"] = lowercaseA] = \"lowercaseA\"; // 'a'\n const lowercaseB = 98; charCodes[charCodes[\"lowercaseB\"] = lowercaseB] = \"lowercaseB\"; // 'b'\n const lowercaseC = 99; charCodes[charCodes[\"lowercaseC\"] = lowercaseC] = \"lowercaseC\"; // 'c'\n const lowercaseD = 100; charCodes[charCodes[\"lowercaseD\"] = lowercaseD] = \"lowercaseD\"; // 'd'\n const lowercaseE = 101; charCodes[charCodes[\"lowercaseE\"] = lowercaseE] = \"lowercaseE\"; // 'e'\n const lowercaseF = 102; charCodes[charCodes[\"lowercaseF\"] = lowercaseF] = \"lowercaseF\"; // 'f'\n const lowercaseG = 103; charCodes[charCodes[\"lowercaseG\"] = lowercaseG] = \"lowercaseG\"; // 'g'\n const lowercaseH = 104; charCodes[charCodes[\"lowercaseH\"] = lowercaseH] = \"lowercaseH\"; // 'h'\n const lowercaseI = 105; charCodes[charCodes[\"lowercaseI\"] = lowercaseI] = \"lowercaseI\"; // 'i'\n const lowercaseJ = 106; charCodes[charCodes[\"lowercaseJ\"] = lowercaseJ] = \"lowercaseJ\"; // 'j'\n const lowercaseK = 107; charCodes[charCodes[\"lowercaseK\"] = lowercaseK] = \"lowercaseK\"; // 'k'\n const lowercaseL = 108; charCodes[charCodes[\"lowercaseL\"] = lowercaseL] = \"lowercaseL\"; // 'l'\n const lowercaseM = 109; charCodes[charCodes[\"lowercaseM\"] = lowercaseM] = \"lowercaseM\"; // 'm'\n const lowercaseN = 110; charCodes[charCodes[\"lowercaseN\"] = lowercaseN] = \"lowercaseN\"; // 'n'\n const lowercaseO = 111; charCodes[charCodes[\"lowercaseO\"] = lowercaseO] = \"lowercaseO\"; // 'o'\n const lowercaseP = 112; charCodes[charCodes[\"lowercaseP\"] = lowercaseP] = \"lowercaseP\"; // 'p'\n const lowercaseQ = 113; charCodes[charCodes[\"lowercaseQ\"] = lowercaseQ] = \"lowercaseQ\"; // 'q'\n const lowercaseR = 114; charCodes[charCodes[\"lowercaseR\"] = lowercaseR] = \"lowercaseR\"; // 'r'\n const lowercaseS = 115; charCodes[charCodes[\"lowercaseS\"] = lowercaseS] = \"lowercaseS\"; // 's'\n const lowercaseT = 116; charCodes[charCodes[\"lowercaseT\"] = lowercaseT] = \"lowercaseT\"; // 't'\n const lowercaseU = 117; charCodes[charCodes[\"lowercaseU\"] = lowercaseU] = \"lowercaseU\"; // 'u'\n const lowercaseV = 118; charCodes[charCodes[\"lowercaseV\"] = lowercaseV] = \"lowercaseV\"; // 'v'\n const lowercaseW = 119; charCodes[charCodes[\"lowercaseW\"] = lowercaseW] = \"lowercaseW\"; // 'w'\n const lowercaseX = 120; charCodes[charCodes[\"lowercaseX\"] = lowercaseX] = \"lowercaseX\"; // 'x'\n const lowercaseY = 121; charCodes[charCodes[\"lowercaseY\"] = lowercaseY] = \"lowercaseY\"; // 'y'\n const lowercaseZ = 122; charCodes[charCodes[\"lowercaseZ\"] = lowercaseZ] = \"lowercaseZ\"; // 'z'\n const leftCurlyBrace = 123; charCodes[charCodes[\"leftCurlyBrace\"] = leftCurlyBrace] = \"leftCurlyBrace\"; // '{'\n const verticalBar = 124; charCodes[charCodes[\"verticalBar\"] = verticalBar] = \"verticalBar\"; // '|'\n const rightCurlyBrace = 125; charCodes[charCodes[\"rightCurlyBrace\"] = rightCurlyBrace] = \"rightCurlyBrace\"; // '}'\n const tilde = 126; charCodes[charCodes[\"tilde\"] = tilde] = \"tilde\"; // '~'\n const nonBreakingSpace = 160; charCodes[charCodes[\"nonBreakingSpace\"] = nonBreakingSpace] = \"nonBreakingSpace\";\n // eslint-disable-next-line no-irregular-whitespace\n const oghamSpaceMark = 5760; charCodes[charCodes[\"oghamSpaceMark\"] = oghamSpaceMark] = \"oghamSpaceMark\"; // '\u1680'\n const lineSeparator = 8232; charCodes[charCodes[\"lineSeparator\"] = lineSeparator] = \"lineSeparator\";\n const paragraphSeparator = 8233; charCodes[charCodes[\"paragraphSeparator\"] = paragraphSeparator] = \"paragraphSeparator\";\n})(charCodes || (charCodes = {}));\n\nexport function isDigit(code) {\n return (\n (code >= charCodes.digit0 && code <= charCodes.digit9) ||\n (code >= charCodes.lowercaseA && code <= charCodes.lowercaseF) ||\n (code >= charCodes.uppercaseA && code <= charCodes.uppercaseF)\n );\n}\n", "import State from \"../tokenizer/state\";\nimport {charCodes} from \"../util/charcodes\";\n\nexport let isJSXEnabled;\nexport let isTypeScriptEnabled;\nexport let isFlowEnabled;\nexport let state;\nexport let input;\nexport let nextContextId;\n\nexport function getNextContextId() {\n return nextContextId++;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function augmentError(error) {\n if (\"pos\" in error) {\n const loc = locationForIndex(error.pos);\n error.message += ` (${loc.line}:${loc.column})`;\n error.loc = loc;\n }\n return error;\n}\n\nexport class Loc {\n \n \n constructor(line, column) {\n this.line = line;\n this.column = column;\n }\n}\n\nexport function locationForIndex(pos) {\n let line = 1;\n let column = 1;\n for (let i = 0; i < pos; i++) {\n if (input.charCodeAt(i) === charCodes.lineFeed) {\n line++;\n column = 1;\n } else {\n column++;\n }\n }\n return new Loc(line, column);\n}\n\nexport function initParser(\n inputCode,\n isJSXEnabledArg,\n isTypeScriptEnabledArg,\n isFlowEnabledArg,\n) {\n input = inputCode;\n state = new State();\n nextContextId = 1;\n isJSXEnabled = isJSXEnabledArg;\n isTypeScriptEnabled = isTypeScriptEnabledArg;\n isFlowEnabled = isFlowEnabledArg;\n}\n", "import {eat, finishToken, lookaheadTypeAndKeyword, match, nextTokenStart} from \"../tokenizer/index\";\n\nimport {formatTokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {charCodes} from \"../util/charcodes\";\nimport {input, state} from \"./base\";\n\n// ## Parser utilities\n\n// Tests whether parsed token is a contextual keyword.\nexport function isContextual(contextualKeyword) {\n return state.contextualKeyword === contextualKeyword;\n}\n\nexport function isLookaheadContextual(contextualKeyword) {\n const l = lookaheadTypeAndKeyword();\n return l.type === tt.name && l.contextualKeyword === contextualKeyword;\n}\n\n// Consumes contextual keyword if possible.\nexport function eatContextual(contextualKeyword) {\n return state.contextualKeyword === contextualKeyword && eat(tt.name);\n}\n\n// Asserts that following token is given contextual keyword.\nexport function expectContextual(contextualKeyword) {\n if (!eatContextual(contextualKeyword)) {\n unexpected();\n }\n}\n\n// Test whether a semicolon can be inserted at the current position.\nexport function canInsertSemicolon() {\n return match(tt.eof) || match(tt.braceR) || hasPrecedingLineBreak();\n}\n\nexport function hasPrecedingLineBreak() {\n const prevToken = state.tokens[state.tokens.length - 1];\n const lastTokEnd = prevToken ? prevToken.end : 0;\n for (let i = lastTokEnd; i < state.start; i++) {\n const code = input.charCodeAt(i);\n if (\n code === charCodes.lineFeed ||\n code === charCodes.carriageReturn ||\n code === 0x2028 ||\n code === 0x2029\n ) {\n return true;\n }\n }\n return false;\n}\n\nexport function hasFollowingLineBreak() {\n const nextStart = nextTokenStart();\n for (let i = state.end; i < nextStart; i++) {\n const code = input.charCodeAt(i);\n if (\n code === charCodes.lineFeed ||\n code === charCodes.carriageReturn ||\n code === 0x2028 ||\n code === 0x2029\n ) {\n return true;\n }\n }\n return false;\n}\n\nexport function isLineTerminator() {\n return eat(tt.semi) || canInsertSemicolon();\n}\n\n// Consume a semicolon, or, failing that, see if we are allowed to\n// pretend that there is a semicolon at this position.\nexport function semicolon() {\n if (!isLineTerminator()) {\n unexpected('Unexpected token, expected \";\"');\n }\n}\n\n// Expect a token of a given type. If found, consume it, otherwise,\n// raise an unexpected token error at given pos.\nexport function expect(type) {\n const matched = eat(type);\n if (!matched) {\n unexpected(`Unexpected token, expected \"${formatTokenType(type)}\"`);\n }\n}\n\n/**\n * Transition the parser to an error state. All code needs to be written to naturally unwind in this\n * state, which allows us to backtrack without exceptions and without error plumbing everywhere.\n */\nexport function unexpected(message = \"Unexpected token\", pos = state.start) {\n if (state.error) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const err = new SyntaxError(message);\n err.pos = pos;\n state.error = err;\n state.pos = input.length;\n finishToken(tt.eof);\n}\n", "import {charCodes} from \"./charcodes\";\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport const WHITESPACE_CHARS = [\n 0x0009,\n 0x000b,\n 0x000c,\n charCodes.space,\n charCodes.nonBreakingSpace,\n charCodes.oghamSpaceMark,\n 0x2000, // EN QUAD\n 0x2001, // EM QUAD\n 0x2002, // EN SPACE\n 0x2003, // EM SPACE\n 0x2004, // THREE-PER-EM SPACE\n 0x2005, // FOUR-PER-EM SPACE\n 0x2006, // SIX-PER-EM SPACE\n 0x2007, // FIGURE SPACE\n 0x2008, // PUNCTUATION SPACE\n 0x2009, // THIN SPACE\n 0x200a, // HAIR SPACE\n 0x202f, // NARROW NO-BREAK SPACE\n 0x205f, // MEDIUM MATHEMATICAL SPACE\n 0x3000, // IDEOGRAPHIC SPACE\n 0xfeff, // ZERO WIDTH NO-BREAK SPACE\n];\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const IS_WHITESPACE = new Uint8Array(65536);\nfor (const char of WHITESPACE_CHARS) {\n IS_WHITESPACE[char] = 1;\n}\n", "import {charCodes} from \"./charcodes\";\nimport {WHITESPACE_CHARS} from \"./whitespace\";\n\nfunction computeIsIdentifierChar(code) {\n if (code < 48) return code === 36;\n if (code < 58) return true;\n if (code < 65) return false;\n if (code < 91) return true;\n if (code < 97) return code === 95;\n if (code < 123) return true;\n if (code < 128) return false;\n throw new Error(\"Should not be called with non-ASCII char code.\");\n}\n\nexport const IS_IDENTIFIER_CHAR = new Uint8Array(65536);\nfor (let i = 0; i < 128; i++) {\n IS_IDENTIFIER_CHAR[i] = computeIsIdentifierChar(i) ? 1 : 0;\n}\nfor (let i = 128; i < 65536; i++) {\n IS_IDENTIFIER_CHAR[i] = 1;\n}\n// Aside from whitespace and newlines, all characters outside the ASCII space are either\n// identifier characters or invalid. Since we're not performing code validation, we can just\n// treat all invalid characters as identifier characters.\nfor (const whitespaceChar of WHITESPACE_CHARS) {\n IS_IDENTIFIER_CHAR[whitespaceChar] = 0;\n}\nIS_IDENTIFIER_CHAR[0x2028] = 0;\nIS_IDENTIFIER_CHAR[0x2029] = 0;\n\nexport const IS_IDENTIFIER_START = IS_IDENTIFIER_CHAR.slice();\nfor (let numChar = charCodes.digit0; numChar <= charCodes.digit9; numChar++) {\n IS_IDENTIFIER_START[numChar] = 0;\n}\n", "// Generated file, do not edit! Run \"yarn generate\" to re-generate this file.\nimport {ContextualKeyword} from \"./keywords\";\nimport {TokenType as tt} from \"./types\";\n\n// prettier-ignore\nexport const READ_WORD_TREE = new Int32Array([\n // \"\"\n -1, 27, 783, 918, 1755, 2376, 2862, 3483, -1, 3699, -1, 4617, 4752, 4833, 5130, 5508, 5940, -1, 6480, 6939, 7749, 8181, 8451, 8613, -1, 8829, -1,\n // \"a\"\n -1, -1, 54, 243, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 432, -1, -1, -1, 675, -1, -1, -1,\n // \"ab\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1,\n // \"abs\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, -1, -1, -1,\n // \"abst\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"abstr\"\n -1, 162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"abstra\"\n -1, -1, -1, 189, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"abstrac\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 216, -1, -1, -1, -1, -1, -1,\n // \"abstract\"\n ContextualKeyword._abstract << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ac\"\n -1, -1, -1, 270, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"acc\"\n -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"acce\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 324, -1, -1, -1, -1, -1, -1, -1,\n // \"acces\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, -1, -1,\n // \"access\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"accesso\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 405, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"accessor\"\n ContextualKeyword._accessor << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"as\"\n ContextualKeyword._as << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 459, -1, -1, -1, -1, -1, 594, -1,\n // \"ass\"\n -1, -1, -1, -1, -1, 486, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asse\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 513, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asser\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 540, -1, -1, -1, -1, -1, -1,\n // \"assert\"\n ContextualKeyword._assert << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 567, -1, -1, -1, -1, -1, -1, -1,\n // \"asserts\"\n ContextualKeyword._asserts << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asy\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 621, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"asyn\"\n -1, -1, -1, 648, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"async\"\n ContextualKeyword._async << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"aw\"\n -1, 702, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"awa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 729, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"awai\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 756, -1, -1, -1, -1, -1, -1,\n // \"await\"\n ContextualKeyword._await << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"b\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 810, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"br\"\n -1, -1, -1, -1, -1, 837, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"bre\"\n -1, 864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"brea\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 891, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"break\"\n (tt._break << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"c\"\n -1, 945, -1, -1, -1, -1, -1, -1, 1107, -1, -1, -1, 1242, -1, -1, 1350, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ca\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 972, 1026, -1, -1, -1, -1, -1, -1,\n // \"cas\"\n -1, -1, -1, -1, -1, 999, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"case\"\n (tt._case << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cat\"\n -1, -1, -1, 1053, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"catc\"\n -1, -1, -1, -1, -1, -1, -1, -1, 1080, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"catch\"\n (tt._catch << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ch\"\n -1, -1, -1, -1, -1, 1134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"che\"\n -1, -1, -1, 1161, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"chec\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"check\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1215, -1, -1, -1, -1, -1, -1, -1,\n // \"checks\"\n ContextualKeyword._checks << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cl\"\n -1, 1269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cla\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1296, -1, -1, -1, -1, -1, -1, -1,\n // \"clas\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1323, -1, -1, -1, -1, -1, -1, -1,\n // \"class\"\n (tt._class << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"co\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1377, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"con\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1404, 1620, -1, -1, -1, -1, -1, -1,\n // \"cons\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1431, -1, -1, -1, -1, -1, -1,\n // \"const\"\n (tt._const << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1458, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"constr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1485, -1, -1, -1, -1, -1,\n // \"constru\"\n -1, -1, -1, 1512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"construc\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1539, -1, -1, -1, -1, -1, -1,\n // \"construct\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1566, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"constructo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1593, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"constructor\"\n ContextualKeyword._constructor << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"cont\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 1647, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"conti\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1674, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"contin\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1701, -1, -1, -1, -1, -1,\n // \"continu\"\n -1, -1, -1, -1, -1, 1728, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"continue\"\n (tt._continue << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"d\"\n -1, -1, -1, -1, -1, 1782, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2349, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"de\"\n -1, -1, 1809, 1971, -1, -1, 2106, -1, -1, -1, -1, -1, 2241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"deb\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1836, -1, -1, -1, -1, -1,\n // \"debu\"\n -1, -1, -1, -1, -1, -1, -1, 1863, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debug\"\n -1, -1, -1, -1, -1, -1, -1, 1890, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debugg\"\n -1, -1, -1, -1, -1, 1917, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debugge\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1944, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"debugger\"\n (tt._debugger << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"dec\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1998, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"decl\"\n -1, 2025, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"decla\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2052, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"declar\"\n -1, -1, -1, -1, -1, 2079, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"declare\"\n ContextualKeyword._declare << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"def\"\n -1, 2133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"defa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2160, -1, -1, -1, -1, -1,\n // \"defau\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"defaul\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2214, -1, -1, -1, -1, -1, -1,\n // \"default\"\n (tt._default << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"del\"\n -1, -1, -1, -1, -1, 2268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"dele\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2295, -1, -1, -1, -1, -1, -1,\n // \"delet\"\n -1, -1, -1, -1, -1, 2322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"delete\"\n (tt._delete << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"do\"\n (tt._do << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"e\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2403, -1, 2484, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2565, -1, -1,\n // \"el\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2430, -1, -1, -1, -1, -1, -1, -1,\n // \"els\"\n -1, -1, -1, -1, -1, 2457, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"else\"\n (tt._else << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"en\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2511, -1, -1, -1, -1, -1,\n // \"enu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2538, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"enum\"\n ContextualKeyword._enum << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ex\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2592, -1, -1, -1, 2727, -1, -1, -1, -1, -1, -1,\n // \"exp\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2619, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"expo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2646, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"expor\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2673, -1, -1, -1, -1, -1, -1,\n // \"export\"\n (tt._export << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2700, -1, -1, -1, -1, -1, -1, -1,\n // \"exports\"\n ContextualKeyword._exports << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ext\"\n -1, -1, -1, -1, -1, 2754, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"exte\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2781, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"exten\"\n -1, -1, -1, -1, 2808, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"extend\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2835, -1, -1, -1, -1, -1, -1, -1,\n // \"extends\"\n (tt._extends << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"f\"\n -1, 2889, -1, -1, -1, -1, -1, -1, -1, 2997, -1, -1, -1, -1, -1, 3159, -1, -1, 3213, -1, -1, 3294, -1, -1, -1, -1, -1,\n // \"fa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2916, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fal\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2943, -1, -1, -1, -1, -1, -1, -1,\n // \"fals\"\n -1, -1, -1, -1, -1, 2970, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"false\"\n (tt._false << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3024, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fin\"\n -1, 3051, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fina\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3078, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"final\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"finall\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3132, -1,\n // \"finally\"\n (tt._finally << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3186, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"for\"\n (tt._for << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3240, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fro\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"from\"\n ContextualKeyword._from << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3321, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"fun\"\n -1, -1, -1, 3348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"func\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3375, -1, -1, -1, -1, -1, -1,\n // \"funct\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 3402, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"functi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3429, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"functio\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3456, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"function\"\n (tt._function << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"g\"\n -1, -1, -1, -1, -1, 3510, -1, -1, -1, -1, -1, -1, 3564, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ge\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3537, -1, -1, -1, -1, -1, -1,\n // \"get\"\n ContextualKeyword._get << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"gl\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3591, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"glo\"\n -1, -1, 3618, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"glob\"\n -1, 3645, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"globa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3672, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"global\"\n ContextualKeyword._global << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"i\"\n -1, -1, -1, -1, -1, -1, 3726, -1, -1, -1, -1, -1, -1, 3753, 4077, -1, -1, -1, -1, 4590, -1, -1, -1, -1, -1, -1, -1,\n // \"if\"\n (tt._if << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"im\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3780, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"imp\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3807, -1, -1, 3996, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impl\"\n -1, -1, -1, -1, -1, 3834, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"imple\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3861, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"implem\"\n -1, -1, -1, -1, -1, 3888, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impleme\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3915, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"implemen\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3942, -1, -1, -1, -1, -1, -1,\n // \"implement\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3969, -1, -1, -1, -1, -1, -1, -1,\n // \"implements\"\n ContextualKeyword._implements << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4023, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"impor\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4050, -1, -1, -1, -1, -1, -1,\n // \"import\"\n (tt._import << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"in\"\n (tt._in << 1) + 1, -1, -1, -1, -1, -1, 4104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4185, 4401, -1, -1, -1, -1, -1, -1,\n // \"inf\"\n -1, -1, -1, -1, -1, 4131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"infe\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4158, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"infer\"\n ContextualKeyword._infer << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ins\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4212, -1, -1, -1, -1, -1, -1,\n // \"inst\"\n -1, 4239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"insta\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instan\"\n -1, -1, -1, 4293, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instanc\"\n -1, -1, -1, -1, -1, 4320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instance\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4347, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instanceo\"\n -1, -1, -1, -1, -1, -1, 4374, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"instanceof\"\n (tt._instanceof << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"int\"\n -1, -1, -1, -1, -1, 4428, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"inte\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4455, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"inter\"\n -1, -1, -1, -1, -1, -1, 4482, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interf\"\n -1, 4509, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interfa\"\n -1, -1, -1, 4536, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interfac\"\n -1, -1, -1, -1, -1, 4563, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"interface\"\n ContextualKeyword._interface << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"is\"\n ContextualKeyword._is << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"k\"\n -1, -1, -1, -1, -1, 4644, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ke\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4671, -1,\n // \"key\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4698, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"keyo\"\n -1, -1, -1, -1, -1, -1, 4725, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"keyof\"\n ContextualKeyword._keyof << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"l\"\n -1, -1, -1, -1, -1, 4779, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"le\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4806, -1, -1, -1, -1, -1, -1,\n // \"let\"\n (tt._let << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"m\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 4860, -1, -1, -1, -1, -1, 4995, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4887, -1, -1,\n // \"mix\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 4914, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mixi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4941, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mixin\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4968, -1, -1, -1, -1, -1, -1, -1,\n // \"mixins\"\n ContextualKeyword._mixins << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mo\"\n -1, -1, -1, -1, 5022, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"mod\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5049, -1, -1, -1, -1, -1,\n // \"modu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5076, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"modul\"\n -1, -1, -1, -1, -1, 5103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"module\"\n ContextualKeyword._module << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"n\"\n -1, 5157, -1, -1, -1, 5373, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5427, -1, -1, -1, -1, -1,\n // \"na\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"nam\"\n -1, -1, -1, -1, -1, 5211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"name\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5238, -1, -1, -1, -1, -1, -1, -1,\n // \"names\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namesp\"\n -1, 5292, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namespa\"\n -1, -1, -1, 5319, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namespac\"\n -1, -1, -1, -1, -1, 5346, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"namespace\"\n ContextualKeyword._namespace << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ne\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5400, -1, -1, -1,\n // \"new\"\n (tt._new << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"nu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5454, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"nul\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5481, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"null\"\n (tt._null << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"o\"\n -1, -1, -1, -1, -1, -1, 5535, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5562, -1, -1, -1, -1, 5697, 5751, -1, -1, -1, -1,\n // \"of\"\n ContextualKeyword._of << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"op\"\n -1, 5589, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"opa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5616, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"opaq\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5643, -1, -1, -1, -1, -1,\n // \"opaqu\"\n -1, -1, -1, -1, -1, 5670, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"opaque\"\n ContextualKeyword._opaque << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ou\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5724, -1, -1, -1, -1, -1, -1,\n // \"out\"\n ContextualKeyword._out << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ov\"\n -1, -1, -1, -1, -1, 5778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ove\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5805, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"over\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5832, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"overr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 5859, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"overri\"\n -1, -1, -1, -1, 5886, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"overrid\"\n -1, -1, -1, -1, -1, 5913, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"override\"\n ContextualKeyword._override << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"p\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5967, -1, -1, 6345, -1, -1, -1, -1, -1,\n // \"pr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 5994, -1, -1, -1, -1, -1, 6129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pri\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6021, -1, -1, -1, -1,\n // \"priv\"\n -1, 6048, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"priva\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6075, -1, -1, -1, -1, -1, -1,\n // \"privat\"\n -1, -1, -1, -1, -1, 6102, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"private\"\n ContextualKeyword._private << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pro\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6156, -1, -1, -1, -1, -1, -1,\n // \"prot\"\n -1, -1, -1, -1, -1, 6183, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6318, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"prote\"\n -1, -1, -1, 6210, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"protec\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6237, -1, -1, -1, -1, -1, -1,\n // \"protect\"\n -1, -1, -1, -1, -1, 6264, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"protecte\"\n -1, -1, -1, -1, 6291, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"protected\"\n ContextualKeyword._protected << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"proto\"\n ContextualKeyword._proto << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pu\"\n -1, -1, 6372, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"pub\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6399, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"publ\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 6426, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"publi\"\n -1, -1, -1, 6453, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"public\"\n ContextualKeyword._public << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"r\"\n -1, -1, -1, -1, -1, 6507, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"re\"\n -1, 6534, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6696, -1, -1, 6831, -1, -1, -1, -1, -1, -1,\n // \"rea\"\n -1, -1, -1, -1, 6561, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"read\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6588, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"reado\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6615, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"readon\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6642, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"readonl\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6669, -1,\n // \"readonly\"\n ContextualKeyword._readonly << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"req\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6723, -1, -1, -1, -1, -1,\n // \"requ\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 6750, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"requi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6777, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"requir\"\n -1, -1, -1, -1, -1, 6804, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"require\"\n ContextualKeyword._require << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ret\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6858, -1, -1, -1, -1, -1,\n // \"retu\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6885, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"retur\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6912, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"return\"\n (tt._return << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"s\"\n -1, 6966, -1, -1, -1, 7182, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7236, 7371, -1, 7479, -1, 7614, -1,\n // \"sa\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6993, -1, -1, -1, -1, -1, -1,\n // \"sat\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7020, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sati\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7047, -1, -1, -1, -1, -1, -1, -1,\n // \"satis\"\n -1, -1, -1, -1, -1, -1, 7074, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"satisf\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7101, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"satisfi\"\n -1, -1, -1, -1, -1, 7128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"satisfie\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7155, -1, -1, -1, -1, -1, -1, -1,\n // \"satisfies\"\n ContextualKeyword._satisfies << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"se\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7209, -1, -1, -1, -1, -1, -1,\n // \"set\"\n ContextualKeyword._set << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"st\"\n -1, 7263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sta\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7290, -1, -1, -1, -1, -1, -1,\n // \"stat\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7317, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"stati\"\n -1, -1, -1, 7344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"static\"\n ContextualKeyword._static << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"su\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7398, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sup\"\n -1, -1, -1, -1, -1, 7425, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"supe\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7452, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"super\"\n (tt._super << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sw\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7506, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"swi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7533, -1, -1, -1, -1, -1, -1,\n // \"swit\"\n -1, -1, -1, 7560, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"switc\"\n -1, -1, -1, -1, -1, -1, -1, -1, 7587, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"switch\"\n (tt._switch << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sy\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"sym\"\n -1, -1, 7668, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"symb\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7695, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"symbo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7722, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"symbol\"\n ContextualKeyword._symbol << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"t\"\n -1, -1, -1, -1, -1, -1, -1, -1, 7776, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7938, -1, -1, -1, -1, -1, -1, 8046, -1,\n // \"th\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 7803, -1, -1, -1, -1, -1, -1, -1, -1, 7857, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"thi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7830, -1, -1, -1, -1, -1, -1, -1,\n // \"this\"\n (tt._this << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"thr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7884, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"thro\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7911, -1, -1, -1,\n // \"throw\"\n (tt._throw << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"tr\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7965, -1, -1, -1, 8019, -1,\n // \"tru\"\n -1, -1, -1, -1, -1, 7992, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"true\"\n (tt._true << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"try\"\n (tt._try << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"ty\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8073, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"typ\"\n -1, -1, -1, -1, -1, 8100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"type\"\n ContextualKeyword._type << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"typeo\"\n -1, -1, -1, -1, -1, -1, 8154, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"typeof\"\n (tt._typeof << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"u\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8208, -1, -1, -1, -1, 8343, -1, -1, -1, -1, -1, -1, -1,\n // \"un\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"uni\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8262, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"uniq\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8289, -1, -1, -1, -1, -1,\n // \"uniqu\"\n -1, -1, -1, -1, -1, 8316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"unique\"\n ContextualKeyword._unique << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"us\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8370, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"usi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"usin\"\n -1, -1, -1, -1, -1, -1, -1, 8424, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"using\"\n ContextualKeyword._using << 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"v\"\n -1, 8478, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8532, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"va\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8505, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"var\"\n (tt._var << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"vo\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8559, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"voi\"\n -1, -1, -1, -1, 8586, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"void\"\n (tt._void << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"w\"\n -1, -1, -1, -1, -1, -1, -1, -1, 8640, 8748, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"wh\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8667, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"whi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8694, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"whil\"\n -1, -1, -1, -1, -1, 8721, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"while\"\n (tt._while << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"wi\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8775, -1, -1, -1, -1, -1, -1,\n // \"wit\"\n -1, -1, -1, -1, -1, -1, -1, -1, 8802, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"with\"\n (tt._with << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"y\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 8856, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yi\"\n -1, -1, -1, -1, -1, 8883, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yie\"\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8910, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yiel\"\n -1, -1, -1, -1, 8937, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n // \"yield\"\n (tt._yield << 1) + 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n]);\n", "import {input, state} from \"../traverser/base\";\nimport {charCodes} from \"../util/charcodes\";\nimport {IS_IDENTIFIER_CHAR} from \"../util/identifier\";\nimport {finishToken} from \"./index\";\nimport {READ_WORD_TREE} from \"./readWordTree\";\nimport {TokenType as tt} from \"./types\";\n\n/**\n * Read an identifier, producing either a name token or matching on one of the existing keywords.\n * For performance, we pre-generate big decision tree that we traverse. Each node represents a\n * prefix and has 27 values, where the first value is the token or contextual token, if any (-1 if\n * not), and the other 26 values are the transitions to other nodes, or -1 to stop.\n */\nexport default function readWord() {\n let treePos = 0;\n let code = 0;\n let pos = state.pos;\n while (pos < input.length) {\n code = input.charCodeAt(pos);\n if (code < charCodes.lowercaseA || code > charCodes.lowercaseZ) {\n break;\n }\n const next = READ_WORD_TREE[treePos + (code - charCodes.lowercaseA) + 1];\n if (next === -1) {\n break;\n } else {\n treePos = next;\n pos++;\n }\n }\n\n const keywordValue = READ_WORD_TREE[treePos];\n if (keywordValue > -1 && !IS_IDENTIFIER_CHAR[code]) {\n state.pos = pos;\n if (keywordValue & 1) {\n finishToken(keywordValue >>> 1);\n } else {\n finishToken(tt.name, keywordValue >>> 1);\n }\n return;\n }\n\n while (pos < input.length) {\n const ch = input.charCodeAt(pos);\n if (IS_IDENTIFIER_CHAR[ch]) {\n pos++;\n } else if (ch === charCodes.backslash) {\n // \\u\n pos += 2;\n if (input.charCodeAt(pos) === charCodes.leftCurlyBrace) {\n while (pos < input.length && input.charCodeAt(pos) !== charCodes.rightCurlyBrace) {\n pos++;\n }\n pos++;\n }\n } else if (ch === charCodes.atSign && input.charCodeAt(pos + 1) === charCodes.atSign) {\n pos += 2;\n } else {\n break;\n }\n }\n state.pos = pos;\n finishToken(tt.name);\n}\n", "/* eslint max-len: 0 */\n\nimport {input, isFlowEnabled, state} from \"../traverser/base\";\nimport {unexpected} from \"../traverser/util\";\nimport {charCodes} from \"../util/charcodes\";\nimport {IS_IDENTIFIER_CHAR, IS_IDENTIFIER_START} from \"../util/identifier\";\nimport {IS_WHITESPACE, skipWhiteSpace} from \"../util/whitespace\";\nimport {ContextualKeyword} from \"./keywords\";\nimport readWord from \"./readWord\";\nimport { TokenType as tt} from \"./types\";\n\nexport var IdentifierRole; (function (IdentifierRole) {\n const Access = 0; IdentifierRole[IdentifierRole[\"Access\"] = Access] = \"Access\";\n const ExportAccess = Access + 1; IdentifierRole[IdentifierRole[\"ExportAccess\"] = ExportAccess] = \"ExportAccess\";\n const TopLevelDeclaration = ExportAccess + 1; IdentifierRole[IdentifierRole[\"TopLevelDeclaration\"] = TopLevelDeclaration] = \"TopLevelDeclaration\";\n const FunctionScopedDeclaration = TopLevelDeclaration + 1; IdentifierRole[IdentifierRole[\"FunctionScopedDeclaration\"] = FunctionScopedDeclaration] = \"FunctionScopedDeclaration\";\n const BlockScopedDeclaration = FunctionScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"BlockScopedDeclaration\"] = BlockScopedDeclaration] = \"BlockScopedDeclaration\";\n const ObjectShorthandTopLevelDeclaration = BlockScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthandTopLevelDeclaration\"] = ObjectShorthandTopLevelDeclaration] = \"ObjectShorthandTopLevelDeclaration\";\n const ObjectShorthandFunctionScopedDeclaration = ObjectShorthandTopLevelDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthandFunctionScopedDeclaration\"] = ObjectShorthandFunctionScopedDeclaration] = \"ObjectShorthandFunctionScopedDeclaration\";\n const ObjectShorthandBlockScopedDeclaration = ObjectShorthandFunctionScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthandBlockScopedDeclaration\"] = ObjectShorthandBlockScopedDeclaration] = \"ObjectShorthandBlockScopedDeclaration\";\n const ObjectShorthand = ObjectShorthandBlockScopedDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectShorthand\"] = ObjectShorthand] = \"ObjectShorthand\";\n // Any identifier bound in an import statement, e.g. both A and b from\n // `import A, * as b from 'A';`\n const ImportDeclaration = ObjectShorthand + 1; IdentifierRole[IdentifierRole[\"ImportDeclaration\"] = ImportDeclaration] = \"ImportDeclaration\";\n const ObjectKey = ImportDeclaration + 1; IdentifierRole[IdentifierRole[\"ObjectKey\"] = ObjectKey] = \"ObjectKey\";\n // The `foo` in `import {foo as bar} from \"./abc\";`.\n const ImportAccess = ObjectKey + 1; IdentifierRole[IdentifierRole[\"ImportAccess\"] = ImportAccess] = \"ImportAccess\";\n})(IdentifierRole || (IdentifierRole = {}));\n\n/**\n * Extra information on jsxTagStart tokens, used to determine which of the three\n * jsx functions are called in the automatic transform.\n */\nexport var JSXRole; (function (JSXRole) {\n // The element is self-closing or has a body that resolves to empty. We\n // shouldn't emit children at all in this case.\n const NoChildren = 0; JSXRole[JSXRole[\"NoChildren\"] = NoChildren] = \"NoChildren\";\n // The element has a single explicit child, which might still be an arbitrary\n // expression like an array. We should emit that expression as the children.\n const OneChild = NoChildren + 1; JSXRole[JSXRole[\"OneChild\"] = OneChild] = \"OneChild\";\n // The element has at least two explicitly-specified children or has spread\n // children, so child positions are assumed to be \"static\". We should wrap\n // these children in an array.\n const StaticChildren = OneChild + 1; JSXRole[JSXRole[\"StaticChildren\"] = StaticChildren] = \"StaticChildren\";\n // The element has a prop named \"key\" after a prop spread, so we should fall\n // back to the createElement function.\n const KeyAfterPropSpread = StaticChildren + 1; JSXRole[JSXRole[\"KeyAfterPropSpread\"] = KeyAfterPropSpread] = \"KeyAfterPropSpread\";\n})(JSXRole || (JSXRole = {}));\n\nexport function isDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.TopLevelDeclaration ||\n role === IdentifierRole.FunctionScopedDeclaration ||\n role === IdentifierRole.BlockScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n role === IdentifierRole.ObjectShorthandFunctionScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandBlockScopedDeclaration\n );\n}\n\nexport function isNonTopLevelDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.FunctionScopedDeclaration ||\n role === IdentifierRole.BlockScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandFunctionScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandBlockScopedDeclaration\n );\n}\n\nexport function isTopLevelDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.TopLevelDeclaration ||\n role === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n role === IdentifierRole.ImportDeclaration\n );\n}\n\nexport function isBlockScopedDeclaration(token) {\n const role = token.identifierRole;\n // Treat top-level declarations as block scope since the distinction doesn't matter here.\n return (\n role === IdentifierRole.TopLevelDeclaration ||\n role === IdentifierRole.BlockScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n role === IdentifierRole.ObjectShorthandBlockScopedDeclaration\n );\n}\n\nexport function isFunctionScopedDeclaration(token) {\n const role = token.identifierRole;\n return (\n role === IdentifierRole.FunctionScopedDeclaration ||\n role === IdentifierRole.ObjectShorthandFunctionScopedDeclaration\n );\n}\n\nexport function isObjectShorthandDeclaration(token) {\n return (\n token.identifierRole === IdentifierRole.ObjectShorthandTopLevelDeclaration ||\n token.identifierRole === IdentifierRole.ObjectShorthandBlockScopedDeclaration ||\n token.identifierRole === IdentifierRole.ObjectShorthandFunctionScopedDeclaration\n );\n}\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\nexport class Token {\n constructor() {\n this.type = state.type;\n this.contextualKeyword = state.contextualKeyword;\n this.start = state.start;\n this.end = state.end;\n this.scopeDepth = state.scopeDepth;\n this.isType = state.isType;\n this.identifierRole = null;\n this.jsxRole = null;\n this.shadowsGlobal = false;\n this.isAsyncOperation = false;\n this.contextId = null;\n this.rhsEndIndex = null;\n this.isExpression = false;\n this.numNullishCoalesceStarts = 0;\n this.numNullishCoalesceEnds = 0;\n this.isOptionalChainStart = false;\n this.isOptionalChainEnd = false;\n this.subscriptStartIndex = null;\n this.nullishStartIndex = null;\n }\n\n \n \n \n \n \n \n \n \n // Initially false for all tokens, then may be computed in a follow-up step that does scope\n // analysis.\n \n // Initially false for all tokens, but may be set during transform to mark it as containing an\n // await operation.\n \n \n // For assignments, the index of the RHS. For export tokens, the end of the export.\n \n // For class tokens, records if the class is a class expression or a class statement.\n \n // Number of times to insert a `nullishCoalesce(` snippet before this token.\n \n // Number of times to insert a `)` snippet after this token.\n \n // If true, insert an `optionalChain([` snippet before this token.\n \n // If true, insert a `])` snippet after this token.\n \n // Tag for `.`, `?.`, `[`, `?.[`, `(`, and `?.(` to denote the \"root\" token for this\n // subscript chain. This can be used to determine if this chain is an optional chain.\n \n // Tag for `??` operators to denote the root token for this nullish coalescing call.\n \n}\n\n// ## Tokenizer\n\n// Move to the next token\nexport function next() {\n state.tokens.push(new Token());\n nextToken();\n}\n\n// Call instead of next when inside a template, since that needs to be handled differently.\nexport function nextTemplateToken() {\n state.tokens.push(new Token());\n state.start = state.pos;\n readTmplToken();\n}\n\n// The tokenizer never parses regexes by default. Instead, the parser is responsible for\n// instructing it to parse a regex when we see a slash at the start of an expression.\nexport function retokenizeSlashAsRegex() {\n if (state.type === tt.assign) {\n --state.pos;\n }\n readRegexp();\n}\n\nexport function pushTypeContext(existingTokensInType) {\n for (let i = state.tokens.length - existingTokensInType; i < state.tokens.length; i++) {\n state.tokens[i].isType = true;\n }\n const oldIsType = state.isType;\n state.isType = true;\n return oldIsType;\n}\n\nexport function popTypeContext(oldIsType) {\n state.isType = oldIsType;\n}\n\nexport function eat(type) {\n if (match(type)) {\n next();\n return true;\n } else {\n return false;\n }\n}\n\nexport function eatTypeToken(tokenType) {\n const oldIsType = state.isType;\n state.isType = true;\n eat(tokenType);\n state.isType = oldIsType;\n}\n\nexport function match(type) {\n return state.type === type;\n}\n\nexport function lookaheadType() {\n const snapshot = state.snapshot();\n next();\n const type = state.type;\n state.restoreFromSnapshot(snapshot);\n return type;\n}\n\nexport class TypeAndKeyword {\n \n \n constructor(type, contextualKeyword) {\n this.type = type;\n this.contextualKeyword = contextualKeyword;\n }\n}\n\nexport function lookaheadTypeAndKeyword() {\n const snapshot = state.snapshot();\n next();\n const type = state.type;\n const contextualKeyword = state.contextualKeyword;\n state.restoreFromSnapshot(snapshot);\n return new TypeAndKeyword(type, contextualKeyword);\n}\n\nexport function nextTokenStart() {\n return nextTokenStartSince(state.pos);\n}\n\nexport function nextTokenStartSince(pos) {\n skipWhiteSpace.lastIndex = pos;\n const skip = skipWhiteSpace.exec(input);\n return pos + skip[0].length;\n}\n\nexport function lookaheadCharCode() {\n return input.charCodeAt(nextTokenStart());\n}\n\n// Read a single token, updating the parser object's token-related\n// properties.\nexport function nextToken() {\n skipSpace();\n state.start = state.pos;\n if (state.pos >= input.length) {\n const tokens = state.tokens;\n // We normally run past the end a bit, but if we're way past the end, avoid an infinite loop.\n // Also check the token positions rather than the types since sometimes we rewrite the token\n // type to something else.\n if (\n tokens.length >= 2 &&\n tokens[tokens.length - 1].start >= input.length &&\n tokens[tokens.length - 2].start >= input.length\n ) {\n unexpected(\"Unexpectedly reached the end of input.\");\n }\n finishToken(tt.eof);\n return;\n }\n readToken(input.charCodeAt(state.pos));\n}\n\nfunction readToken(code) {\n // Identifier or keyword. '\\uXXXX' sequences are allowed in\n // identifiers, so '\\' also dispatches to that.\n if (\n IS_IDENTIFIER_START[code] ||\n code === charCodes.backslash ||\n (code === charCodes.atSign && input.charCodeAt(state.pos + 1) === charCodes.atSign)\n ) {\n readWord();\n } else {\n getTokenFromCode(code);\n }\n}\n\nfunction skipBlockComment() {\n while (\n input.charCodeAt(state.pos) !== charCodes.asterisk ||\n input.charCodeAt(state.pos + 1) !== charCodes.slash\n ) {\n state.pos++;\n if (state.pos > input.length) {\n unexpected(\"Unterminated comment\", state.pos - 2);\n return;\n }\n }\n state.pos += 2;\n}\n\nexport function skipLineComment(startSkip) {\n let ch = input.charCodeAt((state.pos += startSkip));\n if (state.pos < input.length) {\n while (\n ch !== charCodes.lineFeed &&\n ch !== charCodes.carriageReturn &&\n ch !== charCodes.lineSeparator &&\n ch !== charCodes.paragraphSeparator &&\n ++state.pos < input.length\n ) {\n ch = input.charCodeAt(state.pos);\n }\n }\n}\n\n// Called at the start of the parse and after every token. Skips\n// whitespace and comments.\nexport function skipSpace() {\n while (state.pos < input.length) {\n const ch = input.charCodeAt(state.pos);\n switch (ch) {\n case charCodes.carriageReturn:\n if (input.charCodeAt(state.pos + 1) === charCodes.lineFeed) {\n ++state.pos;\n }\n\n case charCodes.lineFeed:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n ++state.pos;\n break;\n\n case charCodes.slash:\n switch (input.charCodeAt(state.pos + 1)) {\n case charCodes.asterisk:\n state.pos += 2;\n skipBlockComment();\n break;\n\n case charCodes.slash:\n skipLineComment(2);\n break;\n\n default:\n return;\n }\n break;\n\n default:\n if (IS_WHITESPACE[ch]) {\n ++state.pos;\n } else {\n return;\n }\n }\n }\n}\n\n// Called at the end of every token. Sets various fields, and skips the space after the token, so\n// that the next one's `start` will point at the right position.\nexport function finishToken(\n type,\n contextualKeyword = ContextualKeyword.NONE,\n) {\n state.end = state.pos;\n state.type = type;\n state.contextualKeyword = contextualKeyword;\n}\n\n// ### Token reading\n\n// This is the function that is called to fetch the next token. It\n// is somewhat obscure, because it works in character codes rather\n// than characters, and because operator parsing has been inlined\n// into it.\n//\n// All in the name of speed.\nfunction readToken_dot() {\n const nextChar = input.charCodeAt(state.pos + 1);\n if (nextChar >= charCodes.digit0 && nextChar <= charCodes.digit9) {\n readNumber(true);\n return;\n }\n\n if (nextChar === charCodes.dot && input.charCodeAt(state.pos + 2) === charCodes.dot) {\n state.pos += 3;\n finishToken(tt.ellipsis);\n } else {\n ++state.pos;\n finishToken(tt.dot);\n }\n}\n\nfunction readToken_slash() {\n const nextChar = input.charCodeAt(state.pos + 1);\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.assign, 2);\n } else {\n finishOp(tt.slash, 1);\n }\n}\n\nfunction readToken_mult_modulo(code) {\n // '%*'\n let tokenType = code === charCodes.asterisk ? tt.star : tt.modulo;\n let width = 1;\n let nextChar = input.charCodeAt(state.pos + 1);\n\n // Exponentiation operator **\n if (code === charCodes.asterisk && nextChar === charCodes.asterisk) {\n width++;\n nextChar = input.charCodeAt(state.pos + 2);\n tokenType = tt.exponent;\n }\n\n // Match *= or %=, disallowing *=> which can be valid in flow.\n if (\n nextChar === charCodes.equalsTo &&\n input.charCodeAt(state.pos + 2) !== charCodes.greaterThan\n ) {\n width++;\n tokenType = tt.assign;\n }\n\n finishOp(tokenType, width);\n}\n\nfunction readToken_pipe_amp(code) {\n // '|&'\n const nextChar = input.charCodeAt(state.pos + 1);\n\n if (nextChar === code) {\n if (input.charCodeAt(state.pos + 2) === charCodes.equalsTo) {\n // ||= or &&=\n finishOp(tt.assign, 3);\n } else {\n // || or &&\n finishOp(code === charCodes.verticalBar ? tt.logicalOR : tt.logicalAND, 2);\n }\n return;\n }\n\n if (code === charCodes.verticalBar) {\n // '|>'\n if (nextChar === charCodes.greaterThan) {\n finishOp(tt.pipeline, 2);\n return;\n } else if (nextChar === charCodes.rightCurlyBrace && isFlowEnabled) {\n // '|}'\n finishOp(tt.braceBarR, 2);\n return;\n }\n }\n\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.assign, 2);\n return;\n }\n\n finishOp(code === charCodes.verticalBar ? tt.bitwiseOR : tt.bitwiseAND, 1);\n}\n\nfunction readToken_caret() {\n // '^'\n const nextChar = input.charCodeAt(state.pos + 1);\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.assign, 2);\n } else {\n finishOp(tt.bitwiseXOR, 1);\n }\n}\n\nfunction readToken_plus_min(code) {\n // '+-'\n const nextChar = input.charCodeAt(state.pos + 1);\n\n if (nextChar === code) {\n // Tentatively call this a prefix operator, but it might be changed to postfix later.\n finishOp(tt.preIncDec, 2);\n return;\n }\n\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.assign, 2);\n } else if (code === charCodes.plusSign) {\n finishOp(tt.plus, 1);\n } else {\n finishOp(tt.minus, 1);\n }\n}\n\nfunction readToken_lt() {\n const nextChar = input.charCodeAt(state.pos + 1);\n\n if (nextChar === charCodes.lessThan) {\n if (input.charCodeAt(state.pos + 2) === charCodes.equalsTo) {\n finishOp(tt.assign, 3);\n return;\n }\n // We see <<, but need to be really careful about whether to treat it as a\n // true left-shift or as two < tokens.\n if (state.isType) {\n // Within a type, << might come up in a snippet like `Array<<T>() => void>`,\n // so treat it as two < tokens. Importantly, this should only override <<\n // rather than other tokens like <= . If we treated <= as < in a type\n // context, then the snippet `a as T <= 1` would incorrectly start parsing\n // a type argument on T. We don't need to worry about `a as T << 1`\n // because TypeScript disallows that syntax.\n finishOp(tt.lessThan, 1);\n } else {\n // Outside a type, this might be a true left-shift operator, or it might\n // still be two open-type-arg tokens, such as in `f<<T>() => void>()`. We\n // look at the token while considering the `f`, so we don't yet know that\n // we're in a type context. In this case, we initially tokenize as a\n // left-shift and correct after-the-fact as necessary in\n // tsParseTypeArgumentsWithPossibleBitshift .\n finishOp(tt.bitShiftL, 2);\n }\n return;\n }\n\n if (nextChar === charCodes.equalsTo) {\n // <=\n finishOp(tt.relationalOrEqual, 2);\n } else {\n finishOp(tt.lessThan, 1);\n }\n}\n\nfunction readToken_gt() {\n if (state.isType) {\n // Avoid right-shift for things like `Array<Array<string>>` and\n // greater-than-or-equal for things like `const a: Array<number>=[];`.\n finishOp(tt.greaterThan, 1);\n return;\n }\n\n const nextChar = input.charCodeAt(state.pos + 1);\n\n if (nextChar === charCodes.greaterThan) {\n const size = input.charCodeAt(state.pos + 2) === charCodes.greaterThan ? 3 : 2;\n if (input.charCodeAt(state.pos + size) === charCodes.equalsTo) {\n finishOp(tt.assign, size + 1);\n return;\n }\n finishOp(tt.bitShiftR, size);\n return;\n }\n\n if (nextChar === charCodes.equalsTo) {\n // >=\n finishOp(tt.relationalOrEqual, 2);\n } else {\n finishOp(tt.greaterThan, 1);\n }\n}\n\n/**\n * Reinterpret a possible > token when transitioning from a type to a non-type\n * context.\n *\n * This comes up in two situations where >= needs to be treated as one token:\n * - After an `as` expression, like in the code `a as T >= 1`.\n * - In a type argument in an expression context, e.g. `f(a < b, c >= d)`, we\n * need to see the token as >= so that we get an error and backtrack to\n * normal expression parsing.\n *\n * Other situations require >= to be seen as two tokens, e.g.\n * `const x: Array<T>=[];`, so it's important to treat > as its own token in\n * typical type parsing situations.\n */\nexport function rescan_gt() {\n if (state.type === tt.greaterThan) {\n state.pos -= 1;\n readToken_gt();\n }\n}\n\nfunction readToken_eq_excl(code) {\n // '=!'\n const nextChar = input.charCodeAt(state.pos + 1);\n if (nextChar === charCodes.equalsTo) {\n finishOp(tt.equality, input.charCodeAt(state.pos + 2) === charCodes.equalsTo ? 3 : 2);\n return;\n }\n if (code === charCodes.equalsTo && nextChar === charCodes.greaterThan) {\n // '=>'\n state.pos += 2;\n finishToken(tt.arrow);\n return;\n }\n finishOp(code === charCodes.equalsTo ? tt.eq : tt.bang, 1);\n}\n\nfunction readToken_question() {\n // '?'\n const nextChar = input.charCodeAt(state.pos + 1);\n const nextChar2 = input.charCodeAt(state.pos + 2);\n if (\n nextChar === charCodes.questionMark &&\n // In Flow (but not TypeScript), ??string is a valid type that should be\n // tokenized as two individual ? tokens.\n !(isFlowEnabled && state.isType)\n ) {\n if (nextChar2 === charCodes.equalsTo) {\n // '??='\n finishOp(tt.assign, 3);\n } else {\n // '??'\n finishOp(tt.nullishCoalescing, 2);\n }\n } else if (\n nextChar === charCodes.dot &&\n !(nextChar2 >= charCodes.digit0 && nextChar2 <= charCodes.digit9)\n ) {\n // '.' not followed by a number\n state.pos += 2;\n finishToken(tt.questionDot);\n } else {\n ++state.pos;\n finishToken(tt.question);\n }\n}\n\nexport function getTokenFromCode(code) {\n switch (code) {\n case charCodes.numberSign:\n ++state.pos;\n finishToken(tt.hash);\n return;\n\n // The interpretation of a dot depends on whether it is followed\n // by a digit or another two dots.\n\n case charCodes.dot:\n readToken_dot();\n return;\n\n // Punctuation tokens.\n case charCodes.leftParenthesis:\n ++state.pos;\n finishToken(tt.parenL);\n return;\n case charCodes.rightParenthesis:\n ++state.pos;\n finishToken(tt.parenR);\n return;\n case charCodes.semicolon:\n ++state.pos;\n finishToken(tt.semi);\n return;\n case charCodes.comma:\n ++state.pos;\n finishToken(tt.comma);\n return;\n case charCodes.leftSquareBracket:\n ++state.pos;\n finishToken(tt.bracketL);\n return;\n case charCodes.rightSquareBracket:\n ++state.pos;\n finishToken(tt.bracketR);\n return;\n\n case charCodes.leftCurlyBrace:\n if (isFlowEnabled && input.charCodeAt(state.pos + 1) === charCodes.verticalBar) {\n finishOp(tt.braceBarL, 2);\n } else {\n ++state.pos;\n finishToken(tt.braceL);\n }\n return;\n\n case charCodes.rightCurlyBrace:\n ++state.pos;\n finishToken(tt.braceR);\n return;\n\n case charCodes.colon:\n if (input.charCodeAt(state.pos + 1) === charCodes.colon) {\n finishOp(tt.doubleColon, 2);\n } else {\n ++state.pos;\n finishToken(tt.colon);\n }\n return;\n\n case charCodes.questionMark:\n readToken_question();\n return;\n case charCodes.atSign:\n ++state.pos;\n finishToken(tt.at);\n return;\n\n case charCodes.graveAccent:\n ++state.pos;\n finishToken(tt.backQuote);\n return;\n\n case charCodes.digit0: {\n const nextChar = input.charCodeAt(state.pos + 1);\n // '0x', '0X', '0o', '0O', '0b', '0B'\n if (\n nextChar === charCodes.lowercaseX ||\n nextChar === charCodes.uppercaseX ||\n nextChar === charCodes.lowercaseO ||\n nextChar === charCodes.uppercaseO ||\n nextChar === charCodes.lowercaseB ||\n nextChar === charCodes.uppercaseB\n ) {\n readRadixNumber();\n return;\n }\n }\n // Anything else beginning with a digit is an integer, octal\n // number, or float.\n case charCodes.digit1:\n case charCodes.digit2:\n case charCodes.digit3:\n case charCodes.digit4:\n case charCodes.digit5:\n case charCodes.digit6:\n case charCodes.digit7:\n case charCodes.digit8:\n case charCodes.digit9:\n readNumber(false);\n return;\n\n // Quotes produce strings.\n case charCodes.quotationMark:\n case charCodes.apostrophe:\n readString(code);\n return;\n\n // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) is\n // often referred to. `finishOp` simply skips the amount of\n // characters it is given as second argument, and returns a token\n // of the type given by its first argument.\n\n case charCodes.slash:\n readToken_slash();\n return;\n\n case charCodes.percentSign:\n case charCodes.asterisk:\n readToken_mult_modulo(code);\n return;\n\n case charCodes.verticalBar:\n case charCodes.ampersand:\n readToken_pipe_amp(code);\n return;\n\n case charCodes.caret:\n readToken_caret();\n return;\n\n case charCodes.plusSign:\n case charCodes.dash:\n readToken_plus_min(code);\n return;\n\n case charCodes.lessThan:\n readToken_lt();\n return;\n\n case charCodes.greaterThan:\n readToken_gt();\n return;\n\n case charCodes.equalsTo:\n case charCodes.exclamationMark:\n readToken_eq_excl(code);\n return;\n\n case charCodes.tilde:\n finishOp(tt.tilde, 1);\n return;\n\n default:\n break;\n }\n\n unexpected(`Unexpected character '${String.fromCharCode(code)}'`, state.pos);\n}\n\nfunction finishOp(type, size) {\n state.pos += size;\n finishToken(type);\n}\n\nfunction readRegexp() {\n const start = state.pos;\n let escaped = false;\n let inClass = false;\n for (;;) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated regular expression\", start);\n return;\n }\n const code = input.charCodeAt(state.pos);\n if (escaped) {\n escaped = false;\n } else {\n if (code === charCodes.leftSquareBracket) {\n inClass = true;\n } else if (code === charCodes.rightSquareBracket && inClass) {\n inClass = false;\n } else if (code === charCodes.slash && !inClass) {\n break;\n }\n escaped = code === charCodes.backslash;\n }\n ++state.pos;\n }\n ++state.pos;\n // Need to use `skipWord` because '\\uXXXX' sequences are allowed here (don't ask).\n skipWord();\n\n finishToken(tt.regexp);\n}\n\n/**\n * Read a decimal integer. Note that this can't be unified with the similar code\n * in readRadixNumber (which also handles hex digits) because \"e\" needs to be\n * the end of the integer so that we can properly handle scientific notation.\n */\nfunction readInt() {\n while (true) {\n const code = input.charCodeAt(state.pos);\n if ((code >= charCodes.digit0 && code <= charCodes.digit9) || code === charCodes.underscore) {\n state.pos++;\n } else {\n break;\n }\n }\n}\n\nfunction readRadixNumber() {\n state.pos += 2; // 0x\n\n // Walk to the end of the number, allowing hex digits.\n while (true) {\n const code = input.charCodeAt(state.pos);\n if (\n (code >= charCodes.digit0 && code <= charCodes.digit9) ||\n (code >= charCodes.lowercaseA && code <= charCodes.lowercaseF) ||\n (code >= charCodes.uppercaseA && code <= charCodes.uppercaseF) ||\n code === charCodes.underscore\n ) {\n state.pos++;\n } else {\n break;\n }\n }\n\n const nextChar = input.charCodeAt(state.pos);\n if (nextChar === charCodes.lowercaseN) {\n ++state.pos;\n finishToken(tt.bigint);\n } else {\n finishToken(tt.num);\n }\n}\n\n// Read an integer, octal integer, or floating-point number.\nfunction readNumber(startsWithDot) {\n let isBigInt = false;\n let isDecimal = false;\n\n if (!startsWithDot) {\n readInt();\n }\n\n let nextChar = input.charCodeAt(state.pos);\n if (nextChar === charCodes.dot) {\n ++state.pos;\n readInt();\n nextChar = input.charCodeAt(state.pos);\n }\n\n if (nextChar === charCodes.uppercaseE || nextChar === charCodes.lowercaseE) {\n nextChar = input.charCodeAt(++state.pos);\n if (nextChar === charCodes.plusSign || nextChar === charCodes.dash) {\n ++state.pos;\n }\n readInt();\n nextChar = input.charCodeAt(state.pos);\n }\n\n if (nextChar === charCodes.lowercaseN) {\n ++state.pos;\n isBigInt = true;\n } else if (nextChar === charCodes.lowercaseM) {\n ++state.pos;\n isDecimal = true;\n }\n\n if (isBigInt) {\n finishToken(tt.bigint);\n return;\n }\n\n if (isDecimal) {\n finishToken(tt.decimal);\n return;\n }\n\n finishToken(tt.num);\n}\n\nfunction readString(quote) {\n state.pos++;\n for (;;) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated string constant\");\n return;\n }\n const ch = input.charCodeAt(state.pos);\n if (ch === charCodes.backslash) {\n state.pos++;\n } else if (ch === quote) {\n break;\n }\n state.pos++;\n }\n state.pos++;\n finishToken(tt.string);\n}\n\n// Reads template string tokens.\nfunction readTmplToken() {\n for (;;) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated template\");\n return;\n }\n const ch = input.charCodeAt(state.pos);\n if (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign && input.charCodeAt(state.pos + 1) === charCodes.leftCurlyBrace)\n ) {\n if (state.pos === state.start && match(tt.template)) {\n if (ch === charCodes.dollarSign) {\n state.pos += 2;\n finishToken(tt.dollarBraceL);\n return;\n } else {\n ++state.pos;\n finishToken(tt.backQuote);\n return;\n }\n }\n finishToken(tt.template);\n return;\n }\n if (ch === charCodes.backslash) {\n state.pos++;\n }\n state.pos++;\n }\n}\n\n// Skip to the end of the current word. Note that this is the same as the snippet at the end of\n// readWord, but calling skipWord from readWord seems to slightly hurt performance from some rough\n// measurements.\nexport function skipWord() {\n while (state.pos < input.length) {\n const ch = input.charCodeAt(state.pos);\n if (IS_IDENTIFIER_CHAR[ch]) {\n state.pos++;\n } else if (ch === charCodes.backslash) {\n // \\u\n state.pos += 2;\n if (input.charCodeAt(state.pos) === charCodes.leftCurlyBrace) {\n while (\n state.pos < input.length &&\n input.charCodeAt(state.pos) !== charCodes.rightCurlyBrace\n ) {\n state.pos++;\n }\n state.pos++;\n }\n } else {\n break;\n }\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Determine information about this named import or named export specifier.\n *\n * This syntax is the `a` from statements like these:\n * import {A} from \"./foo\";\n * export {A};\n * export {A} from \"./foo\";\n *\n * As it turns out, we can exactly characterize the syntax meaning by simply\n * counting the number of tokens, which can be from 1 to 4:\n * {A}\n * {type A}\n * {A as B}\n * {type A as B}\n *\n * In the type case, we never actually need the names in practice, so don't get\n * them.\n *\n * TODO: There's some redundancy with the type detection here and the isType\n * flag that's already present on tokens in TS mode. This function could\n * potentially be simplified and/or pushed to the call sites to avoid the object\n * allocation.\n */\nexport default function getImportExportSpecifierInfo(\n tokens,\n index = tokens.currentIndex(),\n) {\n let endIndex = index + 1;\n if (isSpecifierEnd(tokens, endIndex)) {\n // import {A}\n const name = tokens.identifierNameAtIndex(index);\n return {\n isType: false,\n leftName: name,\n rightName: name,\n endIndex,\n };\n }\n endIndex++;\n if (isSpecifierEnd(tokens, endIndex)) {\n // import {type A}\n return {\n isType: true,\n leftName: null,\n rightName: null,\n endIndex,\n };\n }\n endIndex++;\n if (isSpecifierEnd(tokens, endIndex)) {\n // import {A as B}\n return {\n isType: false,\n leftName: tokens.identifierNameAtIndex(index),\n rightName: tokens.identifierNameAtIndex(index + 2),\n endIndex,\n };\n }\n endIndex++;\n if (isSpecifierEnd(tokens, endIndex)) {\n // import {type A as B}\n return {\n isType: true,\n leftName: null,\n rightName: null,\n endIndex,\n };\n }\n throw new Error(`Unexpected import/export specifier at ${index}`);\n}\n\nfunction isSpecifierEnd(tokens, index) {\n const token = tokens.tokens[index];\n return token.type === tt.braceR || token.type === tt.comma;\n}\n", "// Use a Map rather than object to avoid unexpected __proto__ access.\nexport default new Map([\n [\"quot\", \"\\u0022\"],\n [\"amp\", \"&\"],\n [\"apos\", \"\\u0027\"],\n [\"lt\", \"<\"],\n [\"gt\", \">\"],\n [\"nbsp\", \"\\u00A0\"],\n [\"iexcl\", \"\\u00A1\"],\n [\"cent\", \"\\u00A2\"],\n [\"pound\", \"\\u00A3\"],\n [\"curren\", \"\\u00A4\"],\n [\"yen\", \"\\u00A5\"],\n [\"brvbar\", \"\\u00A6\"],\n [\"sect\", \"\\u00A7\"],\n [\"uml\", \"\\u00A8\"],\n [\"copy\", \"\\u00A9\"],\n [\"ordf\", \"\\u00AA\"],\n [\"laquo\", \"\\u00AB\"],\n [\"not\", \"\\u00AC\"],\n [\"shy\", \"\\u00AD\"],\n [\"reg\", \"\\u00AE\"],\n [\"macr\", \"\\u00AF\"],\n [\"deg\", \"\\u00B0\"],\n [\"plusmn\", \"\\u00B1\"],\n [\"sup2\", \"\\u00B2\"],\n [\"sup3\", \"\\u00B3\"],\n [\"acute\", \"\\u00B4\"],\n [\"micro\", \"\\u00B5\"],\n [\"para\", \"\\u00B6\"],\n [\"middot\", \"\\u00B7\"],\n [\"cedil\", \"\\u00B8\"],\n [\"sup1\", \"\\u00B9\"],\n [\"ordm\", \"\\u00BA\"],\n [\"raquo\", \"\\u00BB\"],\n [\"frac14\", \"\\u00BC\"],\n [\"frac12\", \"\\u00BD\"],\n [\"frac34\", \"\\u00BE\"],\n [\"iquest\", \"\\u00BF\"],\n [\"Agrave\", \"\\u00C0\"],\n [\"Aacute\", \"\\u00C1\"],\n [\"Acirc\", \"\\u00C2\"],\n [\"Atilde\", \"\\u00C3\"],\n [\"Auml\", \"\\u00C4\"],\n [\"Aring\", \"\\u00C5\"],\n [\"AElig\", \"\\u00C6\"],\n [\"Ccedil\", \"\\u00C7\"],\n [\"Egrave\", \"\\u00C8\"],\n [\"Eacute\", \"\\u00C9\"],\n [\"Ecirc\", \"\\u00CA\"],\n [\"Euml\", \"\\u00CB\"],\n [\"Igrave\", \"\\u00CC\"],\n [\"Iacute\", \"\\u00CD\"],\n [\"Icirc\", \"\\u00CE\"],\n [\"Iuml\", \"\\u00CF\"],\n [\"ETH\", \"\\u00D0\"],\n [\"Ntilde\", \"\\u00D1\"],\n [\"Ograve\", \"\\u00D2\"],\n [\"Oacute\", \"\\u00D3\"],\n [\"Ocirc\", \"\\u00D4\"],\n [\"Otilde\", \"\\u00D5\"],\n [\"Ouml\", \"\\u00D6\"],\n [\"times\", \"\\u00D7\"],\n [\"Oslash\", \"\\u00D8\"],\n [\"Ugrave\", \"\\u00D9\"],\n [\"Uacute\", \"\\u00DA\"],\n [\"Ucirc\", \"\\u00DB\"],\n [\"Uuml\", \"\\u00DC\"],\n [\"Yacute\", \"\\u00DD\"],\n [\"THORN\", \"\\u00DE\"],\n [\"szlig\", \"\\u00DF\"],\n [\"agrave\", \"\\u00E0\"],\n [\"aacute\", \"\\u00E1\"],\n [\"acirc\", \"\\u00E2\"],\n [\"atilde\", \"\\u00E3\"],\n [\"auml\", \"\\u00E4\"],\n [\"aring\", \"\\u00E5\"],\n [\"aelig\", \"\\u00E6\"],\n [\"ccedil\", \"\\u00E7\"],\n [\"egrave\", \"\\u00E8\"],\n [\"eacute\", \"\\u00E9\"],\n [\"ecirc\", \"\\u00EA\"],\n [\"euml\", \"\\u00EB\"],\n [\"igrave\", \"\\u00EC\"],\n [\"iacute\", \"\\u00ED\"],\n [\"icirc\", \"\\u00EE\"],\n [\"iuml\", \"\\u00EF\"],\n [\"eth\", \"\\u00F0\"],\n [\"ntilde\", \"\\u00F1\"],\n [\"ograve\", \"\\u00F2\"],\n [\"oacute\", \"\\u00F3\"],\n [\"ocirc\", \"\\u00F4\"],\n [\"otilde\", \"\\u00F5\"],\n [\"ouml\", \"\\u00F6\"],\n [\"divide\", \"\\u00F7\"],\n [\"oslash\", \"\\u00F8\"],\n [\"ugrave\", \"\\u00F9\"],\n [\"uacute\", \"\\u00FA\"],\n [\"ucirc\", \"\\u00FB\"],\n [\"uuml\", \"\\u00FC\"],\n [\"yacute\", \"\\u00FD\"],\n [\"thorn\", \"\\u00FE\"],\n [\"yuml\", \"\\u00FF\"],\n [\"OElig\", \"\\u0152\"],\n [\"oelig\", \"\\u0153\"],\n [\"Scaron\", \"\\u0160\"],\n [\"scaron\", \"\\u0161\"],\n [\"Yuml\", \"\\u0178\"],\n [\"fnof\", \"\\u0192\"],\n [\"circ\", \"\\u02C6\"],\n [\"tilde\", \"\\u02DC\"],\n [\"Alpha\", \"\\u0391\"],\n [\"Beta\", \"\\u0392\"],\n [\"Gamma\", \"\\u0393\"],\n [\"Delta\", \"\\u0394\"],\n [\"Epsilon\", \"\\u0395\"],\n [\"Zeta\", \"\\u0396\"],\n [\"Eta\", \"\\u0397\"],\n [\"Theta\", \"\\u0398\"],\n [\"Iota\", \"\\u0399\"],\n [\"Kappa\", \"\\u039A\"],\n [\"Lambda\", \"\\u039B\"],\n [\"Mu\", \"\\u039C\"],\n [\"Nu\", \"\\u039D\"],\n [\"Xi\", \"\\u039E\"],\n [\"Omicron\", \"\\u039F\"],\n [\"Pi\", \"\\u03A0\"],\n [\"Rho\", \"\\u03A1\"],\n [\"Sigma\", \"\\u03A3\"],\n [\"Tau\", \"\\u03A4\"],\n [\"Upsilon\", \"\\u03A5\"],\n [\"Phi\", \"\\u03A6\"],\n [\"Chi\", \"\\u03A7\"],\n [\"Psi\", \"\\u03A8\"],\n [\"Omega\", \"\\u03A9\"],\n [\"alpha\", \"\\u03B1\"],\n [\"beta\", \"\\u03B2\"],\n [\"gamma\", \"\\u03B3\"],\n [\"delta\", \"\\u03B4\"],\n [\"epsilon\", \"\\u03B5\"],\n [\"zeta\", \"\\u03B6\"],\n [\"eta\", \"\\u03B7\"],\n [\"theta\", \"\\u03B8\"],\n [\"iota\", \"\\u03B9\"],\n [\"kappa\", \"\\u03BA\"],\n [\"lambda\", \"\\u03BB\"],\n [\"mu\", \"\\u03BC\"],\n [\"nu\", \"\\u03BD\"],\n [\"xi\", \"\\u03BE\"],\n [\"omicron\", \"\\u03BF\"],\n [\"pi\", \"\\u03C0\"],\n [\"rho\", \"\\u03C1\"],\n [\"sigmaf\", \"\\u03C2\"],\n [\"sigma\", \"\\u03C3\"],\n [\"tau\", \"\\u03C4\"],\n [\"upsilon\", \"\\u03C5\"],\n [\"phi\", \"\\u03C6\"],\n [\"chi\", \"\\u03C7\"],\n [\"psi\", \"\\u03C8\"],\n [\"omega\", \"\\u03C9\"],\n [\"thetasym\", \"\\u03D1\"],\n [\"upsih\", \"\\u03D2\"],\n [\"piv\", \"\\u03D6\"],\n [\"ensp\", \"\\u2002\"],\n [\"emsp\", \"\\u2003\"],\n [\"thinsp\", \"\\u2009\"],\n [\"zwnj\", \"\\u200C\"],\n [\"zwj\", \"\\u200D\"],\n [\"lrm\", \"\\u200E\"],\n [\"rlm\", \"\\u200F\"],\n [\"ndash\", \"\\u2013\"],\n [\"mdash\", \"\\u2014\"],\n [\"lsquo\", \"\\u2018\"],\n [\"rsquo\", \"\\u2019\"],\n [\"sbquo\", \"\\u201A\"],\n [\"ldquo\", \"\\u201C\"],\n [\"rdquo\", \"\\u201D\"],\n [\"bdquo\", \"\\u201E\"],\n [\"dagger\", \"\\u2020\"],\n [\"Dagger\", \"\\u2021\"],\n [\"bull\", \"\\u2022\"],\n [\"hellip\", \"\\u2026\"],\n [\"permil\", \"\\u2030\"],\n [\"prime\", \"\\u2032\"],\n [\"Prime\", \"\\u2033\"],\n [\"lsaquo\", \"\\u2039\"],\n [\"rsaquo\", \"\\u203A\"],\n [\"oline\", \"\\u203E\"],\n [\"frasl\", \"\\u2044\"],\n [\"euro\", \"\\u20AC\"],\n [\"image\", \"\\u2111\"],\n [\"weierp\", \"\\u2118\"],\n [\"real\", \"\\u211C\"],\n [\"trade\", \"\\u2122\"],\n [\"alefsym\", \"\\u2135\"],\n [\"larr\", \"\\u2190\"],\n [\"uarr\", \"\\u2191\"],\n [\"rarr\", \"\\u2192\"],\n [\"darr\", \"\\u2193\"],\n [\"harr\", \"\\u2194\"],\n [\"crarr\", \"\\u21B5\"],\n [\"lArr\", \"\\u21D0\"],\n [\"uArr\", \"\\u21D1\"],\n [\"rArr\", \"\\u21D2\"],\n [\"dArr\", \"\\u21D3\"],\n [\"hArr\", \"\\u21D4\"],\n [\"forall\", \"\\u2200\"],\n [\"part\", \"\\u2202\"],\n [\"exist\", \"\\u2203\"],\n [\"empty\", \"\\u2205\"],\n [\"nabla\", \"\\u2207\"],\n [\"isin\", \"\\u2208\"],\n [\"notin\", \"\\u2209\"],\n [\"ni\", \"\\u220B\"],\n [\"prod\", \"\\u220F\"],\n [\"sum\", \"\\u2211\"],\n [\"minus\", \"\\u2212\"],\n [\"lowast\", \"\\u2217\"],\n [\"radic\", \"\\u221A\"],\n [\"prop\", \"\\u221D\"],\n [\"infin\", \"\\u221E\"],\n [\"ang\", \"\\u2220\"],\n [\"and\", \"\\u2227\"],\n [\"or\", \"\\u2228\"],\n [\"cap\", \"\\u2229\"],\n [\"cup\", \"\\u222A\"],\n [\"int\", \"\\u222B\"],\n [\"there4\", \"\\u2234\"],\n [\"sim\", \"\\u223C\"],\n [\"cong\", \"\\u2245\"],\n [\"asymp\", \"\\u2248\"],\n [\"ne\", \"\\u2260\"],\n [\"equiv\", \"\\u2261\"],\n [\"le\", \"\\u2264\"],\n [\"ge\", \"\\u2265\"],\n [\"sub\", \"\\u2282\"],\n [\"sup\", \"\\u2283\"],\n [\"nsub\", \"\\u2284\"],\n [\"sube\", \"\\u2286\"],\n [\"supe\", \"\\u2287\"],\n [\"oplus\", \"\\u2295\"],\n [\"otimes\", \"\\u2297\"],\n [\"perp\", \"\\u22A5\"],\n [\"sdot\", \"\\u22C5\"],\n [\"lceil\", \"\\u2308\"],\n [\"rceil\", \"\\u2309\"],\n [\"lfloor\", \"\\u230A\"],\n [\"rfloor\", \"\\u230B\"],\n [\"lang\", \"\\u2329\"],\n [\"rang\", \"\\u232A\"],\n [\"loz\", \"\\u25CA\"],\n [\"spades\", \"\\u2660\"],\n [\"clubs\", \"\\u2663\"],\n [\"hearts\", \"\\u2665\"],\n [\"diams\", \"\\u2666\"],\n]);\n", "\n\n\n\n\n\n\n\n\nexport default function getJSXPragmaInfo(options) {\n const [base, suffix] = splitPragma(options.jsxPragma || \"React.createElement\");\n const [fragmentBase, fragmentSuffix] = splitPragma(options.jsxFragmentPragma || \"React.Fragment\");\n return {base, suffix, fragmentBase, fragmentSuffix};\n}\n\nfunction splitPragma(pragma) {\n let dotIndex = pragma.indexOf(\".\");\n if (dotIndex === -1) {\n dotIndex = pragma.length;\n }\n return [pragma.slice(0, dotIndex), pragma.slice(dotIndex)];\n}\n", "export default class Transformer {\n // Return true if anything was processed, false otherwise.\n \n\n getPrefixCode() {\n return \"\";\n }\n\n getHoistedCode() {\n return \"\";\n }\n\n getSuffixCode() {\n return \"\";\n }\n}\n", "\n\n\nimport XHTMLEntities from \"../parser/plugins/jsx/xhtml\";\nimport {JSXRole} from \"../parser/tokenizer\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\nimport {charCodes} from \"../parser/util/charcodes\";\n\nimport getJSXPragmaInfo, {} from \"../util/getJSXPragmaInfo\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class JSXTransformer extends Transformer {\n \n \n \n\n // State for calculating the line number of each JSX tag in development.\n __init() {this.lastLineNumber = 1}\n __init2() {this.lastIndex = 0}\n\n // In development, variable name holding the name of the current file.\n __init3() {this.filenameVarName = null}\n // Mapping of claimed names for imports in the automatic transform, e,g.\n // {jsx: \"_jsx\"}. This determines which imports to generate in the prefix.\n __init4() {this.esmAutomaticImportNameResolutions = {}}\n // When automatically adding imports in CJS mode, we store the variable name\n // holding the imported CJS module so we can require it in the prefix.\n __init5() {this.cjsAutomaticModuleNameResolutions = {}}\n\n constructor(\n rootTransformer,\n tokens,\n importProcessor,\n nameManager,\n options,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.importProcessor = importProcessor;this.nameManager = nameManager;this.options = options;JSXTransformer.prototype.__init.call(this);JSXTransformer.prototype.__init2.call(this);JSXTransformer.prototype.__init3.call(this);JSXTransformer.prototype.__init4.call(this);JSXTransformer.prototype.__init5.call(this);;\n this.jsxPragmaInfo = getJSXPragmaInfo(options);\n this.isAutomaticRuntime = options.jsxRuntime === \"automatic\";\n this.jsxImportSource = options.jsxImportSource || \"react\";\n }\n\n process() {\n if (this.tokens.matches1(tt.jsxTagStart)) {\n this.processJSXTag();\n return true;\n }\n return false;\n }\n\n getPrefixCode() {\n let prefix = \"\";\n if (this.filenameVarName) {\n prefix += `const ${this.filenameVarName} = ${JSON.stringify(this.options.filePath || \"\")};`;\n }\n if (this.isAutomaticRuntime) {\n if (this.importProcessor) {\n // CJS mode: emit require statements for all modules that were referenced.\n for (const [path, resolvedName] of Object.entries(this.cjsAutomaticModuleNameResolutions)) {\n prefix += `var ${resolvedName} = require(\"${path}\");`;\n }\n } else {\n // ESM mode: consolidate and emit import statements for referenced names.\n const {createElement: createElementResolution, ...otherResolutions} =\n this.esmAutomaticImportNameResolutions;\n if (createElementResolution) {\n prefix += `import {createElement as ${createElementResolution}} from \"${this.jsxImportSource}\";`;\n }\n const importSpecifiers = Object.entries(otherResolutions)\n .map(([name, resolvedName]) => `${name} as ${resolvedName}`)\n .join(\", \");\n if (importSpecifiers) {\n const importPath =\n this.jsxImportSource + (this.options.production ? \"/jsx-runtime\" : \"/jsx-dev-runtime\");\n prefix += `import {${importSpecifiers}} from \"${importPath}\";`;\n }\n }\n }\n return prefix;\n }\n\n processJSXTag() {\n const {jsxRole, start} = this.tokens.currentToken();\n // Calculate line number information at the very start (if in development\n // mode) so that the information is guaranteed to be queried in token order.\n const elementLocationCode = this.options.production ? null : this.getElementLocationCode(start);\n if (this.isAutomaticRuntime && jsxRole !== JSXRole.KeyAfterPropSpread) {\n this.transformTagToJSXFunc(elementLocationCode, jsxRole);\n } else {\n this.transformTagToCreateElement(elementLocationCode);\n }\n }\n\n getElementLocationCode(firstTokenStart) {\n const lineNumber = this.getLineNumberForIndex(firstTokenStart);\n return `lineNumber: ${lineNumber}`;\n }\n\n /**\n * Get the line number for this source position. This is calculated lazily and\n * must be called in increasing order by index.\n */\n getLineNumberForIndex(index) {\n const code = this.tokens.code;\n while (this.lastIndex < index && this.lastIndex < code.length) {\n if (code[this.lastIndex] === \"\\n\") {\n this.lastLineNumber++;\n }\n this.lastIndex++;\n }\n return this.lastLineNumber;\n }\n\n /**\n * Convert the current JSX element to a call to jsx, jsxs, or jsxDEV. This is\n * the primary transformation for the automatic transform.\n *\n * Example:\n * <div a={1} key={2}>Hello{x}</div>\n * becomes\n * jsxs('div', {a: 1, children: [\"Hello\", x]}, 2)\n */\n transformTagToJSXFunc(elementLocationCode, jsxRole) {\n const isStatic = jsxRole === JSXRole.StaticChildren;\n // First tag is always jsxTagStart.\n this.tokens.replaceToken(this.getJSXFuncInvocationCode(isStatic));\n\n let keyCode = null;\n if (this.tokens.matches1(tt.jsxTagEnd)) {\n // Fragment syntax.\n this.tokens.replaceToken(`${this.getFragmentCode()}, {`);\n this.processAutomaticChildrenAndEndProps(jsxRole);\n } else {\n // Normal open tag or self-closing tag.\n this.processTagIntro();\n this.tokens.appendCode(\", {\");\n keyCode = this.processProps(true);\n\n if (this.tokens.matches2(tt.slash, tt.jsxTagEnd)) {\n // Self-closing tag, no children to add, so close the props.\n this.tokens.appendCode(\"}\");\n } else if (this.tokens.matches1(tt.jsxTagEnd)) {\n // Tag with children.\n this.tokens.removeToken();\n this.processAutomaticChildrenAndEndProps(jsxRole);\n } else {\n throw new Error(\"Expected either /> or > at the end of the tag.\");\n }\n // If a key was present, move it to its own arg. Note that moving code\n // like this will cause line numbers to get out of sync within the JSX\n // element if the key expression has a newline in it. This is unfortunate,\n // but hopefully should be rare.\n if (keyCode) {\n this.tokens.appendCode(`, ${keyCode}`);\n }\n }\n if (!this.options.production) {\n // If the key wasn't already added, add it now so we can correctly set\n // positional args for jsxDEV.\n if (keyCode === null) {\n this.tokens.appendCode(\", void 0\");\n }\n this.tokens.appendCode(`, ${isStatic}, ${this.getDevSource(elementLocationCode)}, this`);\n }\n // We're at the close-tag or the end of a self-closing tag, so remove\n // everything else and close the function call.\n this.tokens.removeInitialToken();\n while (!this.tokens.matches1(tt.jsxTagEnd)) {\n this.tokens.removeToken();\n }\n this.tokens.replaceToken(\")\");\n }\n\n /**\n * Convert the current JSX element to a createElement call. In the classic\n * runtime, this is the only case. In the automatic runtime, this is called\n * as a fallback in some situations.\n *\n * Example:\n * <div a={1} key={2}>Hello{x}</div>\n * becomes\n * React.createElement('div', {a: 1, key: 2}, \"Hello\", x)\n */\n transformTagToCreateElement(elementLocationCode) {\n // First tag is always jsxTagStart.\n this.tokens.replaceToken(this.getCreateElementInvocationCode());\n\n if (this.tokens.matches1(tt.jsxTagEnd)) {\n // Fragment syntax.\n this.tokens.replaceToken(`${this.getFragmentCode()}, null`);\n this.processChildren(true);\n } else {\n // Normal open tag or self-closing tag.\n this.processTagIntro();\n this.processPropsObjectWithDevInfo(elementLocationCode);\n\n if (this.tokens.matches2(tt.slash, tt.jsxTagEnd)) {\n // Self-closing tag; no children to process.\n } else if (this.tokens.matches1(tt.jsxTagEnd)) {\n // Tag with children and a close-tag; process the children as args.\n this.tokens.removeToken();\n this.processChildren(true);\n } else {\n throw new Error(\"Expected either /> or > at the end of the tag.\");\n }\n }\n // We're at the close-tag or the end of a self-closing tag, so remove\n // everything else and close the function call.\n this.tokens.removeInitialToken();\n while (!this.tokens.matches1(tt.jsxTagEnd)) {\n this.tokens.removeToken();\n }\n this.tokens.replaceToken(\")\");\n }\n\n /**\n * Get the code for the relevant function for this context: jsx, jsxs,\n * or jsxDEV. The following open-paren is included as well.\n *\n * These functions are only used for the automatic runtime, so they are always\n * auto-imported, but the auto-import will be either CJS or ESM based on the\n * target module format.\n */\n getJSXFuncInvocationCode(isStatic) {\n if (this.options.production) {\n if (isStatic) {\n return this.claimAutoImportedFuncInvocation(\"jsxs\", \"/jsx-runtime\");\n } else {\n return this.claimAutoImportedFuncInvocation(\"jsx\", \"/jsx-runtime\");\n }\n } else {\n return this.claimAutoImportedFuncInvocation(\"jsxDEV\", \"/jsx-dev-runtime\");\n }\n }\n\n /**\n * Return the code to use for the createElement function, e.g.\n * `React.createElement`, including the following open-paren.\n *\n * This is the main function to use for the classic runtime. For the\n * automatic runtime, this function is used as a fallback function to\n * preserve behavior when there is a prop spread followed by an explicit\n * key. In that automatic runtime case, the function should be automatically\n * imported.\n */\n getCreateElementInvocationCode() {\n if (this.isAutomaticRuntime) {\n return this.claimAutoImportedFuncInvocation(\"createElement\", \"\");\n } else {\n const {jsxPragmaInfo} = this;\n const resolvedPragmaBaseName = this.importProcessor\n ? this.importProcessor.getIdentifierReplacement(jsxPragmaInfo.base) || jsxPragmaInfo.base\n : jsxPragmaInfo.base;\n return `${resolvedPragmaBaseName}${jsxPragmaInfo.suffix}(`;\n }\n }\n\n /**\n * Return the code to use as the component when compiling a shorthand\n * fragment, e.g. `React.Fragment`.\n *\n * This may be called from either the classic or automatic runtime, and\n * the value should be auto-imported for the automatic runtime.\n */\n getFragmentCode() {\n if (this.isAutomaticRuntime) {\n return this.claimAutoImportedName(\n \"Fragment\",\n this.options.production ? \"/jsx-runtime\" : \"/jsx-dev-runtime\",\n );\n } else {\n const {jsxPragmaInfo} = this;\n const resolvedFragmentPragmaBaseName = this.importProcessor\n ? this.importProcessor.getIdentifierReplacement(jsxPragmaInfo.fragmentBase) ||\n jsxPragmaInfo.fragmentBase\n : jsxPragmaInfo.fragmentBase;\n return resolvedFragmentPragmaBaseName + jsxPragmaInfo.fragmentSuffix;\n }\n }\n\n /**\n * Return code that invokes the given function.\n *\n * When the imports transform is enabled, use the CJSImportTransformer\n * strategy of using `.call(void 0, ...` to avoid passing a `this` value in a\n * situation that would otherwise look like a method call.\n */\n claimAutoImportedFuncInvocation(funcName, importPathSuffix) {\n const funcCode = this.claimAutoImportedName(funcName, importPathSuffix);\n if (this.importProcessor) {\n return `${funcCode}.call(void 0, `;\n } else {\n return `${funcCode}(`;\n }\n }\n\n claimAutoImportedName(funcName, importPathSuffix) {\n if (this.importProcessor) {\n // CJS mode: claim a name for the module and mark it for import.\n const path = this.jsxImportSource + importPathSuffix;\n if (!this.cjsAutomaticModuleNameResolutions[path]) {\n this.cjsAutomaticModuleNameResolutions[path] =\n this.importProcessor.getFreeIdentifierForPath(path);\n }\n return `${this.cjsAutomaticModuleNameResolutions[path]}.${funcName}`;\n } else {\n // ESM mode: claim a name for this function and add it to the names that\n // should be auto-imported when the prefix is generated.\n if (!this.esmAutomaticImportNameResolutions[funcName]) {\n this.esmAutomaticImportNameResolutions[funcName] = this.nameManager.claimFreeName(\n `_${funcName}`,\n );\n }\n return this.esmAutomaticImportNameResolutions[funcName];\n }\n }\n\n /**\n * Process the first part of a tag, before any props.\n */\n processTagIntro() {\n // Walk forward until we see one of these patterns:\n // jsxName to start the first prop, preceded by another jsxName to end the tag name.\n // jsxName to start the first prop, preceded by greaterThan to end the type argument.\n // [open brace] to start the first prop.\n // [jsxTagEnd] to end the open-tag.\n // [slash, jsxTagEnd] to end the self-closing tag.\n let introEnd = this.tokens.currentIndex() + 1;\n while (\n this.tokens.tokens[introEnd].isType ||\n (!this.tokens.matches2AtIndex(introEnd - 1, tt.jsxName, tt.jsxName) &&\n !this.tokens.matches2AtIndex(introEnd - 1, tt.greaterThan, tt.jsxName) &&\n !this.tokens.matches1AtIndex(introEnd, tt.braceL) &&\n !this.tokens.matches1AtIndex(introEnd, tt.jsxTagEnd) &&\n !this.tokens.matches2AtIndex(introEnd, tt.slash, tt.jsxTagEnd))\n ) {\n introEnd++;\n }\n if (introEnd === this.tokens.currentIndex() + 1) {\n const tagName = this.tokens.identifierName();\n if (startsWithLowerCase(tagName)) {\n this.tokens.replaceToken(`'${tagName}'`);\n }\n }\n while (this.tokens.currentIndex() < introEnd) {\n this.rootTransformer.processToken();\n }\n }\n\n /**\n * Starting at the beginning of the props, add the props argument to\n * React.createElement, including the comma before it.\n */\n processPropsObjectWithDevInfo(elementLocationCode) {\n const devProps = this.options.production\n ? \"\"\n : `__self: this, __source: ${this.getDevSource(elementLocationCode)}`;\n if (!this.tokens.matches1(tt.jsxName) && !this.tokens.matches1(tt.braceL)) {\n if (devProps) {\n this.tokens.appendCode(`, {${devProps}}`);\n } else {\n this.tokens.appendCode(`, null`);\n }\n return;\n }\n this.tokens.appendCode(`, {`);\n this.processProps(false);\n if (devProps) {\n this.tokens.appendCode(` ${devProps}}`);\n } else {\n this.tokens.appendCode(\"}\");\n }\n }\n\n /**\n * Transform the core part of the props, assuming that a { has already been\n * inserted before us and that a } will be inserted after us.\n *\n * If extractKeyCode is true (i.e. when using any jsx... function), any prop\n * named \"key\" has its code captured and returned rather than being emitted to\n * the output code. This shifts line numbers, and emitting the code later will\n * correct line numbers again. If no key is found or if extractKeyCode is\n * false, this function returns null.\n */\n processProps(extractKeyCode) {\n let keyCode = null;\n while (true) {\n if (this.tokens.matches2(tt.jsxName, tt.eq)) {\n // This is a regular key={value} or key=\"value\" prop.\n const propName = this.tokens.identifierName();\n if (extractKeyCode && propName === \"key\") {\n if (keyCode !== null) {\n // The props list has multiple keys. Different implementations are\n // inconsistent about what to do here: as of this writing, Babel and\n // swc keep the *last* key and completely remove the rest, while\n // TypeScript uses the *first* key and leaves the others as regular\n // props. The React team collaborated with Babel on the\n // implementation of this behavior, so presumably the Babel behavior\n // is the one to use.\n // Since we won't ever be emitting the previous key code, we need to\n // at least emit its newlines here so that the line numbers match up\n // in the long run.\n this.tokens.appendCode(keyCode.replace(/[^\\n]/g, \"\"));\n }\n // key\n this.tokens.removeToken();\n // =\n this.tokens.removeToken();\n const snapshot = this.tokens.snapshot();\n this.processPropValue();\n keyCode = this.tokens.dangerouslyGetAndRemoveCodeSinceSnapshot(snapshot);\n // Don't add a comma\n continue;\n } else {\n this.processPropName(propName);\n this.tokens.replaceToken(\": \");\n this.processPropValue();\n }\n } else if (this.tokens.matches1(tt.jsxName)) {\n // This is a shorthand prop like <input disabled />.\n const propName = this.tokens.identifierName();\n this.processPropName(propName);\n this.tokens.appendCode(\": true\");\n } else if (this.tokens.matches1(tt.braceL)) {\n // This is prop spread, like <div {...getProps()}>, which we can pass\n // through fairly directly as an object spread.\n this.tokens.replaceToken(\"\");\n this.rootTransformer.processBalancedCode();\n this.tokens.replaceToken(\"\");\n } else {\n break;\n }\n this.tokens.appendCode(\",\");\n }\n return keyCode;\n }\n\n processPropName(propName) {\n if (propName.includes(\"-\")) {\n this.tokens.replaceToken(`'${propName}'`);\n } else {\n this.tokens.copyToken();\n }\n }\n\n processPropValue() {\n if (this.tokens.matches1(tt.braceL)) {\n this.tokens.replaceToken(\"\");\n this.rootTransformer.processBalancedCode();\n this.tokens.replaceToken(\"\");\n } else if (this.tokens.matches1(tt.jsxTagStart)) {\n this.processJSXTag();\n } else {\n this.processStringPropValue();\n }\n }\n\n processStringPropValue() {\n const token = this.tokens.currentToken();\n const valueCode = this.tokens.code.slice(token.start + 1, token.end - 1);\n const replacementCode = formatJSXTextReplacement(valueCode);\n const literalCode = formatJSXStringValueLiteral(valueCode);\n this.tokens.replaceToken(literalCode + replacementCode);\n }\n\n /**\n * Starting in the middle of the props object literal, produce an additional\n * prop for the children and close the object literal.\n */\n processAutomaticChildrenAndEndProps(jsxRole) {\n if (jsxRole === JSXRole.StaticChildren) {\n this.tokens.appendCode(\" children: [\");\n this.processChildren(false);\n this.tokens.appendCode(\"]}\");\n } else {\n // The parser information tells us whether we will see a real child or if\n // all remaining children (if any) will resolve to empty. If there are no\n // non-empty children, don't emit a children prop at all, but still\n // process children so that we properly transform the code into nothing.\n if (jsxRole === JSXRole.OneChild) {\n this.tokens.appendCode(\" children: \");\n }\n this.processChildren(false);\n this.tokens.appendCode(\"}\");\n }\n }\n\n /**\n * Transform children into a comma-separated list, which will be either\n * arguments to createElement or array elements of a children prop.\n */\n processChildren(needsInitialComma) {\n let needsComma = needsInitialComma;\n while (true) {\n if (this.tokens.matches2(tt.jsxTagStart, tt.slash)) {\n // Closing tag, so no more children.\n return;\n }\n let didEmitElement = false;\n if (this.tokens.matches1(tt.braceL)) {\n if (this.tokens.matches2(tt.braceL, tt.braceR)) {\n // Empty interpolations and comment-only interpolations are allowed\n // and don't create an extra child arg.\n this.tokens.replaceToken(\"\");\n this.tokens.replaceToken(\"\");\n } else {\n // Interpolated expression.\n this.tokens.replaceToken(needsComma ? \", \" : \"\");\n this.rootTransformer.processBalancedCode();\n this.tokens.replaceToken(\"\");\n didEmitElement = true;\n }\n } else if (this.tokens.matches1(tt.jsxTagStart)) {\n // Child JSX element\n this.tokens.appendCode(needsComma ? \", \" : \"\");\n this.processJSXTag();\n didEmitElement = true;\n } else if (this.tokens.matches1(tt.jsxText) || this.tokens.matches1(tt.jsxEmptyText)) {\n didEmitElement = this.processChildTextElement(needsComma);\n } else {\n throw new Error(\"Unexpected token when processing JSX children.\");\n }\n if (didEmitElement) {\n needsComma = true;\n }\n }\n }\n\n /**\n * Turn a JSX text element into a string literal, or nothing at all if the JSX\n * text resolves to the empty string.\n *\n * Returns true if a string literal is emitted, false otherwise.\n */\n processChildTextElement(needsComma) {\n const token = this.tokens.currentToken();\n const valueCode = this.tokens.code.slice(token.start, token.end);\n const replacementCode = formatJSXTextReplacement(valueCode);\n const literalCode = formatJSXTextLiteral(valueCode);\n if (literalCode === '\"\"') {\n this.tokens.replaceToken(replacementCode);\n return false;\n } else {\n this.tokens.replaceToken(`${needsComma ? \", \" : \"\"}${literalCode}${replacementCode}`);\n return true;\n }\n }\n\n getDevSource(elementLocationCode) {\n return `{fileName: ${this.getFilenameVarName()}, ${elementLocationCode}}`;\n }\n\n getFilenameVarName() {\n if (!this.filenameVarName) {\n this.filenameVarName = this.nameManager.claimFreeName(\"_jsxFileName\");\n }\n return this.filenameVarName;\n }\n}\n\n/**\n * Spec for identifiers: https://tc39.github.io/ecma262/#prod-IdentifierStart.\n *\n * Really only treat anything starting with a-z as tag names. `_`, `$`, `\u00E9`\n * should be treated as component names\n */\nexport function startsWithLowerCase(s) {\n const firstChar = s.charCodeAt(0);\n return firstChar >= charCodes.lowercaseA && firstChar <= charCodes.lowercaseZ;\n}\n\n/**\n * Turn the given jsxText string into a JS string literal. Leading and trailing\n * whitespace on lines is removed, except immediately after the open-tag and\n * before the close-tag. Empty lines are completely removed, and spaces are\n * added between lines after that.\n *\n * We use JSON.stringify to introduce escape characters as necessary, and trim\n * the start and end of each line and remove blank lines.\n */\nfunction formatJSXTextLiteral(text) {\n let result = \"\";\n let whitespace = \"\";\n\n let isInInitialLineWhitespace = false;\n let seenNonWhitespace = false;\n for (let i = 0; i < text.length; i++) {\n const c = text[i];\n if (c === \" \" || c === \"\\t\" || c === \"\\r\") {\n if (!isInInitialLineWhitespace) {\n whitespace += c;\n }\n } else if (c === \"\\n\") {\n whitespace = \"\";\n isInInitialLineWhitespace = true;\n } else {\n if (seenNonWhitespace && isInInitialLineWhitespace) {\n result += \" \";\n }\n result += whitespace;\n whitespace = \"\";\n if (c === \"&\") {\n const {entity, newI} = processEntity(text, i + 1);\n i = newI - 1;\n result += entity;\n } else {\n result += c;\n }\n seenNonWhitespace = true;\n isInInitialLineWhitespace = false;\n }\n }\n if (!isInInitialLineWhitespace) {\n result += whitespace;\n }\n return JSON.stringify(result);\n}\n\n/**\n * Produce the code that should be printed after the JSX text string literal,\n * with most content removed, but all newlines preserved and all spacing at the\n * end preserved.\n */\nfunction formatJSXTextReplacement(text) {\n let numNewlines = 0;\n let numSpaces = 0;\n for (const c of text) {\n if (c === \"\\n\") {\n numNewlines++;\n numSpaces = 0;\n } else if (c === \" \") {\n numSpaces++;\n }\n }\n return \"\\n\".repeat(numNewlines) + \" \".repeat(numSpaces);\n}\n\n/**\n * Format a string in the value position of a JSX prop.\n *\n * Use the same implementation as convertAttribute from\n * babel-helper-builder-react-jsx.\n */\nfunction formatJSXStringValueLiteral(text) {\n let result = \"\";\n for (let i = 0; i < text.length; i++) {\n const c = text[i];\n if (c === \"\\n\") {\n if (/\\s/.test(text[i + 1])) {\n result += \" \";\n while (i < text.length && /\\s/.test(text[i + 1])) {\n i++;\n }\n } else {\n result += \"\\n\";\n }\n } else if (c === \"&\") {\n const {entity, newI} = processEntity(text, i + 1);\n result += entity;\n i = newI - 1;\n } else {\n result += c;\n }\n }\n return JSON.stringify(result);\n}\n\n/**\n * Starting at a &, see if there's an HTML entity (specified by name, decimal\n * char code, or hex char code) and return it if so.\n *\n * Modified from jsxReadString in babel-parser.\n */\nfunction processEntity(text, indexAfterAmpersand) {\n let str = \"\";\n let count = 0;\n let entity;\n let i = indexAfterAmpersand;\n\n if (text[i] === \"#\") {\n let radix = 10;\n i++;\n let numStart;\n if (text[i] === \"x\") {\n radix = 16;\n i++;\n numStart = i;\n while (i < text.length && isHexDigit(text.charCodeAt(i))) {\n i++;\n }\n } else {\n numStart = i;\n while (i < text.length && isDecimalDigit(text.charCodeAt(i))) {\n i++;\n }\n }\n if (text[i] === \";\") {\n const numStr = text.slice(numStart, i);\n if (numStr) {\n i++;\n entity = String.fromCodePoint(parseInt(numStr, radix));\n }\n }\n } else {\n while (i < text.length && count++ < 10) {\n const ch = text[i];\n i++;\n if (ch === \";\") {\n entity = XHTMLEntities.get(str);\n break;\n }\n str += ch;\n }\n }\n\n if (!entity) {\n return {entity: \"&\", newI: indexAfterAmpersand};\n }\n return {entity, newI: i};\n}\n\nfunction isDecimalDigit(code) {\n return code >= charCodes.digit0 && code <= charCodes.digit9;\n}\n\nfunction isHexDigit(code) {\n return (\n (code >= charCodes.digit0 && code <= charCodes.digit9) ||\n (code >= charCodes.lowercaseA && code <= charCodes.lowercaseF) ||\n (code >= charCodes.uppercaseA && code <= charCodes.uppercaseF)\n );\n}\n", "\nimport {IdentifierRole} from \"../parser/tokenizer\";\nimport {TokenType, TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport {startsWithLowerCase} from \"../transformers/JSXTransformer\";\nimport getJSXPragmaInfo from \"./getJSXPragmaInfo\";\n\nexport function getNonTypeIdentifiers(tokens, options) {\n const jsxPragmaInfo = getJSXPragmaInfo(options);\n const nonTypeIdentifiers = new Set();\n for (let i = 0; i < tokens.tokens.length; i++) {\n const token = tokens.tokens[i];\n if (\n token.type === tt.name &&\n !token.isType &&\n (token.identifierRole === IdentifierRole.Access ||\n token.identifierRole === IdentifierRole.ObjectShorthand ||\n token.identifierRole === IdentifierRole.ExportAccess) &&\n !token.shadowsGlobal\n ) {\n nonTypeIdentifiers.add(tokens.identifierNameForToken(token));\n }\n if (token.type === tt.jsxTagStart) {\n nonTypeIdentifiers.add(jsxPragmaInfo.base);\n }\n if (\n token.type === tt.jsxTagStart &&\n i + 1 < tokens.tokens.length &&\n tokens.tokens[i + 1].type === tt.jsxTagEnd\n ) {\n nonTypeIdentifiers.add(jsxPragmaInfo.base);\n nonTypeIdentifiers.add(jsxPragmaInfo.fragmentBase);\n }\n if (token.type === tt.jsxName && token.identifierRole === IdentifierRole.Access) {\n const identifierName = tokens.identifierNameForToken(token);\n // Lower-case single-component tag names like \"div\" don't count.\n if (!startsWithLowerCase(identifierName) || tokens.tokens[i + 1].type === TokenType.dot) {\n nonTypeIdentifiers.add(tokens.identifierNameForToken(token));\n }\n }\n }\n return nonTypeIdentifiers;\n}\n", "\n\n\nimport {isDeclaration} from \"./parser/tokenizer\";\nimport {ContextualKeyword} from \"./parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"./parser/tokenizer/types\";\n\nimport getImportExportSpecifierInfo from \"./util/getImportExportSpecifierInfo\";\nimport {getNonTypeIdentifiers} from \"./util/getNonTypeIdentifiers\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Class responsible for preprocessing and bookkeeping import and export declarations within the\n * file.\n *\n * TypeScript uses a simpler mechanism that does not use functions like interopRequireDefault and\n * interopRequireWildcard, so we also allow that mode for compatibility.\n */\nexport default class CJSImportProcessor {\n __init() {this.nonTypeIdentifiers = new Set()}\n __init2() {this.importInfoByPath = new Map()}\n __init3() {this.importsToReplace = new Map()}\n __init4() {this.identifierReplacements = new Map()}\n __init5() {this.exportBindingsByLocalName = new Map()}\n\n constructor(\n nameManager,\n tokens,\n enableLegacyTypeScriptModuleInterop,\n options,\n isTypeScriptTransformEnabled,\n keepUnusedImports,\n helperManager,\n ) {;this.nameManager = nameManager;this.tokens = tokens;this.enableLegacyTypeScriptModuleInterop = enableLegacyTypeScriptModuleInterop;this.options = options;this.isTypeScriptTransformEnabled = isTypeScriptTransformEnabled;this.keepUnusedImports = keepUnusedImports;this.helperManager = helperManager;CJSImportProcessor.prototype.__init.call(this);CJSImportProcessor.prototype.__init2.call(this);CJSImportProcessor.prototype.__init3.call(this);CJSImportProcessor.prototype.__init4.call(this);CJSImportProcessor.prototype.__init5.call(this);}\n\n preprocessTokens() {\n for (let i = 0; i < this.tokens.tokens.length; i++) {\n if (\n this.tokens.matches1AtIndex(i, tt._import) &&\n !this.tokens.matches3AtIndex(i, tt._import, tt.name, tt.eq)\n ) {\n this.preprocessImportAtIndex(i);\n }\n if (\n this.tokens.matches1AtIndex(i, tt._export) &&\n !this.tokens.matches2AtIndex(i, tt._export, tt.eq)\n ) {\n this.preprocessExportAtIndex(i);\n }\n }\n this.generateImportReplacements();\n }\n\n /**\n * In TypeScript, import statements that only import types should be removed.\n * This includes `import {} from 'foo';`, but not `import 'foo';`.\n */\n pruneTypeOnlyImports() {\n this.nonTypeIdentifiers = getNonTypeIdentifiers(this.tokens, this.options);\n for (const [path, importInfo] of this.importInfoByPath.entries()) {\n if (\n importInfo.hasBareImport ||\n importInfo.hasStarExport ||\n importInfo.exportStarNames.length > 0 ||\n importInfo.namedExports.length > 0\n ) {\n continue;\n }\n const names = [\n ...importInfo.defaultNames,\n ...importInfo.wildcardNames,\n ...importInfo.namedImports.map(({localName}) => localName),\n ];\n if (names.every((name) => this.shouldAutomaticallyElideImportedName(name))) {\n this.importsToReplace.set(path, \"\");\n }\n }\n }\n\n shouldAutomaticallyElideImportedName(name) {\n return (\n this.isTypeScriptTransformEnabled &&\n !this.keepUnusedImports &&\n !this.nonTypeIdentifiers.has(name)\n );\n }\n\n generateImportReplacements() {\n for (const [path, importInfo] of this.importInfoByPath.entries()) {\n const {\n defaultNames,\n wildcardNames,\n namedImports,\n namedExports,\n exportStarNames,\n hasStarExport,\n } = importInfo;\n\n if (\n defaultNames.length === 0 &&\n wildcardNames.length === 0 &&\n namedImports.length === 0 &&\n namedExports.length === 0 &&\n exportStarNames.length === 0 &&\n !hasStarExport\n ) {\n // Import is never used, so don't even assign a name.\n this.importsToReplace.set(path, `require('${path}');`);\n continue;\n }\n\n const primaryImportName = this.getFreeIdentifierForPath(path);\n let secondaryImportName;\n if (this.enableLegacyTypeScriptModuleInterop) {\n secondaryImportName = primaryImportName;\n } else {\n secondaryImportName =\n wildcardNames.length > 0 ? wildcardNames[0] : this.getFreeIdentifierForPath(path);\n }\n let requireCode = `var ${primaryImportName} = require('${path}');`;\n if (wildcardNames.length > 0) {\n for (const wildcardName of wildcardNames) {\n const moduleExpr = this.enableLegacyTypeScriptModuleInterop\n ? primaryImportName\n : `${this.helperManager.getHelperName(\"interopRequireWildcard\")}(${primaryImportName})`;\n requireCode += ` var ${wildcardName} = ${moduleExpr};`;\n }\n } else if (exportStarNames.length > 0 && secondaryImportName !== primaryImportName) {\n requireCode += ` var ${secondaryImportName} = ${this.helperManager.getHelperName(\n \"interopRequireWildcard\",\n )}(${primaryImportName});`;\n } else if (defaultNames.length > 0 && secondaryImportName !== primaryImportName) {\n requireCode += ` var ${secondaryImportName} = ${this.helperManager.getHelperName(\n \"interopRequireDefault\",\n )}(${primaryImportName});`;\n }\n\n for (const {importedName, localName} of namedExports) {\n requireCode += ` ${this.helperManager.getHelperName(\n \"createNamedExportFrom\",\n )}(${primaryImportName}, '${localName}', '${importedName}');`;\n }\n for (const exportStarName of exportStarNames) {\n requireCode += ` exports.${exportStarName} = ${secondaryImportName};`;\n }\n if (hasStarExport) {\n requireCode += ` ${this.helperManager.getHelperName(\n \"createStarExport\",\n )}(${primaryImportName});`;\n }\n\n this.importsToReplace.set(path, requireCode);\n\n for (const defaultName of defaultNames) {\n this.identifierReplacements.set(defaultName, `${secondaryImportName}.default`);\n }\n for (const {importedName, localName} of namedImports) {\n this.identifierReplacements.set(localName, `${primaryImportName}.${importedName}`);\n }\n }\n }\n\n getFreeIdentifierForPath(path) {\n const components = path.split(\"/\");\n const lastComponent = components[components.length - 1];\n const baseName = lastComponent.replace(/\\W/g, \"\");\n return this.nameManager.claimFreeName(`_${baseName}`);\n }\n\n preprocessImportAtIndex(index) {\n const defaultNames = [];\n const wildcardNames = [];\n const namedImports = [];\n\n index++;\n if (\n (this.tokens.matchesContextualAtIndex(index, ContextualKeyword._type) ||\n this.tokens.matches1AtIndex(index, tt._typeof)) &&\n !this.tokens.matches1AtIndex(index + 1, tt.comma) &&\n !this.tokens.matchesContextualAtIndex(index + 1, ContextualKeyword._from)\n ) {\n // import type declaration, so no need to process anything.\n return;\n }\n\n if (this.tokens.matches1AtIndex(index, tt.parenL)) {\n // Dynamic import, so nothing to do\n return;\n }\n\n if (this.tokens.matches1AtIndex(index, tt.name)) {\n defaultNames.push(this.tokens.identifierNameAtIndex(index));\n index++;\n if (this.tokens.matches1AtIndex(index, tt.comma)) {\n index++;\n }\n }\n\n if (this.tokens.matches1AtIndex(index, tt.star)) {\n // * as\n index += 2;\n wildcardNames.push(this.tokens.identifierNameAtIndex(index));\n index++;\n }\n\n if (this.tokens.matches1AtIndex(index, tt.braceL)) {\n const result = this.getNamedImports(index + 1);\n index = result.newIndex;\n\n for (const namedImport of result.namedImports) {\n // Treat {default as X} as a default import to ensure usage of require interop helper\n if (namedImport.importedName === \"default\") {\n defaultNames.push(namedImport.localName);\n } else {\n namedImports.push(namedImport);\n }\n }\n }\n\n if (this.tokens.matchesContextualAtIndex(index, ContextualKeyword._from)) {\n index++;\n }\n\n if (!this.tokens.matches1AtIndex(index, tt.string)) {\n throw new Error(\"Expected string token at the end of import statement.\");\n }\n const path = this.tokens.stringValueAtIndex(index);\n const importInfo = this.getImportInfo(path);\n importInfo.defaultNames.push(...defaultNames);\n importInfo.wildcardNames.push(...wildcardNames);\n importInfo.namedImports.push(...namedImports);\n if (defaultNames.length === 0 && wildcardNames.length === 0 && namedImports.length === 0) {\n importInfo.hasBareImport = true;\n }\n }\n\n preprocessExportAtIndex(index) {\n if (\n this.tokens.matches2AtIndex(index, tt._export, tt._var) ||\n this.tokens.matches2AtIndex(index, tt._export, tt._let) ||\n this.tokens.matches2AtIndex(index, tt._export, tt._const)\n ) {\n this.preprocessVarExportAtIndex(index);\n } else if (\n this.tokens.matches2AtIndex(index, tt._export, tt._function) ||\n this.tokens.matches2AtIndex(index, tt._export, tt._class)\n ) {\n const exportName = this.tokens.identifierNameAtIndex(index + 2);\n this.addExportBinding(exportName, exportName);\n } else if (this.tokens.matches3AtIndex(index, tt._export, tt.name, tt._function)) {\n const exportName = this.tokens.identifierNameAtIndex(index + 3);\n this.addExportBinding(exportName, exportName);\n } else if (this.tokens.matches2AtIndex(index, tt._export, tt.braceL)) {\n this.preprocessNamedExportAtIndex(index);\n } else if (this.tokens.matches2AtIndex(index, tt._export, tt.star)) {\n this.preprocessExportStarAtIndex(index);\n }\n }\n\n preprocessVarExportAtIndex(index) {\n let depth = 0;\n // Handle cases like `export let {x} = y;`, starting at the open-brace in that case.\n for (let i = index + 2; ; i++) {\n if (\n this.tokens.matches1AtIndex(i, tt.braceL) ||\n this.tokens.matches1AtIndex(i, tt.dollarBraceL) ||\n this.tokens.matches1AtIndex(i, tt.bracketL)\n ) {\n depth++;\n } else if (\n this.tokens.matches1AtIndex(i, tt.braceR) ||\n this.tokens.matches1AtIndex(i, tt.bracketR)\n ) {\n depth--;\n } else if (depth === 0 && !this.tokens.matches1AtIndex(i, tt.name)) {\n break;\n } else if (this.tokens.matches1AtIndex(1, tt.eq)) {\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n i = endIndex - 1;\n } else {\n const token = this.tokens.tokens[i];\n if (isDeclaration(token)) {\n const exportName = this.tokens.identifierNameAtIndex(i);\n this.identifierReplacements.set(exportName, `exports.${exportName}`);\n }\n }\n }\n }\n\n /**\n * Walk this export statement just in case it's an export...from statement.\n * If it is, combine it into the import info for that path. Otherwise, just\n * bail out; it'll be handled later.\n */\n preprocessNamedExportAtIndex(index) {\n // export {\n index += 2;\n const {newIndex, namedImports} = this.getNamedImports(index);\n index = newIndex;\n\n if (this.tokens.matchesContextualAtIndex(index, ContextualKeyword._from)) {\n index++;\n } else {\n // Reinterpret \"a as b\" to be local/exported rather than imported/local.\n for (const {importedName: localName, localName: exportedName} of namedImports) {\n this.addExportBinding(localName, exportedName);\n }\n return;\n }\n\n if (!this.tokens.matches1AtIndex(index, tt.string)) {\n throw new Error(\"Expected string token at the end of import statement.\");\n }\n const path = this.tokens.stringValueAtIndex(index);\n const importInfo = this.getImportInfo(path);\n importInfo.namedExports.push(...namedImports);\n }\n\n preprocessExportStarAtIndex(index) {\n let exportedName = null;\n if (this.tokens.matches3AtIndex(index, tt._export, tt.star, tt._as)) {\n // export * as\n index += 3;\n exportedName = this.tokens.identifierNameAtIndex(index);\n // foo from\n index += 2;\n } else {\n // export * from\n index += 3;\n }\n if (!this.tokens.matches1AtIndex(index, tt.string)) {\n throw new Error(\"Expected string token at the end of star export statement.\");\n }\n const path = this.tokens.stringValueAtIndex(index);\n const importInfo = this.getImportInfo(path);\n if (exportedName !== null) {\n importInfo.exportStarNames.push(exportedName);\n } else {\n importInfo.hasStarExport = true;\n }\n }\n\n getNamedImports(index) {\n const namedImports = [];\n while (true) {\n if (this.tokens.matches1AtIndex(index, tt.braceR)) {\n index++;\n break;\n }\n\n const specifierInfo = getImportExportSpecifierInfo(this.tokens, index);\n index = specifierInfo.endIndex;\n if (!specifierInfo.isType) {\n namedImports.push({\n importedName: specifierInfo.leftName,\n localName: specifierInfo.rightName,\n });\n }\n\n if (this.tokens.matches2AtIndex(index, tt.comma, tt.braceR)) {\n index += 2;\n break;\n } else if (this.tokens.matches1AtIndex(index, tt.braceR)) {\n index++;\n break;\n } else if (this.tokens.matches1AtIndex(index, tt.comma)) {\n index++;\n } else {\n throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.tokens[index])}`);\n }\n }\n return {newIndex: index, namedImports};\n }\n\n /**\n * Get a mutable import info object for this path, creating one if it doesn't\n * exist yet.\n */\n getImportInfo(path) {\n const existingInfo = this.importInfoByPath.get(path);\n if (existingInfo) {\n return existingInfo;\n }\n const newInfo = {\n defaultNames: [],\n wildcardNames: [],\n namedImports: [],\n namedExports: [],\n hasBareImport: false,\n exportStarNames: [],\n hasStarExport: false,\n };\n this.importInfoByPath.set(path, newInfo);\n return newInfo;\n }\n\n addExportBinding(localName, exportedName) {\n if (!this.exportBindingsByLocalName.has(localName)) {\n this.exportBindingsByLocalName.set(localName, []);\n }\n this.exportBindingsByLocalName.get(localName).push(exportedName);\n }\n\n /**\n * Return the code to use for the import for this path, or the empty string if\n * the code has already been \"claimed\" by a previous import.\n */\n claimImportCode(importPath) {\n const result = this.importsToReplace.get(importPath);\n this.importsToReplace.set(importPath, \"\");\n return result || \"\";\n }\n\n getIdentifierReplacement(identifierName) {\n return this.identifierReplacements.get(identifierName) || null;\n }\n\n /**\n * Return a string like `exports.foo = exports.bar`.\n */\n resolveExportBinding(assignedName) {\n const exportedNames = this.exportBindingsByLocalName.get(assignedName);\n if (!exportedNames || exportedNames.length === 0) {\n return null;\n }\n return exportedNames.map((exportedName) => `exports.${exportedName}`).join(\" = \");\n }\n\n /**\n * Return all imported/exported names where we might be interested in whether usages of those\n * names are shadowed.\n */\n getGlobalNames() {\n return new Set([\n ...this.identifierReplacements.keys(),\n ...this.exportBindingsByLocalName.keys(),\n ]);\n }\n}\n", "import type { StringReader, StringWriter } from './strings';\n\nexport const comma = ','.charCodeAt(0);\nexport const semicolon = ';'.charCodeAt(0);\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n const c = chars.charCodeAt(i);\n intToChar[i] = c;\n charToInt[c] = i;\n}\n\nexport function decodeInteger(reader: StringReader): number {\n let value = 0;\n let shift = 0;\n let integer = 0;\n\n do {\n const c = reader.next();\n integer = charToInt[c];\n value |= (integer & 31) << shift;\n shift += 5;\n } while (integer & 32);\n\n return value;\n}\n\nexport function decodeSign(num: number): number {\n return num & 1 ? -0x80000000 | -(num >>> 1) : num >>> 1;\n}\n\nexport function encodeInteger(builder: StringWriter, num: number) {\n do {\n let clamped = num & 0b011111;\n num >>>= 5;\n if (num > 0) clamped |= 0b100000;\n builder.write(intToChar[clamped]);\n } while (num > 0);\n}\n\nexport function encodeSign(num: number): number {\n return num < 0 ? (-num << 1) | 1 : num << 1;\n}\n\nexport function hasMoreVlq(reader: StringReader, max: number) {\n if (reader.pos >= max) return false;\n return reader.peek() !== comma;\n}\n", "const bufLength = 1024 * 16;\n\n// Provide a fallback for older environments.\nconst td =\n typeof TextDecoder !== 'undefined'\n ? /* #__PURE__ */ new TextDecoder()\n : typeof Buffer !== 'undefined'\n ? {\n decode(buf: Uint8Array): string {\n const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n return out.toString();\n },\n }\n : {\n decode(buf: Uint8Array): string {\n let out = '';\n for (let i = 0; i < buf.length; i++) {\n out += String.fromCharCode(buf[i]);\n }\n return out;\n },\n };\n\nexport class StringWriter {\n pos = 0;\n private out = '';\n private buffer = new Uint8Array(bufLength);\n\n write(v: number): void {\n const { buffer } = this;\n buffer[this.pos++] = v;\n if (this.pos === bufLength) {\n this.out += td.decode(buffer);\n this.pos = 0;\n }\n }\n\n flush(): string {\n const { buffer, out, pos } = this;\n return pos > 0 ? out + td.decode(buffer.subarray(0, pos)) : out;\n }\n}\n\nexport class StringReader {\n pos = 0;\n declare private buffer: string;\n\n constructor(buffer: string) {\n this.buffer = buffer;\n }\n\n next(): number {\n return this.buffer.charCodeAt(this.pos++);\n }\n\n peek(): number {\n return this.buffer.charCodeAt(this.pos);\n }\n\n indexOf(char: string): number {\n const { buffer, pos } = this;\n const idx = buffer.indexOf(char, pos);\n return idx === -1 ? buffer.length : idx;\n }\n}\n", "import { StringReader, StringWriter } from './strings';\nimport {\n comma,\n decodeInteger,\n decodeSign,\n encodeInteger,\n encodeSign,\n hasMoreVlq,\n semicolon,\n} from './vlq';\n\nconst EMPTY: any[] = [];\n\ntype Line = number;\ntype Column = number;\ntype Kind = number;\ntype Name = number;\ntype Var = number;\ntype SourcesIndex = number;\ntype ScopesIndex = number;\n\ntype Mix<A, B, O> = (A & O) | (B & O);\n\nexport type OriginalScope = Mix<\n [Line, Column, Line, Column, Kind],\n [Line, Column, Line, Column, Kind, Name],\n { vars: Var[] }\n>;\n\nexport type GeneratedRange = Mix<\n [Line, Column, Line, Column],\n [Line, Column, Line, Column, SourcesIndex, ScopesIndex],\n {\n callsite: CallSite | null;\n bindings: Binding[];\n isScope: boolean;\n }\n>;\nexport type CallSite = [SourcesIndex, Line, Column];\ntype Binding = BindingExpressionRange[];\nexport type BindingExpressionRange = [Name] | [Name, Line, Column];\n\nexport function decodeOriginalScopes(input: string): OriginalScope[] {\n const { length } = input;\n const reader = new StringReader(input);\n const scopes: OriginalScope[] = [];\n const stack: OriginalScope[] = [];\n let line = 0;\n\n for (; reader.pos < length; reader.pos++) {\n line += decodeSign(decodeInteger(reader));\n const column = decodeSign(decodeInteger(reader));\n\n if (!hasMoreVlq(reader, length)) {\n const last = stack.pop()!;\n last[2] = line;\n last[3] = column;\n continue;\n }\n\n const kind = decodeSign(decodeInteger(reader));\n const fields = decodeSign(decodeInteger(reader));\n const hasName = fields & 0b0001;\n\n const scope: OriginalScope = (\n hasName\n ? [line, column, 0, 0, kind, decodeSign(decodeInteger(reader))]\n : [line, column, 0, 0, kind]\n ) as OriginalScope;\n\n let vars: Var[] = EMPTY;\n if (hasMoreVlq(reader, length)) {\n vars = [];\n do {\n const varsIndex = decodeSign(decodeInteger(reader));\n vars.push(varsIndex);\n } while (hasMoreVlq(reader, length));\n }\n scope.vars = vars;\n\n scopes.push(scope);\n stack.push(scope);\n }\n\n return scopes;\n}\n\nexport function encodeOriginalScopes(scopes: OriginalScope[]): string {\n const writer = new StringWriter();\n\n for (let i = 0; i < scopes.length; ) {\n i = _encodeOriginalScopes(scopes, i, writer, [0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeOriginalScopes(\n scopes: OriginalScope[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenColumn\n ],\n): number {\n const scope = scopes[index];\n const { 0: startLine, 1: startColumn, 2: endLine, 3: endColumn, 4: kind, vars } = scope;\n\n if (index > 0) writer.write(comma);\n\n encodeInteger(writer, encodeSign(startLine - state[0]));\n state[0] = startLine;\n encodeInteger(writer, encodeSign(startColumn));\n encodeInteger(writer, encodeSign(kind));\n\n const fields = scope.length === 6 ? 0b0001 : 0;\n encodeInteger(writer, encodeSign(fields));\n if (scope.length === 6) encodeInteger(writer, encodeSign(scope[5]));\n\n for (const v of vars) {\n encodeInteger(writer, encodeSign(v));\n }\n\n for (index++; index < scopes.length; ) {\n const next = scopes[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeOriginalScopes(scopes, index, writer, state);\n }\n\n writer.write(comma);\n encodeInteger(writer, encodeSign(endLine - state[0]));\n state[0] = endLine;\n encodeInteger(writer, encodeSign(endColumn));\n\n return index;\n}\n\nexport function decodeGeneratedRanges(input: string): GeneratedRange[] {\n const { length } = input;\n const reader = new StringReader(input);\n const ranges: GeneratedRange[] = [];\n const stack: GeneratedRange[] = [];\n\n let genLine = 0;\n let definitionSourcesIndex = 0;\n let definitionScopeIndex = 0;\n let callsiteSourcesIndex = 0;\n let callsiteLine = 0;\n let callsiteColumn = 0;\n let bindingLine = 0;\n let bindingColumn = 0;\n\n do {\n const semi = reader.indexOf(';');\n let genColumn = 0;\n\n for (; reader.pos < semi; reader.pos++) {\n genColumn += decodeSign(decodeInteger(reader));\n\n if (!hasMoreVlq(reader, semi)) {\n const last = stack.pop()!;\n last[2] = genLine;\n last[3] = genColumn;\n continue;\n }\n\n const fields = decodeSign(decodeInteger(reader));\n const hasDefinition = fields & 0b0001;\n const hasCallsite = fields & 0b0010;\n const hasScope = fields & 0b0100;\n\n let callsite: CallSite | null = null;\n let bindings: Binding[] = EMPTY;\n let range: GeneratedRange;\n if (hasDefinition) {\n const defSourcesIndex = definitionSourcesIndex + decodeSign(decodeInteger(reader));\n definitionScopeIndex =\n decodeSign(decodeInteger(reader)) +\n (definitionSourcesIndex === defSourcesIndex ? definitionScopeIndex : 0);\n\n definitionSourcesIndex = defSourcesIndex;\n range = [genLine, genColumn, 0, 0, defSourcesIndex, definitionScopeIndex] as GeneratedRange;\n } else {\n range = [genLine, genColumn, 0, 0] as GeneratedRange;\n }\n\n range.isScope = !!hasScope;\n\n if (hasCallsite) {\n const prevCsi = callsiteSourcesIndex;\n const prevLine = callsiteLine;\n callsiteSourcesIndex += decodeSign(decodeInteger(reader));\n const sameSource = prevCsi === callsiteSourcesIndex;\n callsiteLine = (sameSource ? callsiteLine : 0) + decodeSign(decodeInteger(reader));\n callsiteColumn =\n (sameSource && prevLine === callsiteLine ? callsiteColumn : 0) +\n decodeSign(decodeInteger(reader));\n\n callsite = [callsiteSourcesIndex, callsiteLine, callsiteColumn];\n }\n range.callsite = callsite;\n\n if (hasMoreVlq(reader, semi)) {\n bindings = [];\n do {\n bindingLine = genLine;\n bindingColumn = genColumn;\n const expressionsCount = decodeSign(decodeInteger(reader));\n let expressionRanges: BindingExpressionRange[];\n if (expressionsCount < -1) {\n expressionRanges = [[decodeSign(decodeInteger(reader))]];\n for (let i = -1; i > expressionsCount; i--) {\n const prevBl = bindingLine;\n bindingLine += decodeSign(decodeInteger(reader));\n bindingColumn =\n (bindingLine === prevBl ? bindingColumn : 0) + decodeSign(decodeInteger(reader));\n const expression = decodeSign(decodeInteger(reader));\n expressionRanges.push([expression, bindingLine, bindingColumn]);\n }\n } else {\n expressionRanges = [[expressionsCount]];\n }\n bindings.push(expressionRanges);\n } while (hasMoreVlq(reader, semi));\n }\n range.bindings = bindings;\n\n ranges.push(range);\n stack.push(range);\n }\n\n genLine++;\n reader.pos = semi + 1;\n } while (reader.pos < length);\n\n return ranges;\n}\n\nexport function encodeGeneratedRanges(ranges: GeneratedRange[]): string {\n if (ranges.length === 0) return '';\n\n const writer = new StringWriter();\n\n for (let i = 0; i < ranges.length; ) {\n i = _encodeGeneratedRanges(ranges, i, writer, [0, 0, 0, 0, 0, 0, 0]);\n }\n\n return writer.flush();\n}\n\nfunction _encodeGeneratedRanges(\n ranges: GeneratedRange[],\n index: number,\n writer: StringWriter,\n state: [\n number, // GenLine\n number, // GenColumn\n number, // DefSourcesIndex\n number, // DefScopesIndex\n number, // CallSourcesIndex\n number, // CallLine\n number, // CallColumn\n ],\n): number {\n const range = ranges[index];\n const {\n 0: startLine,\n 1: startColumn,\n 2: endLine,\n 3: endColumn,\n isScope,\n callsite,\n bindings,\n } = range;\n\n if (state[0] < startLine) {\n catchupLine(writer, state[0], startLine);\n state[0] = startLine;\n state[1] = 0;\n } else if (index > 0) {\n writer.write(comma);\n }\n\n encodeInteger(writer, encodeSign(range[1] - state[1]));\n state[1] = range[1];\n\n const fields =\n (range.length === 6 ? 0b0001 : 0) | (callsite ? 0b0010 : 0) | (isScope ? 0b0100 : 0);\n encodeInteger(writer, encodeSign(fields));\n\n if (range.length === 6) {\n const { 4: sourcesIndex, 5: scopesIndex } = range;\n if (sourcesIndex !== state[2]) {\n state[3] = 0;\n }\n encodeInteger(writer, encodeSign(sourcesIndex - state[2]));\n state[2] = sourcesIndex;\n encodeInteger(writer, encodeSign(scopesIndex - state[3]));\n state[3] = scopesIndex;\n }\n\n if (callsite) {\n const { 0: sourcesIndex, 1: callLine, 2: callColumn } = range.callsite!;\n if (sourcesIndex !== state[4]) {\n state[5] = 0;\n state[6] = 0;\n } else if (callLine !== state[5]) {\n state[6] = 0;\n }\n encodeInteger(writer, encodeSign(sourcesIndex - state[4]));\n state[4] = sourcesIndex;\n encodeInteger(writer, encodeSign(callLine - state[5]));\n state[5] = callLine;\n encodeInteger(writer, encodeSign(callColumn - state[6]));\n state[6] = callColumn;\n }\n\n if (bindings) {\n for (const binding of bindings) {\n if (binding.length > 1) encodeInteger(writer, encodeSign(-binding.length));\n const expression = binding[0][0];\n encodeInteger(writer, encodeSign(expression));\n let bindingStartLine = startLine;\n let bindingStartColumn = startColumn;\n for (let i = 1; i < binding.length; i++) {\n const expRange = binding[i];\n encodeInteger(writer, encodeSign(expRange[1]! - bindingStartLine));\n bindingStartLine = expRange[1]!;\n encodeInteger(writer, encodeSign(expRange[2]! - bindingStartColumn));\n bindingStartColumn = expRange[2]!;\n encodeInteger(writer, encodeSign(expRange[0]!));\n }\n }\n }\n\n for (index++; index < ranges.length; ) {\n const next = ranges[index];\n const { 0: l, 1: c } = next;\n if (l > endLine || (l === endLine && c >= endColumn)) {\n break;\n }\n index = _encodeGeneratedRanges(ranges, index, writer, state);\n }\n\n if (state[0] < endLine) {\n catchupLine(writer, state[0], endLine);\n state[0] = endLine;\n state[1] = 0;\n } else {\n writer.write(comma);\n }\n encodeInteger(writer, encodeSign(endColumn - state[1]));\n state[1] = endColumn;\n\n return index;\n}\n\nfunction catchupLine(writer: StringWriter, lastLine: number, line: number) {\n do {\n writer.write(semicolon);\n } while (++lastLine < line);\n}\n", "import { StringReader, StringWriter } from './strings';\nimport { decodeInteger, encodeInteger, semicolon } from './vlq';\n\nexport type MappingIndex = number;\nexport type RangeMappings = MappingIndex[][];\n\nexport function decodeRangeMappings(input: string): RangeMappings {\n const { length } = input;\n const reader = new StringReader(input);\n const rangeMappings: RangeMappings = [];\n\n do {\n const semi = reader.indexOf(';');\n const indices: MappingIndex[] = [];\n let index = 0;\n\n while (reader.pos < semi) {\n index += decodeInteger(reader);\n indices.push(index);\n }\n\n rangeMappings.push(indices);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return rangeMappings;\n}\n\nexport function encodeRangeMappings(decoded: RangeMappings): string {\n if (decoded.length === 0) return '';\n\n const writer = new StringWriter();\n\n for (let i = 0; i < decoded.length; i++) {\n const indices = decoded[i];\n if (i > 0) writer.write(semicolon);\n\n let index = 0;\n for (let j = 0; j < indices.length; j++) {\n const offset = indices[j];\n encodeInteger(writer, offset - index);\n index = offset;\n }\n }\n\n return writer.flush();\n}\n", "import {\n comma,\n decodeInteger,\n decodeSign,\n encodeInteger,\n encodeSign,\n hasMoreVlq,\n semicolon,\n} from './vlq';\nimport { StringWriter, StringReader } from './strings';\n\nexport {\n decodeOriginalScopes,\n encodeOriginalScopes,\n decodeGeneratedRanges,\n encodeGeneratedRanges,\n} from './scopes';\nexport type { OriginalScope, GeneratedRange, CallSite, BindingExpressionRange } from './scopes';\n\nexport { decodeRangeMappings, encodeRangeMappings } from './range-mappings';\nexport type { MappingIndex, RangeMappings } from './range-mappings';\n\nexport type SourceMapSegment =\n | [number]\n | [number, number, number, number]\n | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nexport function decode(mappings: string): SourceMapMappings {\n const { length } = mappings;\n const reader = new StringReader(mappings);\n const decoded: SourceMapMappings = [];\n let genColumn = 0;\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n do {\n const semi = reader.indexOf(';');\n const line: SourceMapLine = [];\n let sorted = true;\n let lastCol = 0;\n genColumn = 0;\n\n while (reader.pos < semi) {\n let seg: SourceMapSegment;\n\n genColumn += decodeSign(decodeInteger(reader));\n if (genColumn < lastCol) sorted = false;\n lastCol = genColumn;\n\n if (hasMoreVlq(reader, semi)) {\n sourcesIndex += decodeSign(decodeInteger(reader));\n sourceLine += decodeSign(decodeInteger(reader));\n sourceColumn += decodeSign(decodeInteger(reader));\n\n if (hasMoreVlq(reader, semi)) {\n namesIndex += decodeSign(decodeInteger(reader));\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex];\n } else {\n seg = [genColumn, sourcesIndex, sourceLine, sourceColumn];\n }\n } else {\n seg = [genColumn];\n }\n\n line.push(seg);\n reader.pos++;\n }\n\n if (!sorted) sort(line);\n decoded.push(line);\n reader.pos = semi + 1;\n } while (reader.pos <= length);\n\n return decoded;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string {\n const writer = new StringWriter();\n let sourcesIndex = 0;\n let sourceLine = 0;\n let sourceColumn = 0;\n let namesIndex = 0;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n if (i > 0) writer.write(semicolon);\n if (line.length === 0) continue;\n\n let genColumn = 0;\n\n for (let j = 0; j < line.length; j++) {\n const segment = line[j];\n if (j > 0) writer.write(comma);\n\n encodeInteger(writer, encodeSign(segment[0] - genColumn));\n genColumn = segment[0];\n\n if (segment.length === 1) continue;\n encodeInteger(writer, encodeSign(segment[1] - sourcesIndex));\n encodeInteger(writer, encodeSign(segment[2] - sourceLine));\n encodeInteger(writer, encodeSign(segment[3] - sourceColumn));\n sourcesIndex = segment[1];\n sourceLine = segment[2];\n sourceColumn = segment[3];\n\n if (segment.length === 4) continue;\n encodeInteger(writer, encodeSign(segment[4] - namesIndex));\n namesIndex = segment[4];\n }\n }\n\n return writer.flush();\n}\n", "// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n\ntype Url = {\n scheme: string;\n user: string;\n host: string;\n port: string;\n path: string;\n query: string;\n hash: string;\n type: UrlType;\n};\n\nconst enum UrlType {\n Empty = 1,\n Hash = 2,\n Query = 3,\n RelativePath = 4,\n AbsolutePath = 5,\n SchemeRelative = 6,\n Absolute = 7,\n}\n\nfunction isAbsoluteUrl(input: string): boolean {\n return schemeRegex.test(input);\n}\n\nfunction isSchemeRelativeUrl(input: string): boolean {\n return input.startsWith('//');\n}\n\nfunction isAbsolutePath(input: string): boolean {\n return input.startsWith('/');\n}\n\nfunction isFileUrl(input: string): boolean {\n return input.startsWith('file:');\n}\n\nfunction isRelative(input: string): boolean {\n return /^[.?#]/.test(input);\n}\n\nfunction parseAbsoluteUrl(input: string): Url {\n const match = urlRegex.exec(input)!;\n return makeUrl(\n match[1],\n match[2] || '',\n match[3],\n match[4] || '',\n match[5] || '/',\n match[6] || '',\n match[7] || '',\n );\n}\n\nfunction parseFileUrl(input: string): Url {\n const match = fileRegex.exec(input)!;\n const path = match[2];\n return makeUrl(\n 'file:',\n '',\n match[1] || '',\n '',\n isAbsolutePath(path) ? path : '/' + path,\n match[3] || '',\n match[4] || '',\n );\n}\n\nfunction makeUrl(\n scheme: string,\n user: string,\n host: string,\n port: string,\n path: string,\n query: string,\n hash: string,\n): Url {\n return {\n scheme,\n user,\n host,\n port,\n path,\n query,\n hash,\n type: UrlType.Absolute,\n };\n}\n\nfunction parseUrl(input: string): Url {\n if (isSchemeRelativeUrl(input)) {\n const url = parseAbsoluteUrl('http:' + input);\n url.scheme = '';\n url.type = UrlType.SchemeRelative;\n return url;\n }\n\n if (isAbsolutePath(input)) {\n const url = parseAbsoluteUrl('http://foo.com' + input);\n url.scheme = '';\n url.host = '';\n url.type = UrlType.AbsolutePath;\n return url;\n }\n\n if (isFileUrl(input)) return parseFileUrl(input);\n\n if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);\n\n const url = parseAbsoluteUrl('http://foo.com/' + input);\n url.scheme = '';\n url.host = '';\n url.type = input\n ? input.startsWith('?')\n ? UrlType.Query\n : input.startsWith('#')\n ? UrlType.Hash\n : UrlType.RelativePath\n : UrlType.Empty;\n return url;\n}\n\nfunction stripPathFilename(path: string): string {\n // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n // paths. It's not a file, so we can't strip it.\n if (path.endsWith('/..')) return path;\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n\nfunction mergePaths(url: Url, base: Url) {\n normalizePath(base, base.type);\n\n // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n // path).\n if (url.path === '/') {\n url.path = base.path;\n } else {\n // Resolution happens relative to the base path's directory, not the file.\n url.path = stripPathFilename(base.path) + url.path;\n }\n}\n\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url: Url, type: UrlType) {\n const rel = type <= UrlType.RelativePath;\n const pieces = url.path.split('/');\n\n // We need to preserve the first piece always, so that we output a leading slash. The item at\n // pieces[0] is an empty string.\n let pointer = 1;\n\n // Positive is the number of real directories we've output, used for popping a parent directory.\n // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n let positive = 0;\n\n // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n // real directory, we won't need to append, unless the other conditions happen again.\n let addTrailingSlash = false;\n\n for (let i = 1; i < pieces.length; i++) {\n const piece = pieces[i];\n\n // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n if (!piece) {\n addTrailingSlash = true;\n continue;\n }\n\n // If we encounter a real directory, then we don't need to append anymore.\n addTrailingSlash = false;\n\n // A current directory, which we can always drop.\n if (piece === '.') continue;\n\n // A parent directory, we need to see if there are any real directories we can pop. Else, we\n // have an excess of parents, and we'll need to keep the \"..\".\n if (piece === '..') {\n if (positive) {\n addTrailingSlash = true;\n positive--;\n pointer--;\n } else if (rel) {\n // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n pieces[pointer++] = piece;\n }\n continue;\n }\n\n // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n // any popped or dropped directories.\n pieces[pointer++] = piece;\n positive++;\n }\n\n let path = '';\n for (let i = 1; i < pointer; i++) {\n path += '/' + pieces[i];\n }\n if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n path += '/';\n }\n url.path = path;\n}\n\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nexport default function resolve(input: string, base: string | undefined): string {\n if (!input && !base) return '';\n\n const url = parseUrl(input);\n let inputType = url.type;\n\n if (base && inputType !== UrlType.Absolute) {\n const baseUrl = parseUrl(base);\n const baseType = baseUrl.type;\n\n switch (inputType) {\n case UrlType.Empty:\n url.hash = baseUrl.hash;\n // fall through\n\n case UrlType.Hash:\n url.query = baseUrl.query;\n // fall through\n\n case UrlType.Query:\n case UrlType.RelativePath:\n mergePaths(url, baseUrl);\n // fall through\n\n case UrlType.AbsolutePath:\n // The host, user, and port are joined, you can't copy one without the others.\n url.user = baseUrl.user;\n url.host = baseUrl.host;\n url.port = baseUrl.port;\n // fall through\n\n case UrlType.SchemeRelative:\n // The input doesn't have a schema at least, so we need to copy at least that over.\n url.scheme = baseUrl.scheme;\n }\n if (baseType > inputType) inputType = baseType;\n }\n\n normalizePath(url, inputType);\n\n const queryHash = url.query + url.hash;\n switch (inputType) {\n // This is impossible, because of the empty checks at the start of the function.\n // case UrlType.Empty:\n\n case UrlType.Hash:\n case UrlType.Query:\n return queryHash;\n\n case UrlType.RelativePath: {\n // The first char is always a \"/\", and we need it to be relative.\n const path = url.path.slice(1);\n\n if (!path) return queryHash || '.';\n\n if (isRelative(base || input) && !isRelative(path)) {\n // If base started with a leading \".\", or there is no base and input started with a \".\",\n // then we need to ensure that the relative path starts with a \".\". We don't know if\n // relative starts with a \"..\", though, so check before prepending.\n return './' + path + queryHash;\n }\n\n return path + queryHash;\n }\n\n case UrlType.AbsolutePath:\n return url.path + queryHash;\n\n default:\n return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n }\n}\n", "import { encode, decode } from '@jridgewell/sourcemap-codec';\n\nimport resolver from './resolve';\nimport maybeSort from './sort';\nimport buildBySources from './by-source';\nimport {\n memoizedState,\n memoizedBinarySearch,\n upperBound,\n lowerBound,\n found as bsFound,\n} from './binary-search';\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n REV_GENERATED_LINE,\n REV_GENERATED_COLUMN,\n} from './sourcemap-segment';\nimport { parse } from './types';\n\nimport type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport type {\n SourceMapV3,\n DecodedSourceMap,\n EncodedSourceMap,\n InvalidOriginalMapping,\n OriginalMapping,\n InvalidGeneratedMapping,\n GeneratedMapping,\n SourceMapInput,\n Needle,\n SourceNeedle,\n SourceMap,\n EachMapping,\n Bias,\n XInput,\n SectionedSourceMap,\n Ro,\n} from './types';\nimport type { Source } from './by-source';\nimport type { MemoState } from './binary-search';\n\nexport type { SourceMapSegment } from './sourcemap-segment';\nexport type {\n SourceMap,\n DecodedSourceMap,\n EncodedSourceMap,\n Section,\n SectionedSourceMap,\n SourceMapV3,\n Bias,\n EachMapping,\n GeneratedMapping,\n InvalidGeneratedMapping,\n InvalidOriginalMapping,\n Needle,\n OriginalMapping,\n OriginalMapping as Mapping,\n SectionedSourceMapInput,\n SourceMapInput,\n SourceNeedle,\n XInput,\n EncodedSourceMapXInput,\n DecodedSourceMapXInput,\n SectionedSourceMapXInput,\n SectionXInput,\n} from './types';\n\ninterface PublicMap {\n _encoded: TraceMap['_encoded'];\n _decoded: TraceMap['_decoded'];\n _decodedMemo: TraceMap['_decodedMemo'];\n _bySources: TraceMap['_bySources'];\n _bySourceMemos: TraceMap['_bySourceMemos'];\n}\n\nconst LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\nconst COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\n\nexport const LEAST_UPPER_BOUND = -1;\nexport const GREATEST_LOWER_BOUND = 1;\n\nexport { FlattenMap, FlattenMap as AnyMap } from './flatten-map';\n\nexport class TraceMap implements SourceMap {\n declare version: SourceMapV3['version'];\n declare file: SourceMapV3['file'];\n declare names: SourceMapV3['names'];\n declare sourceRoot: SourceMapV3['sourceRoot'];\n declare sources: SourceMapV3['sources'];\n declare sourcesContent: SourceMapV3['sourcesContent'];\n declare ignoreList: SourceMapV3['ignoreList'];\n\n declare resolvedSources: string[];\n declare private _encoded: string | undefined;\n\n declare private _decoded: SourceMapSegment[][] | undefined;\n declare private _decodedMemo: MemoState;\n\n declare private _bySources: Source[] | undefined;\n declare private _bySourceMemos: MemoState[] | undefined;\n\n constructor(map: Ro<SourceMapInput>, mapUrl?: string | null) {\n const isString = typeof map === 'string';\n if (!isString && (map as unknown as { _decodedMemo: any })._decodedMemo) return map as TraceMap;\n\n const parsed = parse(map as Exclude<SourceMapInput, TraceMap>);\n\n const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n this.version = version;\n this.file = file;\n this.names = names || [];\n this.sourceRoot = sourceRoot;\n this.sources = sources;\n this.sourcesContent = sourcesContent;\n this.ignoreList = parsed.ignoreList || (parsed as XInput).x_google_ignoreList || undefined;\n\n const resolve = resolver(mapUrl, sourceRoot);\n this.resolvedSources = sources.map(resolve);\n\n const { mappings } = parsed;\n if (typeof mappings === 'string') {\n this._encoded = mappings;\n this._decoded = undefined;\n } else if (Array.isArray(mappings)) {\n this._encoded = undefined;\n this._decoded = maybeSort(mappings, isString);\n } else if ((parsed as unknown as SectionedSourceMap).sections) {\n throw new Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`);\n } else {\n throw new Error(`invalid source map: ${JSON.stringify(parsed)}`);\n }\n\n this._decodedMemo = memoizedState();\n this._bySources = undefined;\n this._bySourceMemos = undefined;\n }\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n * with public access modifiers.\n */\nfunction cast(map: unknown): PublicMap {\n return map as any;\n}\n\n/**\n * Returns the encoded (VLQ string) form of the SourceMap's mappings field.\n */\nexport function encodedMappings(map: TraceMap): EncodedSourceMap['mappings'] {\n return (cast(map)._encoded ??= encode(cast(map)._decoded!));\n}\n\n/**\n * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n */\nexport function decodedMappings(map: TraceMap): Readonly<DecodedSourceMap['mappings']> {\n return (cast(map)._decoded ||= decode(cast(map)._encoded!));\n}\n\n/**\n * A low-level API to find the segment associated with a generated line/column (think, from a\n * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.\n */\nexport function traceSegment(\n map: TraceMap,\n line: number,\n column: number,\n): Readonly<SourceMapSegment> | null {\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return null;\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n cast(map)._decodedMemo,\n line,\n column,\n GREATEST_LOWER_BOUND,\n );\n\n return index === -1 ? null : segments[index];\n}\n\n/**\n * A higher-level API to find the source/line/column associated with a generated line/column\n * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n * `source-map` library.\n */\nexport function originalPositionFor(\n map: TraceMap,\n needle: Needle,\n): OriginalMapping | InvalidOriginalMapping {\n let { line, column, bias } = needle;\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const decoded = decodedMappings(map);\n\n // It's common for parent source maps to have pointers to lines that have no\n // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n if (line >= decoded.length) return OMapping(null, null, null, null);\n\n const segments = decoded[line];\n const index = traceSegmentInternal(\n segments,\n cast(map)._decodedMemo,\n line,\n column,\n bias || GREATEST_LOWER_BOUND,\n );\n\n if (index === -1) return OMapping(null, null, null, null);\n\n const segment = segments[index];\n if (segment.length === 1) return OMapping(null, null, null, null);\n\n const { names, resolvedSources } = map;\n return OMapping(\n resolvedSources[segment[SOURCES_INDEX]],\n segment[SOURCE_LINE] + 1,\n segment[SOURCE_COLUMN],\n segment.length === 5 ? names[segment[NAMES_INDEX]] : null,\n );\n}\n\n/**\n * Finds the generated line/column position of the provided source/line/column source position.\n */\nexport function generatedPositionFor(\n map: TraceMap,\n needle: SourceNeedle,\n): GeneratedMapping | InvalidGeneratedMapping {\n const { source, line, column, bias } = needle;\n return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);\n}\n\n/**\n * Finds all generated line/column positions of the provided source/line/column source position.\n */\nexport function allGeneratedPositionsFor(map: TraceMap, needle: SourceNeedle): GeneratedMapping[] {\n const { source, line, column, bias } = needle;\n // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit.\n return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);\n}\n\n/**\n * Iterates each mapping in generated position order.\n */\nexport function eachMapping(map: TraceMap, cb: (mapping: EachMapping) => void): void {\n const decoded = decodedMappings(map);\n const { names, resolvedSources } = map;\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generatedLine = i + 1;\n const generatedColumn = seg[0];\n let source = null;\n let originalLine = null;\n let originalColumn = null;\n let name = null;\n if (seg.length !== 1) {\n source = resolvedSources[seg[1]];\n originalLine = seg[2] + 1;\n originalColumn = seg[3];\n }\n if (seg.length === 5) name = names[seg[4]];\n\n cb({\n generatedLine,\n generatedColumn,\n source,\n originalLine,\n originalColumn,\n name,\n } as EachMapping);\n }\n }\n}\n\nfunction sourceIndex(map: TraceMap, source: string): number {\n const { sources, resolvedSources } = map;\n let index = sources.indexOf(source);\n if (index === -1) index = resolvedSources.indexOf(source);\n return index;\n}\n\n/**\n * Retrieves the source content for a particular source, if its found. Returns null if not.\n */\nexport function sourceContentFor(map: TraceMap, source: string): string | null {\n const { sourcesContent } = map;\n if (sourcesContent == null) return null;\n const index = sourceIndex(map, source);\n return index === -1 ? null : sourcesContent[index];\n}\n\n/**\n * Determines if the source is marked to ignore by the source map.\n */\nexport function isIgnored(map: TraceMap, source: string): boolean {\n const { ignoreList } = map;\n if (ignoreList == null) return false;\n const index = sourceIndex(map, source);\n return index === -1 ? false : ignoreList.includes(index);\n}\n\n/**\n * A helper that skips sorting of the input map's mappings array, which can be expensive for larger\n * maps.\n */\nexport function presortedDecodedMap(map: DecodedSourceMap, mapUrl?: string): TraceMap {\n const tracer = new TraceMap(clone(map, []), mapUrl);\n cast(tracer)._decoded = map.mappings;\n return tracer;\n}\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function decodedMap(\n map: TraceMap,\n): Omit<DecodedSourceMap, 'mappings'> & { mappings: readonly SourceMapSegment[][] } {\n return clone(map, decodedMappings(map));\n}\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function encodedMap(map: TraceMap): EncodedSourceMap {\n return clone(map, encodedMappings(map));\n}\n\nfunction clone<T extends string | readonly SourceMapSegment[][]>(\n map: TraceMap | DecodedSourceMap,\n mappings: T,\n): T extends string ? EncodedSourceMap : DecodedSourceMap {\n return {\n version: map.version,\n file: map.file,\n names: map.names,\n sourceRoot: map.sourceRoot,\n sources: map.sources,\n sourcesContent: map.sourcesContent,\n mappings,\n ignoreList: map.ignoreList || (map as XInput).x_google_ignoreList,\n } as any;\n}\n\nfunction OMapping(source: null, line: null, column: null, name: null): InvalidOriginalMapping;\nfunction OMapping(\n source: string,\n line: number,\n column: number,\n name: string | null,\n): OriginalMapping;\nfunction OMapping(\n source: string | null,\n line: number | null,\n column: number | null,\n name: string | null,\n): OriginalMapping | InvalidOriginalMapping {\n return { source, line, column, name } as any;\n}\n\nfunction GMapping(line: null, column: null): InvalidGeneratedMapping;\nfunction GMapping(line: number, column: number): GeneratedMapping;\nfunction GMapping(\n line: number | null,\n column: number | null,\n): GeneratedMapping | InvalidGeneratedMapping {\n return { line, column } as any;\n}\n\nfunction traceSegmentInternal(\n segments: SourceMapSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number;\nfunction traceSegmentInternal(\n segments: SourceMapSegment[] | ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): number {\n let index = memoizedBinarySearch(segments, column, memo, line);\n if (bsFound) {\n index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n } else if (bias === LEAST_UPPER_BOUND) index++;\n\n if (index === -1 || index === segments.length) return -1;\n return index;\n}\n\nfunction sliceGeneratedPositions(\n segments: ReverseSegment[],\n memo: MemoState,\n line: number,\n column: number,\n bias: Bias,\n): GeneratedMapping[] {\n let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);\n\n // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in\n // insertion order) segment that matched. Even if we did respect the bias when tracing, we would\n // still need to call `lowerBound()` to find the first segment, which is slower than just looking\n // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the\n // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to\n // match LEAST_UPPER_BOUND.\n if (!bsFound && bias === LEAST_UPPER_BOUND) min++;\n\n if (min === -1 || min === segments.length) return [];\n\n // We may have found the segment that started at an earlier column. If this is the case, then we\n // need to slice all generated segments that match _that_ column, because all such segments span\n // to our desired column.\n const matchedColumn = bsFound ? column : segments[min][COLUMN];\n\n // The binary search is not guaranteed to find the lower bound when a match wasn't found.\n if (!bsFound) min = lowerBound(segments, matchedColumn, min);\n const max = upperBound(segments, matchedColumn, min);\n\n const result = [];\n for (; min <= max; min++) {\n const segment = segments[min];\n result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));\n }\n return result;\n}\n\nfunction generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: false,\n): GeneratedMapping | InvalidGeneratedMapping;\nfunction generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: true,\n): GeneratedMapping[];\nfunction generatedPosition(\n map: TraceMap,\n source: string,\n line: number,\n column: number,\n bias: Bias,\n all: boolean,\n): GeneratedMapping | InvalidGeneratedMapping | GeneratedMapping[] {\n line--;\n if (line < 0) throw new Error(LINE_GTR_ZERO);\n if (column < 0) throw new Error(COL_GTR_EQ_ZERO);\n\n const { sources, resolvedSources } = map;\n let sourceIndex = sources.indexOf(source);\n if (sourceIndex === -1) sourceIndex = resolvedSources.indexOf(source);\n if (sourceIndex === -1) return all ? [] : GMapping(null, null);\n\n const bySourceMemos = (cast(map)._bySourceMemos ||= sources.map(memoizedState));\n const generated = (cast(map)._bySources ||= buildBySources(decodedMappings(map), bySourceMemos));\n\n const segments = generated[sourceIndex][line];\n if (segments == null) return all ? [] : GMapping(null, null);\n\n const memo = bySourceMemos[sourceIndex];\n\n if (all) return sliceGeneratedPositions(segments, memo, line, column, bias);\n\n const index = traceSegmentInternal(segments, memo, line, column, bias);\n if (index === -1) return GMapping(null, null);\n\n const segment = segments[index];\n return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);\n}\n", "import resolveUri from '@jridgewell/resolve-uri';\nimport stripFilename from './strip-filename';\n\ntype Resolve = (source: string | null) => string;\nexport default function resolver(\n mapUrl: string | null | undefined,\n sourceRoot: string | undefined,\n): Resolve {\n const from = stripFilename(mapUrl);\n // The sourceRoot is always treated as a directory, if it's not empty.\n // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n const prefix = sourceRoot ? sourceRoot + '/' : '';\n\n return (source) => resolveUri(prefix + (source || ''), from);\n}\n", "/**\n * Removes everything after the last \"/\", but leaves the slash.\n */\nexport default function stripFilename(path: string | undefined | null): string {\n if (!path) return '';\n const index = path.lastIndexOf('/');\n return path.slice(0, index + 1);\n}\n", "type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\ntype GeneratedLine = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport type ReverseSegment = [SourceColumn, GeneratedLine, GeneratedColumn];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n\nexport const REV_GENERATED_LINE = 1;\nexport const REV_GENERATED_COLUMN = 2;\n", "import { COLUMN } from './sourcemap-segment';\n\nimport type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';\n\nexport default function maybeSort(\n mappings: SourceMapSegment[][],\n owned: boolean,\n): SourceMapSegment[][] {\n const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n if (unsortedIndex === mappings.length) return mappings;\n\n // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n // not, we do not want to modify the consumer's input array.\n if (!owned) mappings = mappings.slice();\n\n for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n mappings[i] = sortSegments(mappings[i], owned);\n }\n return mappings;\n}\n\nfunction nextUnsortedSegmentLine(mappings: SourceMapSegment[][], start: number): number {\n for (let i = start; i < mappings.length; i++) {\n if (!isSorted(mappings[i])) return i;\n }\n return mappings.length;\n}\n\nfunction isSorted(line: SourceMapSegment[]): boolean {\n for (let j = 1; j < line.length; j++) {\n if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n return false;\n }\n }\n return true;\n}\n\nfunction sortSegments(line: SourceMapSegment[], owned: boolean): SourceMapSegment[] {\n if (!owned) line = line.slice();\n return line.sort(sortComparator);\n}\n\nexport function sortComparator<T extends SourceMapSegment | ReverseSegment>(a: T, b: T): number {\n return a[COLUMN] - b[COLUMN];\n}\n", "import { COLUMN, SOURCES_INDEX, SOURCE_LINE, SOURCE_COLUMN } from './sourcemap-segment';\nimport { sortComparator } from './sort';\n\nimport type { ReverseSegment, SourceMapSegment } from './sourcemap-segment';\n\nexport type Source = ReverseSegment[][];\n\n// Rebuilds the original source files, with mappings that are ordered by source line/column instead\n// of generated line/column.\nexport default function buildBySources(\n decoded: readonly SourceMapSegment[][],\n memos: unknown[],\n): Source[] {\n const sources: Source[] = memos.map(() => []);\n\n for (let i = 0; i < decoded.length; i++) {\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n if (seg.length === 1) continue;\n\n const sourceIndex = seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n\n const source = sources[sourceIndex];\n const segs = (source[sourceLine] ||= []);\n segs.push([sourceColumn, i, seg[COLUMN]]);\n }\n }\n\n for (let i = 0; i < sources.length; i++) {\n const source = sources[i];\n for (let j = 0; j < source.length; j++) {\n const line = source[j];\n if (line) line.sort(sortComparator);\n }\n }\n\n return sources;\n}\n", "import type { SourceMapSegment, ReverseSegment } from './sourcemap-segment';\nimport { COLUMN } from './sourcemap-segment';\n\nexport type MemoState = {\n lastKey: number;\n lastNeedle: number;\n lastIndex: number;\n};\n\nexport let found = false;\n\n/**\n * A binary search implementation that returns the index if a match is found.\n * If no match is found, then the left-index (the index associated with the item that comes just\n * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n * the next index:\n *\n * ```js\n * const array = [1, 3];\n * const needle = 2;\n * const index = binarySearch(array, needle, (item, needle) => item - needle);\n *\n * assert.equal(index, 0);\n * array.splice(index + 1, 0, needle);\n * assert.deepEqual(array, [1, 2, 3]);\n * ```\n */\nexport function binarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n low: number,\n high: number,\n): number {\n while (low <= high) {\n const mid = low + ((high - low) >> 1);\n const cmp = haystack[mid][COLUMN] - needle;\n\n if (cmp === 0) {\n found = true;\n return mid;\n }\n\n if (cmp < 0) {\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n found = false;\n return low - 1;\n}\n\nexport function upperBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index + 1; i < haystack.length; index = i++) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function lowerBound(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n index: number,\n): number {\n for (let i = index - 1; i >= 0; index = i--) {\n if (haystack[i][COLUMN] !== needle) break;\n }\n return index;\n}\n\nexport function memoizedState(): MemoState {\n return {\n lastKey: -1,\n lastNeedle: -1,\n lastIndex: -1,\n };\n}\n\n/**\n * This overly complicated beast is just to record the last tested line/column and the resulting\n * index, allowing us to skip a few tests if mappings are monotonically increasing.\n */\nexport function memoizedBinarySearch(\n haystack: SourceMapSegment[] | ReverseSegment[],\n needle: number,\n state: MemoState,\n key: number,\n): number {\n const { lastKey, lastNeedle, lastIndex } = state;\n\n let low = 0;\n let high = haystack.length - 1;\n if (key === lastKey) {\n if (needle === lastNeedle) {\n found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n return lastIndex;\n }\n\n if (needle >= lastNeedle) {\n // lastIndex may be -1 if the previous needle was not found.\n low = lastIndex === -1 ? 0 : lastIndex;\n } else {\n high = lastIndex;\n }\n }\n state.lastKey = key;\n state.lastNeedle = needle;\n\n return (state.lastIndex = binarySearch(haystack, needle, low, high));\n}\n", "import type { SourceMapSegment } from './sourcemap-segment';\nimport type { GREATEST_LOWER_BOUND, LEAST_UPPER_BOUND, TraceMap } from './trace-mapping';\n\nexport interface SourceMapV3 {\n file?: string | null;\n names: string[];\n sourceRoot?: string;\n sources: (string | null)[];\n sourcesContent?: (string | null)[];\n version: 3;\n ignoreList?: number[];\n}\n\nexport interface EncodedSourceMap extends SourceMapV3 {\n mappings: string;\n}\n\nexport interface DecodedSourceMap extends SourceMapV3 {\n mappings: SourceMapSegment[][];\n}\n\nexport interface Section {\n offset: { line: number; column: number };\n map: EncodedSourceMap | DecodedSourceMap | SectionedSourceMap;\n}\n\nexport interface SectionedSourceMap {\n file?: string | null;\n sections: Section[];\n version: 3;\n}\n\nexport type OriginalMapping = {\n source: string | null;\n line: number;\n column: number;\n name: string | null;\n};\n\nexport type InvalidOriginalMapping = {\n source: null;\n line: null;\n column: null;\n name: null;\n};\n\nexport type GeneratedMapping = {\n line: number;\n column: number;\n};\nexport type InvalidGeneratedMapping = {\n line: null;\n column: null;\n};\n\nexport type Bias = typeof GREATEST_LOWER_BOUND | typeof LEAST_UPPER_BOUND;\n\nexport type XInput = { x_google_ignoreList?: SourceMapV3['ignoreList'] };\nexport type EncodedSourceMapXInput = EncodedSourceMap & XInput;\nexport type DecodedSourceMapXInput = DecodedSourceMap & XInput;\nexport type SectionedSourceMapXInput = Omit<SectionedSourceMap, 'sections'> & {\n sections: SectionXInput[];\n};\nexport type SectionXInput = Omit<Section, 'map'> & {\n map: SectionedSourceMapInput;\n};\n\nexport type SourceMapInput = string | EncodedSourceMapXInput | DecodedSourceMapXInput | TraceMap;\nexport type SectionedSourceMapInput = SourceMapInput | SectionedSourceMapXInput;\n\nexport type Needle = { line: number; column: number; bias?: Bias };\nexport type SourceNeedle = { source: string; line: number; column: number; bias?: Bias };\n\nexport type EachMapping =\n | {\n generatedLine: number;\n generatedColumn: number;\n source: null;\n originalLine: null;\n originalColumn: null;\n name: null;\n }\n | {\n generatedLine: number;\n generatedColumn: number;\n source: string | null;\n originalLine: number;\n originalColumn: number;\n name: string | null;\n };\n\nexport abstract class SourceMap {\n declare version: SourceMapV3['version'];\n declare file: SourceMapV3['file'];\n declare names: SourceMapV3['names'];\n declare sourceRoot: SourceMapV3['sourceRoot'];\n declare sources: SourceMapV3['sources'];\n declare sourcesContent: SourceMapV3['sourcesContent'];\n declare resolvedSources: SourceMapV3['sources'];\n declare ignoreList: SourceMapV3['ignoreList'];\n}\n\nexport type Ro<T> =\n T extends Array<infer V>\n ? V[] | Readonly<V[]> | RoArray<V> | Readonly<RoArray<V>>\n : T extends object\n ? T | Readonly<T> | RoObject<T> | Readonly<RoObject<T>>\n : T;\ntype RoArray<T> = Ro<T>[];\ntype RoObject<T> = { [K in keyof T]: T[K] | Ro<T[K]> };\n\nexport function parse<T>(map: T): Exclude<T, string> {\n return typeof map === 'string' ? JSON.parse(map) : (map as Exclude<T, string>);\n}\n", "import { TraceMap, presortedDecodedMap, decodedMappings } from './trace-mapping';\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n} from './sourcemap-segment';\nimport { parse } from './types';\n\nimport type {\n DecodedSourceMap,\n DecodedSourceMapXInput,\n EncodedSourceMapXInput,\n SectionedSourceMapXInput,\n SectionedSourceMapInput,\n SectionXInput,\n Ro,\n} from './types';\nimport type { SourceMapSegment } from './sourcemap-segment';\n\ntype FlattenMap = {\n new (map: Ro<SectionedSourceMapInput>, mapUrl?: string | null): TraceMap;\n (map: Ro<SectionedSourceMapInput>, mapUrl?: string | null): TraceMap;\n};\n\nexport const FlattenMap: FlattenMap = function (map, mapUrl) {\n const parsed = parse(map as SectionedSourceMapInput);\n\n if (!('sections' in parsed)) {\n return new TraceMap(parsed as DecodedSourceMapXInput | EncodedSourceMapXInput, mapUrl);\n }\n\n const mappings: SourceMapSegment[][] = [];\n const sources: string[] = [];\n const sourcesContent: (string | null)[] = [];\n const names: string[] = [];\n const ignoreList: number[] = [];\n\n recurse(\n parsed,\n mapUrl,\n mappings,\n sources,\n sourcesContent,\n names,\n ignoreList,\n 0,\n 0,\n Infinity,\n Infinity,\n );\n\n const joined: DecodedSourceMap = {\n version: 3,\n file: parsed.file,\n names,\n sources,\n sourcesContent,\n mappings,\n ignoreList,\n };\n\n return presortedDecodedMap(joined);\n} as FlattenMap;\n\nfunction recurse(\n input: SectionedSourceMapXInput,\n mapUrl: string | null | undefined,\n mappings: SourceMapSegment[][],\n sources: string[],\n sourcesContent: (string | null)[],\n names: string[],\n ignoreList: number[],\n lineOffset: number,\n columnOffset: number,\n stopLine: number,\n stopColumn: number,\n) {\n const { sections } = input;\n for (let i = 0; i < sections.length; i++) {\n const { map, offset } = sections[i];\n\n let sl = stopLine;\n let sc = stopColumn;\n if (i + 1 < sections.length) {\n const nextOffset = sections[i + 1].offset;\n sl = Math.min(stopLine, lineOffset + nextOffset.line);\n\n if (sl === stopLine) {\n sc = Math.min(stopColumn, columnOffset + nextOffset.column);\n } else if (sl < stopLine) {\n sc = columnOffset + nextOffset.column;\n }\n }\n\n addSection(\n map,\n mapUrl,\n mappings,\n sources,\n sourcesContent,\n names,\n ignoreList,\n lineOffset + offset.line,\n columnOffset + offset.column,\n sl,\n sc,\n );\n }\n}\n\nfunction addSection(\n input: SectionXInput['map'],\n mapUrl: string | null | undefined,\n mappings: SourceMapSegment[][],\n sources: string[],\n sourcesContent: (string | null)[],\n names: string[],\n ignoreList: number[],\n lineOffset: number,\n columnOffset: number,\n stopLine: number,\n stopColumn: number,\n) {\n const parsed = parse(input);\n if ('sections' in parsed) return recurse(...(arguments as unknown as Parameters<typeof recurse>));\n\n const map = new TraceMap(parsed, mapUrl);\n const sourcesOffset = sources.length;\n const namesOffset = names.length;\n const decoded = decodedMappings(map);\n const { resolvedSources, sourcesContent: contents, ignoreList: ignores } = map;\n\n append(sources, resolvedSources);\n append(names, map.names);\n\n if (contents) append(sourcesContent, contents);\n else for (let i = 0; i < resolvedSources.length; i++) sourcesContent.push(null);\n\n if (ignores) for (let i = 0; i < ignores.length; i++) ignoreList.push(ignores[i] + sourcesOffset);\n\n for (let i = 0; i < decoded.length; i++) {\n const lineI = lineOffset + i;\n\n // We can only add so many lines before we step into the range that the next section's map\n // controls. When we get to the last line, then we'll start checking the segments to see if\n // they've crossed into the column range. But it may not have any columns that overstep, so we\n // still need to check that we don't overstep lines, too.\n if (lineI > stopLine) return;\n\n // The out line may already exist in mappings (if we're continuing the line started by a\n // previous section). Or, we may have jumped ahead several lines to start this section.\n const out = getLine(mappings, lineI);\n // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the\n // map can be multiple lines), it doesn't.\n const cOffset = i === 0 ? columnOffset : 0;\n\n const line = decoded[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n const column = cOffset + seg[COLUMN];\n\n // If this segment steps into the column range that the next section's map controls, we need\n // to stop early.\n if (lineI === stopLine && column >= stopColumn) return;\n\n if (seg.length === 1) {\n out.push([column]);\n continue;\n }\n\n const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];\n const sourceLine = seg[SOURCE_LINE];\n const sourceColumn = seg[SOURCE_COLUMN];\n out.push(\n seg.length === 4\n ? [column, sourcesIndex, sourceLine, sourceColumn]\n : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]],\n );\n }\n }\n}\n\nfunction append<T>(arr: T[], other: T[]) {\n for (let i = 0; i < other.length; i++) arr.push(other[i]);\n}\n\nfunction getLine<T>(arr: T[][], index: number): T[] {\n for (let i = arr.length; i <= index; i++) arr[i] = [];\n return arr[index];\n}\n", "type Key = string | number | symbol;\n\n/**\n * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the\n * index of the `key` in the backing array.\n *\n * This is designed to allow synchronizing a second array with the contents of the backing array,\n * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,\n * and there are never duplicates.\n */\nexport class SetArray<T extends Key = Key> {\n declare private _indexes: Record<T, number | undefined>;\n declare array: readonly T[];\n\n constructor() {\n this._indexes = { __proto__: null } as any;\n this.array = [];\n }\n}\n\ninterface PublicSet<T extends Key> {\n array: T[];\n _indexes: SetArray<T>['_indexes'];\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the set into a type\n * with public access modifiers.\n */\nfunction cast<T extends Key>(set: SetArray<T>): PublicSet<T> {\n return set as any;\n}\n\n/**\n * Gets the index associated with `key` in the backing array, if it is already present.\n */\nexport function get<T extends Key>(setarr: SetArray<T>, key: T): number | undefined {\n return cast(setarr)._indexes[key];\n}\n\n/**\n * Puts `key` into the backing array, if it is not already present. Returns\n * the index of the `key` in the backing array.\n */\nexport function put<T extends Key>(setarr: SetArray<T>, key: T): number {\n // The key may or may not be present. If it is present, it's a number.\n const index = get(setarr, key);\n if (index !== undefined) return index;\n\n const { array, _indexes: indexes } = cast(setarr);\n\n const length = array.push(key);\n return (indexes[key] = length - 1);\n}\n\n/**\n * Pops the last added item out of the SetArray.\n */\nexport function pop<T extends Key>(setarr: SetArray<T>): void {\n const { array, _indexes: indexes } = cast(setarr);\n if (array.length === 0) return;\n\n const last = array.pop()!;\n indexes[last] = undefined;\n}\n\n/**\n * Removes the key, if it exists in the set.\n */\nexport function remove<T extends Key>(setarr: SetArray<T>, key: T): void {\n const index = get(setarr, key);\n if (index === undefined) return;\n\n const { array, _indexes: indexes } = cast(setarr);\n for (let i = index + 1; i < array.length; i++) {\n const k = array[i];\n array[i - 1] = k;\n indexes[k]!--;\n }\n indexes[key] = undefined;\n array.pop();\n}\n", "import { SetArray, put, remove } from './set-array';\nimport {\n encode,\n // encodeGeneratedRanges,\n // encodeOriginalScopes\n} from '@jridgewell/sourcemap-codec';\nimport { TraceMap, decodedMappings } from '@jridgewell/trace-mapping';\n\nimport {\n COLUMN,\n SOURCES_INDEX,\n SOURCE_LINE,\n SOURCE_COLUMN,\n NAMES_INDEX,\n} from './sourcemap-segment';\n\nimport type { SourceMapInput } from '@jridgewell/trace-mapping';\n// import type { OriginalScope, GeneratedRange } from '@jridgewell/sourcemap-codec';\nimport type { SourceMapSegment } from './sourcemap-segment';\nimport type {\n DecodedSourceMap,\n EncodedSourceMap,\n Pos,\n Mapping,\n // BindingExpressionRange,\n // OriginalPos,\n // OriginalScopeInfo,\n // GeneratedRangeInfo,\n} from './types';\n\nexport type { DecodedSourceMap, EncodedSourceMap, Mapping };\n\nexport type Options = {\n file?: string | null;\n sourceRoot?: string | null;\n};\n\nconst NO_NAME = -1;\n\n/**\n * Provides the state to generate a sourcemap.\n */\nexport class GenMapping {\n declare private _names: SetArray<string>;\n declare private _sources: SetArray<string>;\n declare private _sourcesContent: (string | null)[];\n declare private _mappings: SourceMapSegment[][];\n // private declare _originalScopes: OriginalScope[][];\n // private declare _generatedRanges: GeneratedRange[];\n declare private _ignoreList: SetArray<number>;\n declare file: string | null | undefined;\n declare sourceRoot: string | null | undefined;\n\n constructor({ file, sourceRoot }: Options = {}) {\n this._names = new SetArray();\n this._sources = new SetArray();\n this._sourcesContent = [];\n this._mappings = [];\n // this._originalScopes = [];\n // this._generatedRanges = [];\n this.file = file;\n this.sourceRoot = sourceRoot;\n this._ignoreList = new SetArray();\n }\n}\n\ninterface PublicMap {\n _names: GenMapping['_names'];\n _sources: GenMapping['_sources'];\n _sourcesContent: GenMapping['_sourcesContent'];\n _mappings: GenMapping['_mappings'];\n // _originalScopes: GenMapping['_originalScopes'];\n // _generatedRanges: GenMapping['_generatedRanges'];\n _ignoreList: GenMapping['_ignoreList'];\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n * with public access modifiers.\n */\nfunction cast(map: unknown): PublicMap {\n return map as any;\n}\n\n/**\n * A low-level API to associate a generated position with an original source position. Line and\n * column here are 0-based, unlike `addMapping`.\n */\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source?: null,\n sourceLine?: null,\n sourceColumn?: null,\n name?: null,\n content?: null,\n): void;\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name?: null,\n content?: string | null,\n): void;\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: string,\n sourceLine: number,\n sourceColumn: number,\n name: string,\n content?: string | null,\n): void;\nexport function addSegment(\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source?: string | null,\n sourceLine?: number | null,\n sourceColumn?: number | null,\n name?: string | null,\n content?: string | null,\n): void {\n return addSegmentInternal(\n false,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n}\n\n/**\n * A high-level API to associate a generated position with an original source position. Line is\n * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.\n */\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source?: null;\n original?: null;\n name?: null;\n content?: null;\n },\n): void;\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name?: null;\n content?: string | null;\n },\n): void;\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: string;\n original: Pos;\n name: string;\n content?: string | null;\n },\n): void;\nexport function addMapping(\n map: GenMapping,\n mapping: {\n generated: Pos;\n source?: string | null;\n original?: Pos | null;\n name?: string | null;\n content?: string | null;\n },\n): void {\n return addMappingInternal(false, map, mapping as Parameters<typeof addMappingInternal>[2]);\n}\n\n/**\n * Same as `addSegment`, but will only add the segment if it generates useful information in the\n * resulting map. This only works correctly if segments are added **in order**, meaning you should\n * not add a segment with a lower generated line/column than one that came before.\n */\nexport const maybeAddSegment: typeof addSegment = (\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n) => {\n return addSegmentInternal(\n true,\n map,\n genLine,\n genColumn,\n source,\n sourceLine,\n sourceColumn,\n name,\n content,\n );\n};\n\n/**\n * Same as `addMapping`, but will only add the mapping if it generates useful information in the\n * resulting map. This only works correctly if mappings are added **in order**, meaning you should\n * not add a mapping with a lower generated line/column than one that came before.\n */\nexport const maybeAddMapping: typeof addMapping = (map, mapping) => {\n return addMappingInternal(true, map, mapping as Parameters<typeof addMappingInternal>[2]);\n};\n\n/**\n * Adds/removes the content of the source file to the source map.\n */\nexport function setSourceContent(map: GenMapping, source: string, content: string | null): void {\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n // _originalScopes: originalScopes,\n } = cast(map);\n const index = put(sources, source);\n sourcesContent[index] = content;\n // if (index === originalScopes.length) originalScopes[index] = [];\n}\n\nexport function setIgnore(map: GenMapping, source: string, ignore = true) {\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n _ignoreList: ignoreList,\n // _originalScopes: originalScopes,\n } = cast(map);\n const index = put(sources, source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n // if (index === originalScopes.length) originalScopes[index] = [];\n if (ignore) put(ignoreList, index);\n else remove(ignoreList, index);\n}\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function toDecodedMap(map: GenMapping): DecodedSourceMap {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n _ignoreList: ignoreList,\n // _originalScopes: originalScopes,\n // _generatedRanges: generatedRanges,\n } = cast(map);\n removeEmptyFinalLines(mappings);\n\n return {\n version: 3,\n file: map.file || undefined,\n names: names.array,\n sourceRoot: map.sourceRoot || undefined,\n sources: sources.array,\n sourcesContent,\n mappings,\n // originalScopes,\n // generatedRanges,\n ignoreList: ignoreList.array,\n };\n}\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function toEncodedMap(map: GenMapping): EncodedSourceMap {\n const decoded = toDecodedMap(map);\n return Object.assign({}, decoded, {\n // originalScopes: decoded.originalScopes.map((os) => encodeOriginalScopes(os)),\n // generatedRanges: encodeGeneratedRanges(decoded.generatedRanges as GeneratedRange[]),\n mappings: encode(decoded.mappings as SourceMapSegment[][]),\n });\n}\n\n/**\n * Constructs a new GenMapping, using the already present mappings of the input.\n */\nexport function fromMap(input: SourceMapInput): GenMapping {\n const map = new TraceMap(input);\n const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });\n\n putAll(cast(gen)._names, map.names);\n putAll(cast(gen)._sources, map.sources as string[]);\n cast(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null);\n cast(gen)._mappings = decodedMappings(map) as GenMapping['_mappings'];\n // TODO: implement originalScopes/generatedRanges\n if (map.ignoreList) putAll(cast(gen)._ignoreList, map.ignoreList);\n\n return gen;\n}\n\n/**\n * Returns an array of high-level mapping objects for every recorded segment, which could then be\n * passed to the `source-map` library.\n */\nexport function allMappings(map: GenMapping): Mapping[] {\n const out: Mapping[] = [];\n const { _mappings: mappings, _sources: sources, _names: names } = cast(map);\n\n for (let i = 0; i < mappings.length; i++) {\n const line = mappings[i];\n for (let j = 0; j < line.length; j++) {\n const seg = line[j];\n\n const generated = { line: i + 1, column: seg[COLUMN] };\n let source: string | undefined = undefined;\n let original: Pos | undefined = undefined;\n let name: string | undefined = undefined;\n\n if (seg.length !== 1) {\n source = sources.array[seg[SOURCES_INDEX]];\n original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };\n\n if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];\n }\n\n out.push({ generated, source, original, name } as Mapping);\n }\n }\n\n return out;\n}\n\n// This split declaration is only so that terser can elminiate the static initialization block.\nfunction addSegmentInternal<S extends string | null | undefined>(\n skipable: boolean,\n map: GenMapping,\n genLine: number,\n genColumn: number,\n source: S,\n sourceLine: S extends string ? number : null | undefined,\n sourceColumn: S extends string ? number : null | undefined,\n name: S extends string ? string | null | undefined : null | undefined,\n content: S extends string ? string | null | undefined : null | undefined,\n): void {\n const {\n _mappings: mappings,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _names: names,\n // _originalScopes: originalScopes,\n } = cast(map);\n const line = getIndex(mappings, genLine);\n const index = getColumnIndex(line, genColumn);\n\n if (!source) {\n if (skipable && skipSourceless(line, index)) return;\n return insert(line, index, [genColumn]);\n }\n\n // Sigh, TypeScript can't figure out sourceLine and sourceColumn aren't nullish if source\n // isn't nullish.\n assert<number>(sourceLine);\n assert<number>(sourceColumn);\n\n const sourcesIndex = put(sources, source);\n const namesIndex = name ? put(names, name) : NO_NAME;\n if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content ?? null;\n // if (sourcesIndex === originalScopes.length) originalScopes[sourcesIndex] = [];\n\n if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {\n return;\n }\n\n return insert(\n line,\n index,\n name\n ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]\n : [genColumn, sourcesIndex, sourceLine, sourceColumn],\n );\n}\n\nfunction assert<T>(_val: unknown): asserts _val is T {\n // noop.\n}\n\nfunction getIndex<T>(arr: T[][], index: number): T[] {\n for (let i = arr.length; i <= index; i++) {\n arr[i] = [];\n }\n return arr[index];\n}\n\nfunction getColumnIndex(line: SourceMapSegment[], genColumn: number): number {\n let index = line.length;\n for (let i = index - 1; i >= 0; index = i--) {\n const current = line[i];\n if (genColumn >= current[COLUMN]) break;\n }\n return index;\n}\n\nfunction insert<T>(array: T[], index: number, value: T) {\n for (let i = array.length; i > index; i--) {\n array[i] = array[i - 1];\n }\n array[index] = value;\n}\n\nfunction removeEmptyFinalLines(mappings: SourceMapSegment[][]) {\n const { length } = mappings;\n let len = length;\n for (let i = len - 1; i >= 0; len = i, i--) {\n if (mappings[i].length > 0) break;\n }\n if (len < length) mappings.length = len;\n}\n\nfunction putAll<T extends string | number>(setarr: SetArray<T>, array: T[]) {\n for (let i = 0; i < array.length; i++) put(setarr, array[i]);\n}\n\nfunction skipSourceless(line: SourceMapSegment[], index: number): boolean {\n // The start of a line is already sourceless, so adding a sourceless segment to the beginning\n // doesn't generate any useful information.\n if (index === 0) return true;\n\n const prev = line[index - 1];\n // If the previous segment is also sourceless, then adding another sourceless segment doesn't\n // genrate any new information. Else, this segment will end the source/named segment and point to\n // a sourceless position, which is useful.\n return prev.length === 1;\n}\n\nfunction skipSource(\n line: SourceMapSegment[],\n index: number,\n sourcesIndex: number,\n sourceLine: number,\n sourceColumn: number,\n namesIndex: number,\n): boolean {\n // A source/named segment at the start of a line gives position at that genColumn\n if (index === 0) return false;\n\n const prev = line[index - 1];\n\n // If the previous segment is sourceless, then we're transitioning to a source.\n if (prev.length === 1) return false;\n\n // If the previous segment maps to the exact same source position, then this segment doesn't\n // provide any new position information.\n return (\n sourcesIndex === prev[SOURCES_INDEX] &&\n sourceLine === prev[SOURCE_LINE] &&\n sourceColumn === prev[SOURCE_COLUMN] &&\n namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)\n );\n}\n\nfunction addMappingInternal<S extends string | null | undefined>(\n skipable: boolean,\n map: GenMapping,\n mapping: {\n generated: Pos;\n source: S;\n original: S extends string ? Pos : null | undefined;\n name: S extends string ? string | null | undefined : null | undefined;\n content: S extends string ? string | null | undefined : null | undefined;\n },\n) {\n const { generated, source, original, name, content } = mapping;\n if (!source) {\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n null,\n null,\n null,\n null,\n null,\n );\n }\n assert<Pos>(original);\n return addSegmentInternal(\n skipable,\n map,\n generated.line - 1,\n generated.column,\n source as string,\n original.line - 1,\n original.column,\n name,\n content,\n );\n}\n\n/*\nexport function addOriginalScope(\n map: GenMapping,\n data: {\n start: Pos;\n end: Pos;\n source: string;\n kind: string;\n name?: string;\n variables?: string[];\n },\n): OriginalScopeInfo {\n const { start, end, source, kind, name, variables } = data;\n const {\n _sources: sources,\n _sourcesContent: sourcesContent,\n _originalScopes: originalScopes,\n _names: names,\n } = cast(map);\n const index = put(sources, source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n if (index === originalScopes.length) originalScopes[index] = [];\n\n const kindIndex = put(names, kind);\n const scope: OriginalScope = name\n ? [start.line - 1, start.column, end.line - 1, end.column, kindIndex, put(names, name)]\n : [start.line - 1, start.column, end.line - 1, end.column, kindIndex];\n if (variables) {\n scope.vars = variables.map((v) => put(names, v));\n }\n const len = originalScopes[index].push(scope);\n return [index, len - 1, variables];\n}\n*/\n\n// Generated Ranges\n/*\nexport function addGeneratedRange(\n map: GenMapping,\n data: {\n start: Pos;\n isScope: boolean;\n originalScope?: OriginalScopeInfo;\n callsite?: OriginalPos;\n },\n): GeneratedRangeInfo {\n const { start, isScope, originalScope, callsite } = data;\n const {\n _originalScopes: originalScopes,\n _sources: sources,\n _sourcesContent: sourcesContent,\n _generatedRanges: generatedRanges,\n } = cast(map);\n\n const range: GeneratedRange = [\n start.line - 1,\n start.column,\n 0,\n 0,\n originalScope ? originalScope[0] : -1,\n originalScope ? originalScope[1] : -1,\n ];\n if (originalScope?.[2]) {\n range.bindings = originalScope[2].map(() => [[-1]]);\n }\n if (callsite) {\n const index = put(sources, callsite.source);\n if (index === sourcesContent.length) sourcesContent[index] = null;\n if (index === originalScopes.length) originalScopes[index] = [];\n range.callsite = [index, callsite.line - 1, callsite.column];\n }\n if (isScope) range.isScope = true;\n generatedRanges.push(range);\n\n return [range, originalScope?.[2]];\n}\n\nexport function setEndPosition(range: GeneratedRangeInfo, pos: Pos) {\n range[0][2] = pos.line - 1;\n range[0][3] = pos.column;\n}\n\nexport function addBinding(\n map: GenMapping,\n range: GeneratedRangeInfo,\n variable: string,\n expression: string | BindingExpressionRange,\n) {\n const { _names: names } = cast(map);\n const bindings = (range[0].bindings ||= []);\n const vars = range[1];\n\n const index = vars!.indexOf(variable);\n const binding = getIndex(bindings, index);\n\n if (typeof expression === 'string') binding[0] = [put(names, expression)];\n else {\n const { start } = expression;\n binding.push([put(names, expression.expression), start.line - 1, start.column]);\n }\n}\n*/\n", "type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\nexport type SourceMapSegment =\n | [GeneratedColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n", "import {GenMapping, maybeAddSegment, toEncodedMap} from \"@jridgewell/gen-mapping\";\n\n\n\nimport {charCodes} from \"./parser/util/charcodes\";\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Generate a source map indicating that each line maps directly to the original line,\n * with the tokens in their new positions.\n */\nexport default function computeSourceMap(\n {code: generatedCode, mappings: rawMappings},\n filePath,\n options,\n source,\n tokens,\n) {\n const sourceColumns = computeSourceColumns(source, tokens);\n const map = new GenMapping({file: options.compiledFilename});\n let tokenIndex = 0;\n // currentMapping is the output source index for the current input token being\n // considered.\n let currentMapping = rawMappings[0];\n while (currentMapping === undefined && tokenIndex < rawMappings.length - 1) {\n tokenIndex++;\n currentMapping = rawMappings[tokenIndex];\n }\n let line = 0;\n let lineStart = 0;\n if (currentMapping !== lineStart) {\n maybeAddSegment(map, line, 0, filePath, line, 0);\n }\n for (let i = 0; i < generatedCode.length; i++) {\n if (i === currentMapping) {\n const genColumn = currentMapping - lineStart;\n const sourceColumn = sourceColumns[tokenIndex];\n maybeAddSegment(map, line, genColumn, filePath, line, sourceColumn);\n while (\n (currentMapping === i || currentMapping === undefined) &&\n tokenIndex < rawMappings.length - 1\n ) {\n tokenIndex++;\n currentMapping = rawMappings[tokenIndex];\n }\n }\n if (generatedCode.charCodeAt(i) === charCodes.lineFeed) {\n line++;\n lineStart = i + 1;\n if (currentMapping !== lineStart) {\n maybeAddSegment(map, line, 0, filePath, line, 0);\n }\n }\n }\n const {sourceRoot, sourcesContent, ...sourceMap} = toEncodedMap(map);\n return sourceMap ;\n}\n\n/**\n * Create an array mapping each token index to the 0-based column of the start\n * position of the token.\n */\nfunction computeSourceColumns(code, tokens) {\n const sourceColumns = new Array(tokens.length);\n let tokenIndex = 0;\n let currentMapping = tokens[tokenIndex].start;\n let lineStart = 0;\n for (let i = 0; i < code.length; i++) {\n if (i === currentMapping) {\n sourceColumns[tokenIndex] = currentMapping - lineStart;\n tokenIndex++;\n currentMapping = tokens[tokenIndex].start;\n }\n if (code.charCodeAt(i) === charCodes.lineFeed) {\n lineStart = i + 1;\n }\n }\n return sourceColumns;\n}\n", "\n\nconst HELPERS = {\n require: `\n import {createRequire as CREATE_REQUIRE_NAME} from \"module\";\n const require = CREATE_REQUIRE_NAME(import.meta.url);\n `,\n interopRequireWildcard: `\n function interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n }\n `,\n interopRequireDefault: `\n function interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n `,\n createNamedExportFrom: `\n function createNamedExportFrom(obj, localName, importedName) {\n Object.defineProperty(exports, localName, {enumerable: true, configurable: true, get: () => obj[importedName]});\n }\n `,\n // Note that TypeScript and Babel do this differently; TypeScript does a simple existence\n // check in the exports object and does a plain assignment, whereas Babel uses\n // defineProperty and builds an object of explicitly-exported names so that star exports can\n // always take lower precedence. For now, we do the easier TypeScript thing.\n createStarExport: `\n function createStarExport(obj) {\n Object.keys(obj)\n .filter((key) => key !== \"default\" && key !== \"__esModule\")\n .forEach((key) => {\n if (exports.hasOwnProperty(key)) {\n return;\n }\n Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]});\n });\n }\n `,\n nullishCoalesce: `\n function nullishCoalesce(lhs, rhsFn) {\n if (lhs != null) {\n return lhs;\n } else {\n return rhsFn();\n }\n }\n `,\n asyncNullishCoalesce: `\n async function asyncNullishCoalesce(lhs, rhsFn) {\n if (lhs != null) {\n return lhs;\n } else {\n return await rhsFn();\n }\n }\n `,\n optionalChain: `\n function optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i];\n const fn = ops[i + 1];\n i += 2;\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n return undefined;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => value.call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n }\n `,\n asyncOptionalChain: `\n async function asyncOptionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i];\n const fn = ops[i + 1];\n i += 2;\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n return undefined;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = await fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = await fn((...args) => value.call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n }\n `,\n optionalChainDelete: `\n function optionalChainDelete(ops) {\n const result = OPTIONAL_CHAIN_NAME(ops);\n return result == null ? true : result;\n }\n `,\n asyncOptionalChainDelete: `\n async function asyncOptionalChainDelete(ops) {\n const result = await ASYNC_OPTIONAL_CHAIN_NAME(ops);\n return result == null ? true : result;\n }\n `,\n};\n\nexport class HelperManager {\n __init() {this.helperNames = {}}\n __init2() {this.createRequireName = null}\n constructor( nameManager) {;this.nameManager = nameManager;HelperManager.prototype.__init.call(this);HelperManager.prototype.__init2.call(this);}\n\n getHelperName(baseName) {\n let helperName = this.helperNames[baseName];\n if (helperName) {\n return helperName;\n }\n helperName = this.nameManager.claimFreeName(`_${baseName}`);\n this.helperNames[baseName] = helperName;\n return helperName;\n }\n\n emitHelpers() {\n let resultCode = \"\";\n if (this.helperNames.optionalChainDelete) {\n this.getHelperName(\"optionalChain\");\n }\n if (this.helperNames.asyncOptionalChainDelete) {\n this.getHelperName(\"asyncOptionalChain\");\n }\n for (const [baseName, helperCodeTemplate] of Object.entries(HELPERS)) {\n const helperName = this.helperNames[baseName];\n let helperCode = helperCodeTemplate;\n if (baseName === \"optionalChainDelete\") {\n helperCode = helperCode.replace(\"OPTIONAL_CHAIN_NAME\", this.helperNames.optionalChain);\n } else if (baseName === \"asyncOptionalChainDelete\") {\n helperCode = helperCode.replace(\n \"ASYNC_OPTIONAL_CHAIN_NAME\",\n this.helperNames.asyncOptionalChain,\n );\n } else if (baseName === \"require\") {\n if (this.createRequireName === null) {\n this.createRequireName = this.nameManager.claimFreeName(\"_createRequire\");\n }\n helperCode = helperCode.replace(/CREATE_REQUIRE_NAME/g, this.createRequireName);\n }\n if (helperName) {\n resultCode += \" \";\n resultCode += helperCode.replace(baseName, helperName).replace(/\\s+/g, \" \").trim();\n }\n }\n return resultCode;\n }\n}\n", "import {\n isBlockScopedDeclaration,\n isFunctionScopedDeclaration,\n isNonTopLevelDeclaration,\n} from \"./parser/tokenizer\";\n\nimport {TokenType as tt} from \"./parser/tokenizer/types\";\n\n\n/**\n * Traverse the given tokens and modify them if necessary to indicate that some names shadow global\n * variables.\n */\nexport default function identifyShadowedGlobals(\n tokens,\n scopes,\n globalNames,\n) {\n if (!hasShadowedGlobals(tokens, globalNames)) {\n return;\n }\n markShadowedGlobals(tokens, scopes, globalNames);\n}\n\n/**\n * We can do a fast up-front check to see if there are any declarations to global names. If not,\n * then there's no point in computing scope assignments.\n */\n// Exported for testing.\nexport function hasShadowedGlobals(tokens, globalNames) {\n for (const token of tokens.tokens) {\n if (\n token.type === tt.name &&\n !token.isType &&\n isNonTopLevelDeclaration(token) &&\n globalNames.has(tokens.identifierNameForToken(token))\n ) {\n return true;\n }\n }\n return false;\n}\n\nfunction markShadowedGlobals(\n tokens,\n scopes,\n globalNames,\n) {\n const scopeStack = [];\n let scopeIndex = scopes.length - 1;\n // Scopes were generated at completion time, so they're sorted by end index, so we can maintain a\n // good stack by going backwards through them.\n for (let i = tokens.tokens.length - 1; ; i--) {\n while (scopeStack.length > 0 && scopeStack[scopeStack.length - 1].startTokenIndex === i + 1) {\n scopeStack.pop();\n }\n while (scopeIndex >= 0 && scopes[scopeIndex].endTokenIndex === i + 1) {\n scopeStack.push(scopes[scopeIndex]);\n scopeIndex--;\n }\n // Process scopes after the last iteration so we can make sure we pop all of them.\n if (i < 0) {\n break;\n }\n\n const token = tokens.tokens[i];\n const name = tokens.identifierNameForToken(token);\n if (scopeStack.length > 1 && !token.isType && token.type === tt.name && globalNames.has(name)) {\n if (isBlockScopedDeclaration(token)) {\n markShadowedForScope(scopeStack[scopeStack.length - 1], tokens, name);\n } else if (isFunctionScopedDeclaration(token)) {\n let stackIndex = scopeStack.length - 1;\n while (stackIndex > 0 && !scopeStack[stackIndex].isFunctionScope) {\n stackIndex--;\n }\n if (stackIndex < 0) {\n throw new Error(\"Did not find parent function scope.\");\n }\n markShadowedForScope(scopeStack[stackIndex], tokens, name);\n }\n }\n }\n if (scopeStack.length > 0) {\n throw new Error(\"Expected empty scope stack after processing file.\");\n }\n}\n\nfunction markShadowedForScope(scope, tokens, name) {\n for (let i = scope.startTokenIndex; i < scope.endTokenIndex; i++) {\n const token = tokens.tokens[i];\n if (\n (token.type === tt.name || token.type === tt.jsxName) &&\n tokens.identifierNameForToken(token) === name\n ) {\n token.shadowsGlobal = true;\n }\n }\n}\n", "\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n/**\n * Get all identifier names in the code, in order, including duplicates.\n */\nexport default function getIdentifierNames(code, tokens) {\n const names = [];\n for (const token of tokens) {\n if (token.type === tt.name) {\n names.push(code.slice(token.start, token.end));\n }\n }\n return names;\n}\n", "\nimport getIdentifierNames from \"./util/getIdentifierNames\";\n\nexport default class NameManager {\n __init() {this.usedNames = new Set()}\n\n constructor(code, tokens) {;NameManager.prototype.__init.call(this);\n this.usedNames = new Set(getIdentifierNames(code, tokens));\n }\n\n claimFreeName(name) {\n const newName = this.findFreeName(name);\n this.usedNames.add(newName);\n return newName;\n }\n\n findFreeName(name) {\n if (!this.usedNames.has(name)) {\n return name;\n }\n let suffixNum = 2;\n while (this.usedNames.has(name + String(suffixNum))) {\n suffixNum++;\n }\n return name + String(suffixNum);\n }\n}\n", "\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DetailContext = exports.NoopContext = exports.VError = void 0;\n/**\n * Error thrown by validation. Besides an informative message, it includes the path to the\n * property which triggered the failure.\n */\nvar VError = /** @class */ (function (_super) {\n __extends(VError, _super);\n function VError(path, message) {\n var _this = _super.call(this, message) || this;\n _this.path = path;\n // See https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work for info about this workaround.\n Object.setPrototypeOf(_this, VError.prototype);\n return _this;\n }\n return VError;\n}(Error));\nexports.VError = VError;\n/**\n * Fast implementation of IContext used for first-pass validation. If that fails, we can validate\n * using DetailContext to collect error messages. That's faster for the common case when messages\n * normally pass validation.\n */\nvar NoopContext = /** @class */ (function () {\n function NoopContext() {\n }\n NoopContext.prototype.fail = function (relPath, message, score) {\n return false;\n };\n NoopContext.prototype.unionResolver = function () { return this; };\n NoopContext.prototype.createContext = function () { return this; };\n NoopContext.prototype.resolveUnion = function (ur) { };\n return NoopContext;\n}());\nexports.NoopContext = NoopContext;\n/**\n * Complete implementation of IContext that collects meaningfull errors.\n */\nvar DetailContext = /** @class */ (function () {\n function DetailContext() {\n // Stack of property names and associated messages for reporting helpful error messages.\n this._propNames = [\"\"];\n this._messages = [null];\n // Score is used to choose the best union member whose DetailContext to use for reporting.\n // Higher score means better match (or rather less severe mismatch).\n this._score = 0;\n }\n DetailContext.prototype.fail = function (relPath, message, score) {\n this._propNames.push(relPath);\n this._messages.push(message);\n this._score += score;\n return false;\n };\n DetailContext.prototype.unionResolver = function () {\n return new DetailUnionResolver();\n };\n DetailContext.prototype.resolveUnion = function (unionResolver) {\n var _a, _b;\n var u = unionResolver;\n var best = null;\n for (var _i = 0, _c = u.contexts; _i < _c.length; _i++) {\n var ctx = _c[_i];\n if (!best || ctx._score >= best._score) {\n best = ctx;\n }\n }\n if (best && best._score > 0) {\n (_a = this._propNames).push.apply(_a, best._propNames);\n (_b = this._messages).push.apply(_b, best._messages);\n }\n };\n DetailContext.prototype.getError = function (path) {\n var msgParts = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var m = this._messages[i];\n if (m) {\n msgParts.push(path + \" \" + m);\n }\n }\n return new VError(path, msgParts.join(\"; \"));\n };\n DetailContext.prototype.getErrorDetail = function (path) {\n var details = [];\n for (var i = this._propNames.length - 1; i >= 0; i--) {\n var p = this._propNames[i];\n path += (typeof p === \"number\") ? \"[\" + p + \"]\" : (p ? \".\" + p : \"\");\n var message = this._messages[i];\n if (message) {\n details.push({ path: path, message: message });\n }\n }\n var detail = null;\n for (var i = details.length - 1; i >= 0; i--) {\n if (detail) {\n details[i].nested = [detail];\n }\n detail = details[i];\n }\n return detail;\n };\n return DetailContext;\n}());\nexports.DetailContext = DetailContext;\nvar DetailUnionResolver = /** @class */ (function () {\n function DetailUnionResolver() {\n this.contexts = [];\n }\n DetailUnionResolver.prototype.createContext = function () {\n var ctx = new DetailContext();\n this.contexts.push(ctx);\n return ctx;\n };\n return DetailUnionResolver;\n}());\n", "\"use strict\";\n/**\n * This module defines nodes used to define types and validations for objects and interfaces.\n */\n// tslint:disable:no-shadowed-variable prefer-for-of\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.basicTypes = exports.BasicType = exports.TParamList = exports.TParam = exports.param = exports.TFunc = exports.func = exports.TProp = exports.TOptional = exports.opt = exports.TIface = exports.iface = exports.TEnumLiteral = exports.enumlit = exports.TEnumType = exports.enumtype = exports.TIntersection = exports.intersection = exports.TUnion = exports.union = exports.TTuple = exports.tuple = exports.TArray = exports.array = exports.TLiteral = exports.lit = exports.TName = exports.name = exports.TType = void 0;\nvar util_1 = require(\"./util\");\n/** Node that represents a type. */\nvar TType = /** @class */ (function () {\n function TType() {\n }\n return TType;\n}());\nexports.TType = TType;\n/** Parses a type spec into a TType node. */\nfunction parseSpec(typeSpec) {\n return typeof typeSpec === \"string\" ? name(typeSpec) : typeSpec;\n}\nfunction getNamedType(suite, name) {\n var ttype = suite[name];\n if (!ttype) {\n throw new Error(\"Unknown type \" + name);\n }\n return ttype;\n}\n/**\n * Defines a type name, either built-in, or defined in this suite. It can typically be included in\n * the specs as just a plain string.\n */\nfunction name(value) { return new TName(value); }\nexports.name = name;\nvar TName = /** @class */ (function (_super) {\n __extends(TName, _super);\n function TName(name) {\n var _this = _super.call(this) || this;\n _this.name = name;\n _this._failMsg = \"is not a \" + name;\n return _this;\n }\n TName.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var ttype = getNamedType(suite, this.name);\n var checker = ttype.getChecker(suite, strict, allowedProps);\n if (ttype instanceof BasicType || ttype instanceof TName) {\n return checker;\n }\n // For complex types, add an additional \"is not a <Type>\" message on failure.\n return function (value, ctx) { return checker(value, ctx) ? true : ctx.fail(null, _this._failMsg, 0); };\n };\n return TName;\n}(TType));\nexports.TName = TName;\n/**\n * Defines a literal value, e.g. lit('hello') or lit(123).\n */\nfunction lit(value) { return new TLiteral(value); }\nexports.lit = lit;\nvar TLiteral = /** @class */ (function (_super) {\n __extends(TLiteral, _super);\n function TLiteral(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n _this.name = JSON.stringify(value);\n _this._failMsg = \"is not \" + _this.name;\n return _this;\n }\n TLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return (value === _this.value) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TLiteral;\n}(TType));\nexports.TLiteral = TLiteral;\n/**\n * Defines an array type, e.g. array('number').\n */\nfunction array(typeSpec) { return new TArray(parseSpec(typeSpec)); }\nexports.array = array;\nvar TArray = /** @class */ (function (_super) {\n __extends(TArray, _super);\n function TArray(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TArray.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < value.length; i++) {\n var ok = itemChecker(value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n };\n return TArray;\n}(TType));\nexports.TArray = TArray;\n/**\n * Defines a tuple type, e.g. tuple('string', 'number').\n */\nfunction tuple() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TTuple(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.tuple = tuple;\nvar TTuple = /** @class */ (function (_super) {\n __extends(TTuple, _super);\n function TTuple(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TTuple.prototype.getChecker = function (suite, strict) {\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(i, null, 1);\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TTuple;\n}(TType));\nexports.TTuple = TTuple;\n/**\n * Defines a union type, e.g. union('number', 'null').\n */\nfunction union() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TUnion(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.union = union;\nvar TUnion = /** @class */ (function (_super) {\n __extends(TUnion, _super);\n function TUnion(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n var names = ttypes.map(function (t) { return t instanceof TName || t instanceof TLiteral ? t.name : null; })\n .filter(function (n) { return n; });\n var otherTypes = ttypes.length - names.length;\n if (names.length) {\n if (otherTypes > 0) {\n names.push(otherTypes + \" more\");\n }\n _this._failMsg = \"is none of \" + names.join(\", \");\n }\n else {\n _this._failMsg = \"is none of \" + otherTypes + \" types\";\n }\n return _this;\n }\n TUnion.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict); });\n return function (value, ctx) {\n var ur = ctx.unionResolver();\n for (var i = 0; i < itemCheckers.length; i++) {\n var ok = itemCheckers[i](value, ur.createContext());\n if (ok) {\n return true;\n }\n }\n ctx.resolveUnion(ur);\n return ctx.fail(null, _this._failMsg, 0);\n };\n };\n return TUnion;\n}(TType));\nexports.TUnion = TUnion;\n/**\n * Defines an intersection type, e.g. intersection('number', 'null').\n */\nfunction intersection() {\n var typeSpec = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSpec[_i] = arguments[_i];\n }\n return new TIntersection(typeSpec.map(function (t) { return parseSpec(t); }));\n}\nexports.intersection = intersection;\nvar TIntersection = /** @class */ (function (_super) {\n __extends(TIntersection, _super);\n function TIntersection(ttypes) {\n var _this = _super.call(this) || this;\n _this.ttypes = ttypes;\n return _this;\n }\n TIntersection.prototype.getChecker = function (suite, strict) {\n var allowedProps = new Set();\n var itemCheckers = this.ttypes.map(function (t) { return t.getChecker(suite, strict, allowedProps); });\n return function (value, ctx) {\n var ok = itemCheckers.every(function (checker) { return checker(value, ctx); });\n if (ok) {\n return true;\n }\n return ctx.fail(null, null, 0);\n };\n };\n return TIntersection;\n}(TType));\nexports.TIntersection = TIntersection;\n/**\n * Defines an enum type, e.g. enum({'A': 1, 'B': 2}).\n */\nfunction enumtype(values) {\n return new TEnumType(values);\n}\nexports.enumtype = enumtype;\nvar TEnumType = /** @class */ (function (_super) {\n __extends(TEnumType, _super);\n function TEnumType(members) {\n var _this = _super.call(this) || this;\n _this.members = members;\n _this.validValues = new Set();\n _this._failMsg = \"is not a valid enum value\";\n _this.validValues = new Set(Object.keys(members).map(function (name) { return members[name]; }));\n return _this;\n }\n TEnumType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) {\n return (_this.validValues.has(value) ? true : ctx.fail(null, _this._failMsg, 0));\n };\n };\n return TEnumType;\n}(TType));\nexports.TEnumType = TEnumType;\n/**\n * Defines a literal enum value, such as Direction.Up, specified as enumlit(\"Direction\", \"Up\").\n */\nfunction enumlit(name, prop) {\n return new TEnumLiteral(name, prop);\n}\nexports.enumlit = enumlit;\nvar TEnumLiteral = /** @class */ (function (_super) {\n __extends(TEnumLiteral, _super);\n function TEnumLiteral(enumName, prop) {\n var _this = _super.call(this) || this;\n _this.enumName = enumName;\n _this.prop = prop;\n _this._failMsg = \"is not \" + enumName + \".\" + prop;\n return _this;\n }\n TEnumLiteral.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var ttype = getNamedType(suite, this.enumName);\n if (!(ttype instanceof TEnumType)) {\n throw new Error(\"Type \" + this.enumName + \" used in enumlit is not an enum type\");\n }\n var val = ttype.members[this.prop];\n if (!ttype.members.hasOwnProperty(this.prop)) {\n throw new Error(\"Unknown value \" + this.enumName + \".\" + this.prop + \" used in enumlit\");\n }\n return function (value, ctx) { return (value === val) ? true : ctx.fail(null, _this._failMsg, -1); };\n };\n return TEnumLiteral;\n}(TType));\nexports.TEnumLiteral = TEnumLiteral;\nfunction makeIfaceProps(props) {\n return Object.keys(props).map(function (name) { return makeIfaceProp(name, props[name]); });\n}\nfunction makeIfaceProp(name, prop) {\n return prop instanceof TOptional ?\n new TProp(name, prop.ttype, true) :\n new TProp(name, parseSpec(prop), false);\n}\n/**\n * Defines an interface. The first argument is an array of interfaces that it extends, and the\n * second is an array of properties.\n */\nfunction iface(bases, props) {\n return new TIface(bases, makeIfaceProps(props));\n}\nexports.iface = iface;\nvar TIface = /** @class */ (function (_super) {\n __extends(TIface, _super);\n function TIface(bases, props) {\n var _this = _super.call(this) || this;\n _this.bases = bases;\n _this.props = props;\n _this.propSet = new Set(props.map(function (p) { return p.name; }));\n return _this;\n }\n TIface.prototype.getChecker = function (suite, strict, allowedProps) {\n var _this = this;\n var baseCheckers = this.bases.map(function (b) { return getNamedType(suite, b).getChecker(suite, strict); });\n var propCheckers = this.props.map(function (prop) { return prop.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n // Consider a prop required if it's not optional AND does not allow for undefined as a value.\n var isPropRequired = this.props.map(function (prop, i) {\n return !prop.isOpt && !propCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (typeof value !== \"object\" || value === null) {\n return ctx.fail(null, \"is not an object\", 0);\n }\n for (var i = 0; i < baseCheckers.length; i++) {\n if (!baseCheckers[i](value, ctx)) {\n return false;\n }\n }\n for (var i = 0; i < propCheckers.length; i++) {\n var name_1 = _this.props[i].name;\n var v = value[name_1];\n if (v === undefined) {\n if (isPropRequired[i]) {\n return ctx.fail(name_1, \"is missing\", 1);\n }\n }\n else {\n var ok = propCheckers[i](v, ctx);\n if (!ok) {\n return ctx.fail(name_1, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n var propSet = this.propSet;\n if (allowedProps) {\n this.propSet.forEach(function (prop) { return allowedProps.add(prop); });\n propSet = allowedProps;\n }\n // In strict mode, check also for unknown enumerable properties.\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n for (var prop in value) {\n if (!propSet.has(prop)) {\n return ctx.fail(prop, \"is extraneous\", 2);\n }\n }\n return true;\n };\n };\n return TIface;\n}(TType));\nexports.TIface = TIface;\n/**\n * Defines an optional property on an interface.\n */\nfunction opt(typeSpec) { return new TOptional(parseSpec(typeSpec)); }\nexports.opt = opt;\nvar TOptional = /** @class */ (function (_super) {\n __extends(TOptional, _super);\n function TOptional(ttype) {\n var _this = _super.call(this) || this;\n _this.ttype = ttype;\n return _this;\n }\n TOptional.prototype.getChecker = function (suite, strict) {\n var itemChecker = this.ttype.getChecker(suite, strict);\n return function (value, ctx) {\n return value === undefined || itemChecker(value, ctx);\n };\n };\n return TOptional;\n}(TType));\nexports.TOptional = TOptional;\n/**\n * Defines a property in an interface.\n */\nvar TProp = /** @class */ (function () {\n function TProp(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TProp;\n}());\nexports.TProp = TProp;\n/**\n * Defines a function. The first argument declares the function's return type, the rest declare\n * its parameters.\n */\nfunction func(resultSpec) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n return new TFunc(new TParamList(params), parseSpec(resultSpec));\n}\nexports.func = func;\nvar TFunc = /** @class */ (function (_super) {\n __extends(TFunc, _super);\n function TFunc(paramList, result) {\n var _this = _super.call(this) || this;\n _this.paramList = paramList;\n _this.result = result;\n return _this;\n }\n TFunc.prototype.getChecker = function (suite, strict) {\n return function (value, ctx) {\n return typeof value === \"function\" ? true : ctx.fail(null, \"is not a function\", 0);\n };\n };\n return TFunc;\n}(TType));\nexports.TFunc = TFunc;\n/**\n * Defines a function parameter.\n */\nfunction param(name, typeSpec, isOpt) {\n return new TParam(name, parseSpec(typeSpec), Boolean(isOpt));\n}\nexports.param = param;\nvar TParam = /** @class */ (function () {\n function TParam(name, ttype, isOpt) {\n this.name = name;\n this.ttype = ttype;\n this.isOpt = isOpt;\n }\n return TParam;\n}());\nexports.TParam = TParam;\n/**\n * Defines a function parameter list.\n */\nvar TParamList = /** @class */ (function (_super) {\n __extends(TParamList, _super);\n function TParamList(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n return _this;\n }\n TParamList.prototype.getChecker = function (suite, strict) {\n var _this = this;\n var itemCheckers = this.params.map(function (t) { return t.ttype.getChecker(suite, strict); });\n var testCtx = new util_1.NoopContext();\n var isParamRequired = this.params.map(function (param, i) {\n return !param.isOpt && !itemCheckers[i](undefined, testCtx);\n });\n var checker = function (value, ctx) {\n if (!Array.isArray(value)) {\n return ctx.fail(null, \"is not an array\", 0);\n }\n for (var i = 0; i < itemCheckers.length; i++) {\n var p = _this.params[i];\n if (value[i] === undefined) {\n if (isParamRequired[i]) {\n return ctx.fail(p.name, \"is missing\", 1);\n }\n }\n else {\n var ok = itemCheckers[i](value[i], ctx);\n if (!ok) {\n return ctx.fail(p.name, null, 1);\n }\n }\n }\n return true;\n };\n if (!strict) {\n return checker;\n }\n return function (value, ctx) {\n if (!checker(value, ctx)) {\n return false;\n }\n return value.length <= itemCheckers.length ? true :\n ctx.fail(itemCheckers.length, \"is extraneous\", 2);\n };\n };\n return TParamList;\n}(TType));\nexports.TParamList = TParamList;\n/**\n * Single TType implementation for all basic built-in types.\n */\nvar BasicType = /** @class */ (function (_super) {\n __extends(BasicType, _super);\n function BasicType(validator, message) {\n var _this = _super.call(this) || this;\n _this.validator = validator;\n _this.message = message;\n return _this;\n }\n BasicType.prototype.getChecker = function (suite, strict) {\n var _this = this;\n return function (value, ctx) { return _this.validator(value) ? true : ctx.fail(null, _this.message, 0); };\n };\n return BasicType;\n}(TType));\nexports.BasicType = BasicType;\n/**\n * Defines the suite of basic types.\n */\nexports.basicTypes = {\n any: new BasicType(function (v) { return true; }, \"is invalid\"),\n number: new BasicType(function (v) { return (typeof v === \"number\"); }, \"is not a number\"),\n object: new BasicType(function (v) { return (typeof v === \"object\" && v); }, \"is not an object\"),\n boolean: new BasicType(function (v) { return (typeof v === \"boolean\"); }, \"is not a boolean\"),\n string: new BasicType(function (v) { return (typeof v === \"string\"); }, \"is not a string\"),\n symbol: new BasicType(function (v) { return (typeof v === \"symbol\"); }, \"is not a symbol\"),\n void: new BasicType(function (v) { return (v == null); }, \"is not void\"),\n undefined: new BasicType(function (v) { return (v === undefined); }, \"is not undefined\"),\n null: new BasicType(function (v) { return (v === null); }, \"is not null\"),\n never: new BasicType(function (v) { return false; }, \"is unexpected\"),\n Date: new BasicType(getIsNativeChecker(\"[object Date]\"), \"is not a Date\"),\n RegExp: new BasicType(getIsNativeChecker(\"[object RegExp]\"), \"is not a RegExp\"),\n};\n// This approach for checking native object types mirrors that of lodash. Its advantage over\n// `isinstance` is that it can still return true for native objects created in different JS\n// execution environments.\nvar nativeToString = Object.prototype.toString;\nfunction getIsNativeChecker(tag) {\n return function (v) { return typeof v === \"object\" && v && nativeToString.call(v) === tag; };\n}\nif (typeof Buffer !== \"undefined\") {\n exports.basicTypes.Buffer = new BasicType(function (v) { return Buffer.isBuffer(v); }, \"is not a Buffer\");\n}\nvar _loop_1 = function (array_1) {\n exports.basicTypes[array_1.name] = new BasicType(function (v) { return (v instanceof array_1); }, \"is not a \" + array_1.name);\n};\n// Support typed arrays of various flavors\nfor (var _i = 0, _a = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array, ArrayBuffer]; _i < _a.length; _i++) {\n var array_1 = _a[_i];\n _loop_1(array_1);\n}\n", "\"use strict\";\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Checker = exports.createCheckers = void 0;\nvar types_1 = require(\"./types\");\nvar util_1 = require(\"./util\");\n/**\n * Export functions used to define interfaces.\n */\nvar types_2 = require(\"./types\");\nObject.defineProperty(exports, \"TArray\", { enumerable: true, get: function () { return types_2.TArray; } });\nObject.defineProperty(exports, \"TEnumType\", { enumerable: true, get: function () { return types_2.TEnumType; } });\nObject.defineProperty(exports, \"TEnumLiteral\", { enumerable: true, get: function () { return types_2.TEnumLiteral; } });\nObject.defineProperty(exports, \"TFunc\", { enumerable: true, get: function () { return types_2.TFunc; } });\nObject.defineProperty(exports, \"TIface\", { enumerable: true, get: function () { return types_2.TIface; } });\nObject.defineProperty(exports, \"TLiteral\", { enumerable: true, get: function () { return types_2.TLiteral; } });\nObject.defineProperty(exports, \"TName\", { enumerable: true, get: function () { return types_2.TName; } });\nObject.defineProperty(exports, \"TOptional\", { enumerable: true, get: function () { return types_2.TOptional; } });\nObject.defineProperty(exports, \"TParam\", { enumerable: true, get: function () { return types_2.TParam; } });\nObject.defineProperty(exports, \"TParamList\", { enumerable: true, get: function () { return types_2.TParamList; } });\nObject.defineProperty(exports, \"TProp\", { enumerable: true, get: function () { return types_2.TProp; } });\nObject.defineProperty(exports, \"TTuple\", { enumerable: true, get: function () { return types_2.TTuple; } });\nObject.defineProperty(exports, \"TType\", { enumerable: true, get: function () { return types_2.TType; } });\nObject.defineProperty(exports, \"TUnion\", { enumerable: true, get: function () { return types_2.TUnion; } });\nObject.defineProperty(exports, \"TIntersection\", { enumerable: true, get: function () { return types_2.TIntersection; } });\nObject.defineProperty(exports, \"array\", { enumerable: true, get: function () { return types_2.array; } });\nObject.defineProperty(exports, \"enumlit\", { enumerable: true, get: function () { return types_2.enumlit; } });\nObject.defineProperty(exports, \"enumtype\", { enumerable: true, get: function () { return types_2.enumtype; } });\nObject.defineProperty(exports, \"func\", { enumerable: true, get: function () { return types_2.func; } });\nObject.defineProperty(exports, \"iface\", { enumerable: true, get: function () { return types_2.iface; } });\nObject.defineProperty(exports, \"lit\", { enumerable: true, get: function () { return types_2.lit; } });\nObject.defineProperty(exports, \"name\", { enumerable: true, get: function () { return types_2.name; } });\nObject.defineProperty(exports, \"opt\", { enumerable: true, get: function () { return types_2.opt; } });\nObject.defineProperty(exports, \"param\", { enumerable: true, get: function () { return types_2.param; } });\nObject.defineProperty(exports, \"tuple\", { enumerable: true, get: function () { return types_2.tuple; } });\nObject.defineProperty(exports, \"union\", { enumerable: true, get: function () { return types_2.union; } });\nObject.defineProperty(exports, \"intersection\", { enumerable: true, get: function () { return types_2.intersection; } });\nObject.defineProperty(exports, \"BasicType\", { enumerable: true, get: function () { return types_2.BasicType; } });\nvar util_2 = require(\"./util\");\nObject.defineProperty(exports, \"VError\", { enumerable: true, get: function () { return util_2.VError; } });\n/**\n * Takes one of more type suites (e.g. a module generated by `ts-interface-builder`), and combines\n * them into a suite of interface checkers. If a type is used by name, that name should be present\n * among the passed-in type suites.\n *\n * The returned object maps type names to Checker objects.\n */\nfunction createCheckers() {\n var typeSuite = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n typeSuite[_i] = arguments[_i];\n }\n var fullSuite = Object.assign.apply(Object, __spreadArrays([{}, types_1.basicTypes], typeSuite));\n var checkers = {};\n for (var _a = 0, typeSuite_1 = typeSuite; _a < typeSuite_1.length; _a++) {\n var suite_1 = typeSuite_1[_a];\n for (var _b = 0, _c = Object.keys(suite_1); _b < _c.length; _b++) {\n var name = _c[_b];\n checkers[name] = new Checker(fullSuite, suite_1[name]);\n }\n }\n return checkers;\n}\nexports.createCheckers = createCheckers;\n/**\n * Checker implements validation of objects, and also includes accessors to validate method calls.\n * Checkers should be created using `createCheckers()`.\n */\nvar Checker = /** @class */ (function () {\n // Create checkers by using `createCheckers()` function.\n function Checker(suite, ttype, _path) {\n if (_path === void 0) { _path = 'value'; }\n this.suite = suite;\n this.ttype = ttype;\n this._path = _path;\n this.props = new Map();\n if (ttype instanceof types_1.TIface) {\n for (var _i = 0, _a = ttype.props; _i < _a.length; _i++) {\n var p = _a[_i];\n this.props.set(p.name, p.ttype);\n }\n }\n this.checkerPlain = this.ttype.getChecker(suite, false);\n this.checkerStrict = this.ttype.getChecker(suite, true);\n }\n /**\n * Set the path to report in errors, instead of the default \"value\". (E.g. if the Checker is for\n * a \"person\" interface, set path to \"person\" to report e.g. \"person.name is not a string\".)\n */\n Checker.prototype.setReportedPath = function (path) {\n this._path = path;\n };\n /**\n * Check that the given value satisfies this checker's type, or throw Error.\n */\n Checker.prototype.check = function (value) { return this._doCheck(this.checkerPlain, value); };\n /**\n * A fast check for whether or not the given value satisfies this Checker's type. This returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.test = function (value) {\n return this.checkerPlain(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type, or null if it does.\n */\n Checker.prototype.validate = function (value) {\n return this._doValidate(this.checkerPlain, value);\n };\n /**\n * Check that the given value satisfies this checker's type strictly. This checks that objects\n * and tuples have no extra members. Note that this prevents backward compatibility, so usually\n * a plain check() is more appropriate.\n */\n Checker.prototype.strictCheck = function (value) { return this._doCheck(this.checkerStrict, value); };\n /**\n * A fast strict check for whether or not the given value satisfies this Checker's type. Returns\n * true or false, does not produce an error message, and is fast both on success and on failure.\n */\n Checker.prototype.strictTest = function (value) {\n return this.checkerStrict(value, new util_1.NoopContext());\n };\n /**\n * Returns an error object describing the errors if the given value does not satisfy this\n * Checker's type strictly, or null if it does.\n */\n Checker.prototype.strictValidate = function (value) {\n return this._doValidate(this.checkerStrict, value);\n };\n /**\n * If this checker is for an interface, returns a Checker for the type required for the given\n * property of this interface.\n */\n Checker.prototype.getProp = function (prop) {\n var ttype = this.props.get(prop);\n if (!ttype) {\n throw new Error(\"Type has no property \" + prop);\n }\n return new Checker(this.suite, ttype, this._path + \".\" + prop);\n };\n /**\n * If this checker is for an interface, returns a Checker for the argument-list required to call\n * the given method of this interface. E.g. if this Checker is for the interface:\n * interface Foo {\n * find(s: string, pos?: number): number;\n * }\n * Then methodArgs(\"find\").check(...) will succeed for [\"foo\"] and [\"foo\", 3], but not for [17].\n */\n Checker.prototype.methodArgs = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.paramList);\n };\n /**\n * If this checker is for an interface, returns a Checker for the return value of the given\n * method of this interface.\n */\n Checker.prototype.methodResult = function (methodName) {\n var tfunc = this._getMethod(methodName);\n return new Checker(this.suite, tfunc.result);\n };\n /**\n * If this checker is for a function, returns a Checker for its argument-list.\n */\n Checker.prototype.getArgs = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getArgs() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.paramList);\n };\n /**\n * If this checker is for a function, returns a Checker for its result.\n */\n Checker.prototype.getResult = function () {\n if (!(this.ttype instanceof types_1.TFunc)) {\n throw new Error(\"getResult() applied to non-function\");\n }\n return new Checker(this.suite, this.ttype.result);\n };\n /**\n * Return the type for which this is a checker.\n */\n Checker.prototype.getType = function () {\n return this.ttype;\n };\n /**\n * Actual implementation of check() and strictCheck().\n */\n Checker.prototype._doCheck = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (!checkerFunc(value, noopCtx)) {\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n throw detailCtx.getError(this._path);\n }\n };\n Checker.prototype._doValidate = function (checkerFunc, value) {\n var noopCtx = new util_1.NoopContext();\n if (checkerFunc(value, noopCtx)) {\n return null;\n }\n var detailCtx = new util_1.DetailContext();\n checkerFunc(value, detailCtx);\n return detailCtx.getErrorDetail(this._path);\n };\n Checker.prototype._getMethod = function (methodName) {\n var ttype = this.props.get(methodName);\n if (!ttype) {\n throw new Error(\"Type has no property \" + methodName);\n }\n if (!(ttype instanceof types_1.TFunc)) {\n throw new Error(\"Property \" + methodName + \" is not a method\");\n }\n return ttype;\n };\n return Checker;\n}());\nexports.Checker = Checker;\n", "/**\n * This module was automatically generated by `ts-interface-builder`\n */\nimport * as t from \"ts-interface-checker\";\n// tslint:disable:object-literal-key-quotes\n\nexport const Transform = t.union(\n t.lit(\"jsx\"),\n t.lit(\"typescript\"),\n t.lit(\"flow\"),\n t.lit(\"imports\"),\n t.lit(\"react-hot-loader\"),\n t.lit(\"jest\"),\n);\n\nexport const SourceMapOptions = t.iface([], {\n compiledFilename: \"string\",\n});\n\nexport const Options = t.iface([], {\n transforms: t.array(\"Transform\"),\n disableESTransforms: t.opt(\"boolean\"),\n jsxRuntime: t.opt(t.union(t.lit(\"classic\"), t.lit(\"automatic\"), t.lit(\"preserve\"))),\n production: t.opt(\"boolean\"),\n jsxImportSource: t.opt(\"string\"),\n jsxPragma: t.opt(\"string\"),\n jsxFragmentPragma: t.opt(\"string\"),\n keepUnusedImports: t.opt(\"boolean\"),\n preserveDynamicImport: t.opt(\"boolean\"),\n injectCreateRequireForImportRequire: t.opt(\"boolean\"),\n enableLegacyTypeScriptModuleInterop: t.opt(\"boolean\"),\n enableLegacyBabel5ModuleInterop: t.opt(\"boolean\"),\n sourceMapOptions: t.opt(\"SourceMapOptions\"),\n filePath: t.opt(\"string\"),\n});\n\nconst exportedTypeSuite = {\n Transform,\n SourceMapOptions,\n Options,\n};\nexport default exportedTypeSuite;\n", "import {createCheckers} from \"ts-interface-checker\";\n\nimport OptionsGenTypes from \"./Options-gen-types\";\n\nconst {Options: OptionsChecker} = createCheckers(OptionsGenTypes);\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexport function validateOptions(options) {\n OptionsChecker.strictCheck(options);\n}\n", "import {flowParseAssignableListItemTypes} from \"../plugins/flow\";\nimport {tsParseAssignableListItemTypes, tsParseModifiers} from \"../plugins/typescript\";\nimport {\n eat,\n IdentifierRole,\n match,\n next,\n popTypeContext,\n pushTypeContext,\n} from \"../tokenizer/index\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {TokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {isFlowEnabled, isTypeScriptEnabled, state} from \"./base\";\nimport {parseIdentifier, parseMaybeAssign, parseObj} from \"./expression\";\nimport {expect, unexpected} from \"./util\";\n\nexport function parseSpread() {\n next();\n parseMaybeAssign(false);\n}\n\nexport function parseRest(isBlockScope) {\n next();\n parseBindingAtom(isBlockScope);\n}\n\nexport function parseBindingIdentifier(isBlockScope) {\n parseIdentifier();\n markPriorBindingIdentifier(isBlockScope);\n}\n\nexport function parseImportedIdentifier() {\n parseIdentifier();\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n}\n\nexport function markPriorBindingIdentifier(isBlockScope) {\n let identifierRole;\n if (state.scopeDepth === 0) {\n identifierRole = IdentifierRole.TopLevelDeclaration;\n } else if (isBlockScope) {\n identifierRole = IdentifierRole.BlockScopedDeclaration;\n } else {\n identifierRole = IdentifierRole.FunctionScopedDeclaration;\n }\n state.tokens[state.tokens.length - 1].identifierRole = identifierRole;\n}\n\n// Parses lvalue (assignable) atom.\nexport function parseBindingAtom(isBlockScope) {\n switch (state.type) {\n case tt._this: {\n // In TypeScript, \"this\" may be the name of a parameter, so allow it.\n const oldIsType = pushTypeContext(0);\n next();\n popTypeContext(oldIsType);\n return;\n }\n\n case tt._yield:\n case tt.name: {\n state.type = tt.name;\n parseBindingIdentifier(isBlockScope);\n return;\n }\n\n case tt.bracketL: {\n next();\n parseBindingList(tt.bracketR, isBlockScope, true /* allowEmpty */);\n return;\n }\n\n case tt.braceL:\n parseObj(true, isBlockScope);\n return;\n\n default:\n unexpected();\n }\n}\n\nexport function parseBindingList(\n close,\n isBlockScope,\n allowEmpty = false,\n allowModifiers = false,\n contextId = 0,\n) {\n let first = true;\n\n let hasRemovedComma = false;\n const firstItemTokenIndex = state.tokens.length;\n\n while (!eat(close) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n state.tokens[state.tokens.length - 1].contextId = contextId;\n // After a \"this\" type in TypeScript, we need to set the following comma (if any) to also be\n // a type token so that it will be removed.\n if (!hasRemovedComma && state.tokens[firstItemTokenIndex].isType) {\n state.tokens[state.tokens.length - 1].isType = true;\n hasRemovedComma = true;\n }\n }\n if (allowEmpty && match(tt.comma)) {\n // Empty item; nothing further to parse for this item.\n } else if (eat(close)) {\n break;\n } else if (match(tt.ellipsis)) {\n parseRest(isBlockScope);\n parseAssignableListItemTypes();\n // Support rest element trailing commas allowed by TypeScript <2.9.\n eat(TokenType.comma);\n expect(close);\n break;\n } else {\n parseAssignableListItem(allowModifiers, isBlockScope);\n }\n }\n}\n\nfunction parseAssignableListItem(allowModifiers, isBlockScope) {\n if (allowModifiers) {\n tsParseModifiers([\n ContextualKeyword._public,\n ContextualKeyword._protected,\n ContextualKeyword._private,\n ContextualKeyword._readonly,\n ContextualKeyword._override,\n ]);\n }\n\n parseMaybeDefault(isBlockScope);\n parseAssignableListItemTypes();\n parseMaybeDefault(isBlockScope, true /* leftAlreadyParsed */);\n}\n\nfunction parseAssignableListItemTypes() {\n if (isFlowEnabled) {\n flowParseAssignableListItemTypes();\n } else if (isTypeScriptEnabled) {\n tsParseAssignableListItemTypes();\n }\n}\n\n// Parses assignment pattern around given atom if possible.\nexport function parseMaybeDefault(isBlockScope, leftAlreadyParsed = false) {\n if (!leftAlreadyParsed) {\n parseBindingAtom(isBlockScope);\n }\n if (!eat(tt.eq)) {\n return;\n }\n const eqIndex = state.tokens.length - 1;\n parseMaybeAssign();\n state.tokens[eqIndex].rhsEndIndex = state.tokens.length;\n}\n", "import {\n eat,\n finishToken,\n IdentifierRole,\n lookaheadType,\n lookaheadTypeAndKeyword,\n match,\n next,\n nextTemplateToken,\n popTypeContext,\n pushTypeContext,\n rescan_gt,\n} from \"../tokenizer/index\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {TokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {isJSXEnabled, state} from \"../traverser/base\";\nimport {\n atPossibleAsync,\n baseParseMaybeAssign,\n baseParseSubscript,\n parseCallExpressionArguments,\n parseExprAtom,\n parseExpression,\n parseFunctionBody,\n parseIdentifier,\n parseLiteral,\n parseMaybeAssign,\n parseMaybeUnary,\n parsePropertyName,\n parseTemplate,\n\n} from \"../traverser/expression\";\nimport {parseBindingIdentifier, parseBindingList, parseImportedIdentifier} from \"../traverser/lval\";\nimport {\n baseParseMaybeDecoratorArguments,\n parseBlockBody,\n parseClass,\n parseFunction,\n parseFunctionParams,\n parseStatement,\n parseVarStatement,\n} from \"../traverser/statement\";\nimport {\n canInsertSemicolon,\n eatContextual,\n expect,\n expectContextual,\n hasPrecedingLineBreak,\n isContextual,\n isLineTerminator,\n isLookaheadContextual,\n semicolon,\n unexpected,\n} from \"../traverser/util\";\nimport {nextJSXTagToken} from \"./jsx\";\n\nfunction tsIsIdentifier() {\n // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n // See https://github.com/Microsoft/TypeScript/issues/15008\n return match(tt.name);\n}\n\nfunction isLiteralPropertyName() {\n return (\n match(tt.name) ||\n Boolean(state.type & TokenType.IS_KEYWORD) ||\n match(tt.string) ||\n match(tt.num) ||\n match(tt.bigint) ||\n match(tt.decimal)\n );\n}\n\nfunction tsNextTokenCanFollowModifier() {\n // Note: TypeScript's implementation is much more complicated because\n // more things are considered modifiers there.\n // This implementation only handles modifiers not handled by babylon itself. And \"static\".\n // TODO: Would be nice to avoid lookahead. Want a hasLineBreakUpNext() method...\n const snapshot = state.snapshot();\n\n next();\n const canFollowModifier =\n (match(tt.bracketL) ||\n match(tt.braceL) ||\n match(tt.star) ||\n match(tt.ellipsis) ||\n match(tt.hash) ||\n isLiteralPropertyName()) &&\n !hasPrecedingLineBreak();\n\n if (canFollowModifier) {\n return true;\n } else {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n}\n\nexport function tsParseModifiers(allowedModifiers) {\n while (true) {\n const modifier = tsParseModifier(allowedModifiers);\n if (modifier === null) {\n break;\n }\n }\n}\n\n/** Parses a modifier matching one the given modifier names. */\nexport function tsParseModifier(\n allowedModifiers,\n) {\n if (!match(tt.name)) {\n return null;\n }\n\n const modifier = state.contextualKeyword;\n if (allowedModifiers.indexOf(modifier) !== -1 && tsNextTokenCanFollowModifier()) {\n switch (modifier) {\n case ContextualKeyword._readonly:\n state.tokens[state.tokens.length - 1].type = tt._readonly;\n break;\n case ContextualKeyword._abstract:\n state.tokens[state.tokens.length - 1].type = tt._abstract;\n break;\n case ContextualKeyword._static:\n state.tokens[state.tokens.length - 1].type = tt._static;\n break;\n case ContextualKeyword._public:\n state.tokens[state.tokens.length - 1].type = tt._public;\n break;\n case ContextualKeyword._private:\n state.tokens[state.tokens.length - 1].type = tt._private;\n break;\n case ContextualKeyword._protected:\n state.tokens[state.tokens.length - 1].type = tt._protected;\n break;\n case ContextualKeyword._override:\n state.tokens[state.tokens.length - 1].type = tt._override;\n break;\n case ContextualKeyword._declare:\n state.tokens[state.tokens.length - 1].type = tt._declare;\n break;\n default:\n break;\n }\n return modifier;\n }\n return null;\n}\n\nfunction tsParseEntityName() {\n parseIdentifier();\n while (eat(tt.dot)) {\n parseIdentifier();\n }\n}\n\nfunction tsParseTypeReference() {\n tsParseEntityName();\n if (!hasPrecedingLineBreak() && match(tt.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseThisTypePredicate() {\n next();\n tsParseTypeAnnotation();\n}\n\nfunction tsParseThisTypeNode() {\n next();\n}\n\nfunction tsParseTypeQuery() {\n expect(tt._typeof);\n if (match(tt._import)) {\n tsParseImportType();\n } else {\n tsParseEntityName();\n }\n if (!hasPrecedingLineBreak() && match(tt.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseImportType() {\n expect(tt._import);\n expect(tt.parenL);\n expect(tt.string);\n expect(tt.parenR);\n if (eat(tt.dot)) {\n tsParseEntityName();\n }\n if (match(tt.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseTypeParameter() {\n eat(tt._const);\n const hadIn = eat(tt._in);\n const hadOut = eatContextual(ContextualKeyword._out);\n eat(tt._const);\n if ((hadIn || hadOut) && !match(tt.name)) {\n // The \"in\" or \"out\" keyword must have actually been the type parameter\n // name, so set it as the name.\n state.tokens[state.tokens.length - 1].type = tt.name;\n } else {\n parseIdentifier();\n }\n\n if (eat(tt._extends)) {\n tsParseType();\n }\n if (eat(tt.eq)) {\n tsParseType();\n }\n}\n\nexport function tsTryParseTypeParameters() {\n if (match(tt.lessThan)) {\n tsParseTypeParameters();\n }\n}\n\nfunction tsParseTypeParameters() {\n const oldIsType = pushTypeContext(0);\n if (match(tt.lessThan) || match(tt.typeParameterStart)) {\n next();\n } else {\n unexpected();\n }\n\n while (!eat(tt.greaterThan) && !state.error) {\n tsParseTypeParameter();\n eat(tt.comma);\n }\n popTypeContext(oldIsType);\n}\n\n// Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n// but here it's always false, because this is only used for types.\nfunction tsFillSignature(returnToken) {\n // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n const returnTokenRequired = returnToken === tt.arrow;\n tsTryParseTypeParameters();\n expect(tt.parenL);\n // Create a scope even though we're doing type parsing so we don't accidentally\n // treat params as top-level bindings.\n state.scopeDepth++;\n tsParseBindingListForSignature(false /* isBlockScope */);\n state.scopeDepth--;\n if (returnTokenRequired) {\n tsParseTypeOrTypePredicateAnnotation(returnToken);\n } else if (match(returnToken)) {\n tsParseTypeOrTypePredicateAnnotation(returnToken);\n }\n}\n\nfunction tsParseBindingListForSignature(isBlockScope) {\n parseBindingList(tt.parenR, isBlockScope);\n}\n\nfunction tsParseTypeMemberSemicolon() {\n if (!eat(tt.comma)) {\n semicolon();\n }\n}\n\nfunction tsParseSignatureMember() {\n tsFillSignature(tt.colon);\n tsParseTypeMemberSemicolon();\n}\n\nfunction tsIsUnambiguouslyIndexSignature() {\n const snapshot = state.snapshot();\n next(); // Skip '{'\n const isIndexSignature = eat(tt.name) && match(tt.colon);\n state.restoreFromSnapshot(snapshot);\n return isIndexSignature;\n}\n\nfunction tsTryParseIndexSignature() {\n if (!(match(tt.bracketL) && tsIsUnambiguouslyIndexSignature())) {\n return false;\n }\n\n const oldIsType = pushTypeContext(0);\n\n expect(tt.bracketL);\n parseIdentifier();\n tsParseTypeAnnotation();\n expect(tt.bracketR);\n\n tsTryParseTypeAnnotation();\n tsParseTypeMemberSemicolon();\n\n popTypeContext(oldIsType);\n return true;\n}\n\nfunction tsParsePropertyOrMethodSignature(isReadonly) {\n eat(tt.question);\n\n if (!isReadonly && (match(tt.parenL) || match(tt.lessThan))) {\n tsFillSignature(tt.colon);\n tsParseTypeMemberSemicolon();\n } else {\n tsTryParseTypeAnnotation();\n tsParseTypeMemberSemicolon();\n }\n}\n\nfunction tsParseTypeMember() {\n if (match(tt.parenL) || match(tt.lessThan)) {\n // call signature\n tsParseSignatureMember();\n return;\n }\n if (match(tt._new)) {\n next();\n if (match(tt.parenL) || match(tt.lessThan)) {\n // constructor signature\n tsParseSignatureMember();\n } else {\n tsParsePropertyOrMethodSignature(false);\n }\n return;\n }\n const readonly = !!tsParseModifier([ContextualKeyword._readonly]);\n\n const found = tsTryParseIndexSignature();\n if (found) {\n return;\n }\n if (\n (isContextual(ContextualKeyword._get) || isContextual(ContextualKeyword._set)) &&\n tsNextTokenCanFollowModifier()\n ) {\n // This is a getter/setter on a type. The tsNextTokenCanFollowModifier\n // function already called next() for us, so continue parsing the name.\n }\n parsePropertyName(-1 /* Types don't need context IDs. */);\n tsParsePropertyOrMethodSignature(readonly);\n}\n\nfunction tsParseTypeLiteral() {\n tsParseObjectTypeMembers();\n}\n\nfunction tsParseObjectTypeMembers() {\n expect(tt.braceL);\n while (!eat(tt.braceR) && !state.error) {\n tsParseTypeMember();\n }\n}\n\nfunction tsLookaheadIsStartOfMappedType() {\n const snapshot = state.snapshot();\n const isStartOfMappedType = tsIsStartOfMappedType();\n state.restoreFromSnapshot(snapshot);\n return isStartOfMappedType;\n}\n\nfunction tsIsStartOfMappedType() {\n next();\n if (eat(tt.plus) || eat(tt.minus)) {\n return isContextual(ContextualKeyword._readonly);\n }\n if (isContextual(ContextualKeyword._readonly)) {\n next();\n }\n if (!match(tt.bracketL)) {\n return false;\n }\n next();\n if (!tsIsIdentifier()) {\n return false;\n }\n next();\n return match(tt._in);\n}\n\nfunction tsParseMappedTypeParameter() {\n parseIdentifier();\n expect(tt._in);\n tsParseType();\n}\n\nfunction tsParseMappedType() {\n expect(tt.braceL);\n if (match(tt.plus) || match(tt.minus)) {\n next();\n expectContextual(ContextualKeyword._readonly);\n } else {\n eatContextual(ContextualKeyword._readonly);\n }\n expect(tt.bracketL);\n tsParseMappedTypeParameter();\n if (eatContextual(ContextualKeyword._as)) {\n tsParseType();\n }\n expect(tt.bracketR);\n if (match(tt.plus) || match(tt.minus)) {\n next();\n expect(tt.question);\n } else {\n eat(tt.question);\n }\n tsTryParseType();\n semicolon();\n expect(tt.braceR);\n}\n\nfunction tsParseTupleType() {\n expect(tt.bracketL);\n while (!eat(tt.bracketR) && !state.error) {\n // Do not validate presence of either none or only labeled elements\n tsParseTupleElementType();\n eat(tt.comma);\n }\n}\n\nfunction tsParseTupleElementType() {\n // parses `...TsType[]`\n if (eat(tt.ellipsis)) {\n tsParseType();\n } else {\n // parses `TsType?`\n tsParseType();\n eat(tt.question);\n }\n\n // The type we parsed above was actually a label\n if (eat(tt.colon)) {\n // Labeled tuple types must affix the label with `...` or `?`, so no need to handle those here\n tsParseType();\n }\n}\n\nfunction tsParseParenthesizedType() {\n expect(tt.parenL);\n tsParseType();\n expect(tt.parenR);\n}\n\nfunction tsParseTemplateLiteralType() {\n // Finish `, read quasi\n nextTemplateToken();\n // Finish quasi, read ${\n nextTemplateToken();\n while (!match(tt.backQuote) && !state.error) {\n expect(tt.dollarBraceL);\n tsParseType();\n // Finish }, read quasi\n nextTemplateToken();\n // Finish quasi, read either ${ or `\n nextTemplateToken();\n }\n next();\n}\n\nvar FunctionType; (function (FunctionType) {\n const TSFunctionType = 0; FunctionType[FunctionType[\"TSFunctionType\"] = TSFunctionType] = \"TSFunctionType\";\n const TSConstructorType = TSFunctionType + 1; FunctionType[FunctionType[\"TSConstructorType\"] = TSConstructorType] = \"TSConstructorType\";\n const TSAbstractConstructorType = TSConstructorType + 1; FunctionType[FunctionType[\"TSAbstractConstructorType\"] = TSAbstractConstructorType] = \"TSAbstractConstructorType\";\n})(FunctionType || (FunctionType = {}));\n\nfunction tsParseFunctionOrConstructorType(type) {\n if (type === FunctionType.TSAbstractConstructorType) {\n expectContextual(ContextualKeyword._abstract);\n }\n if (type === FunctionType.TSConstructorType || type === FunctionType.TSAbstractConstructorType) {\n expect(tt._new);\n }\n const oldInDisallowConditionalTypesContext = state.inDisallowConditionalTypesContext;\n state.inDisallowConditionalTypesContext = false;\n tsFillSignature(tt.arrow);\n state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n}\n\nfunction tsParseNonArrayType() {\n switch (state.type) {\n case tt.name:\n tsParseTypeReference();\n return;\n case tt._void:\n case tt._null:\n next();\n return;\n case tt.string:\n case tt.num:\n case tt.bigint:\n case tt.decimal:\n case tt._true:\n case tt._false:\n parseLiteral();\n return;\n case tt.minus:\n next();\n parseLiteral();\n return;\n case tt._this: {\n tsParseThisTypeNode();\n if (isContextual(ContextualKeyword._is) && !hasPrecedingLineBreak()) {\n tsParseThisTypePredicate();\n }\n return;\n }\n case tt._typeof:\n tsParseTypeQuery();\n return;\n case tt._import:\n tsParseImportType();\n return;\n case tt.braceL:\n if (tsLookaheadIsStartOfMappedType()) {\n tsParseMappedType();\n } else {\n tsParseTypeLiteral();\n }\n return;\n case tt.bracketL:\n tsParseTupleType();\n return;\n case tt.parenL:\n tsParseParenthesizedType();\n return;\n case tt.backQuote:\n tsParseTemplateLiteralType();\n return;\n default:\n if (state.type & TokenType.IS_KEYWORD) {\n next();\n state.tokens[state.tokens.length - 1].type = tt.name;\n return;\n }\n break;\n }\n\n unexpected();\n}\n\nfunction tsParseArrayTypeOrHigher() {\n tsParseNonArrayType();\n while (!hasPrecedingLineBreak() && eat(tt.bracketL)) {\n if (!eat(tt.bracketR)) {\n // If we hit ] immediately, this is an array type, otherwise it's an indexed access type.\n tsParseType();\n expect(tt.bracketR);\n }\n }\n}\n\nfunction tsParseInferType() {\n expectContextual(ContextualKeyword._infer);\n parseIdentifier();\n if (match(tt._extends)) {\n // Infer type constraints introduce an ambiguity about whether the \"extends\"\n // is a constraint for this infer type or is another conditional type.\n const snapshot = state.snapshot();\n expect(tt._extends);\n const oldInDisallowConditionalTypesContext = state.inDisallowConditionalTypesContext;\n state.inDisallowConditionalTypesContext = true;\n tsParseType();\n state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n if (state.error || (!state.inDisallowConditionalTypesContext && match(tt.question))) {\n state.restoreFromSnapshot(snapshot);\n }\n }\n}\n\nfunction tsParseTypeOperatorOrHigher() {\n if (\n isContextual(ContextualKeyword._keyof) ||\n isContextual(ContextualKeyword._unique) ||\n isContextual(ContextualKeyword._readonly)\n ) {\n next();\n tsParseTypeOperatorOrHigher();\n } else if (isContextual(ContextualKeyword._infer)) {\n tsParseInferType();\n } else {\n const oldInDisallowConditionalTypesContext = state.inDisallowConditionalTypesContext;\n state.inDisallowConditionalTypesContext = false;\n tsParseArrayTypeOrHigher();\n state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n }\n}\n\nfunction tsParseIntersectionTypeOrHigher() {\n eat(tt.bitwiseAND);\n tsParseTypeOperatorOrHigher();\n if (match(tt.bitwiseAND)) {\n while (eat(tt.bitwiseAND)) {\n tsParseTypeOperatorOrHigher();\n }\n }\n}\n\nfunction tsParseUnionTypeOrHigher() {\n eat(tt.bitwiseOR);\n tsParseIntersectionTypeOrHigher();\n if (match(tt.bitwiseOR)) {\n while (eat(tt.bitwiseOR)) {\n tsParseIntersectionTypeOrHigher();\n }\n }\n}\n\nfunction tsIsStartOfFunctionType() {\n if (match(tt.lessThan)) {\n return true;\n }\n return match(tt.parenL) && tsLookaheadIsUnambiguouslyStartOfFunctionType();\n}\n\nfunction tsSkipParameterStart() {\n if (match(tt.name) || match(tt._this)) {\n next();\n return true;\n }\n // If this is a possible array/object destructure, walk to the matching bracket/brace.\n // The next token after will tell us definitively whether this is a function param.\n if (match(tt.braceL) || match(tt.bracketL)) {\n let depth = 1;\n next();\n while (depth > 0 && !state.error) {\n if (match(tt.braceL) || match(tt.bracketL)) {\n depth++;\n } else if (match(tt.braceR) || match(tt.bracketR)) {\n depth--;\n }\n next();\n }\n return true;\n }\n return false;\n}\n\nfunction tsLookaheadIsUnambiguouslyStartOfFunctionType() {\n const snapshot = state.snapshot();\n const isUnambiguouslyStartOfFunctionType = tsIsUnambiguouslyStartOfFunctionType();\n state.restoreFromSnapshot(snapshot);\n return isUnambiguouslyStartOfFunctionType;\n}\n\nfunction tsIsUnambiguouslyStartOfFunctionType() {\n next();\n if (match(tt.parenR) || match(tt.ellipsis)) {\n // ( )\n // ( ...\n return true;\n }\n if (tsSkipParameterStart()) {\n if (match(tt.colon) || match(tt.comma) || match(tt.question) || match(tt.eq)) {\n // ( xxx :\n // ( xxx ,\n // ( xxx ?\n // ( xxx =\n return true;\n }\n if (match(tt.parenR)) {\n next();\n if (match(tt.arrow)) {\n // ( xxx ) =>\n return true;\n }\n }\n }\n return false;\n}\n\nfunction tsParseTypeOrTypePredicateAnnotation(returnToken) {\n const oldIsType = pushTypeContext(0);\n expect(returnToken);\n const finishedReturn = tsParseTypePredicateOrAssertsPrefix();\n if (!finishedReturn) {\n tsParseType();\n }\n popTypeContext(oldIsType);\n}\n\nfunction tsTryParseTypeOrTypePredicateAnnotation() {\n if (match(tt.colon)) {\n tsParseTypeOrTypePredicateAnnotation(tt.colon);\n }\n}\n\nexport function tsTryParseTypeAnnotation() {\n if (match(tt.colon)) {\n tsParseTypeAnnotation();\n }\n}\n\nfunction tsTryParseType() {\n if (eat(tt.colon)) {\n tsParseType();\n }\n}\n\n/**\n * Detect a few special return syntax cases: `x is T`, `asserts x`, `asserts x is T`,\n * `asserts this is T`.\n *\n * Returns true if we parsed the return type, false if there's still a type to be parsed.\n */\nfunction tsParseTypePredicateOrAssertsPrefix() {\n const snapshot = state.snapshot();\n if (isContextual(ContextualKeyword._asserts)) {\n // Normally this is `asserts x is T`, but at this point, it might be `asserts is T` (a user-\n // defined type guard on the `asserts` variable) or just a type called `asserts`.\n next();\n if (eatContextual(ContextualKeyword._is)) {\n // If we see `asserts is`, then this must be of the form `asserts is T`, since\n // `asserts is is T` isn't valid.\n tsParseType();\n return true;\n } else if (tsIsIdentifier() || match(tt._this)) {\n next();\n if (eatContextual(ContextualKeyword._is)) {\n // If we see `is`, then this is `asserts x is T`. Otherwise, it's `asserts x`.\n tsParseType();\n }\n return true;\n } else {\n // Regular type, so bail out and start type parsing from scratch.\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n } else if (tsIsIdentifier() || match(tt._this)) {\n // This is a regular identifier, which may or may not have \"is\" after it.\n next();\n if (isContextual(ContextualKeyword._is) && !hasPrecedingLineBreak()) {\n next();\n tsParseType();\n return true;\n } else {\n // Regular type, so bail out and start type parsing from scratch.\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n }\n return false;\n}\n\nexport function tsParseTypeAnnotation() {\n const oldIsType = pushTypeContext(0);\n expect(tt.colon);\n tsParseType();\n popTypeContext(oldIsType);\n}\n\nexport function tsParseType() {\n tsParseNonConditionalType();\n if (state.inDisallowConditionalTypesContext || hasPrecedingLineBreak() || !eat(tt._extends)) {\n return;\n }\n // extends type\n const oldInDisallowConditionalTypesContext = state.inDisallowConditionalTypesContext;\n state.inDisallowConditionalTypesContext = true;\n tsParseNonConditionalType();\n state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;\n\n expect(tt.question);\n // true type\n tsParseType();\n expect(tt.colon);\n // false type\n tsParseType();\n}\n\nfunction isAbstractConstructorSignature() {\n return isContextual(ContextualKeyword._abstract) && lookaheadType() === tt._new;\n}\n\nexport function tsParseNonConditionalType() {\n if (tsIsStartOfFunctionType()) {\n tsParseFunctionOrConstructorType(FunctionType.TSFunctionType);\n return;\n }\n if (match(tt._new)) {\n // As in `new () => Date`\n tsParseFunctionOrConstructorType(FunctionType.TSConstructorType);\n return;\n } else if (isAbstractConstructorSignature()) {\n // As in `abstract new () => Date`\n tsParseFunctionOrConstructorType(FunctionType.TSAbstractConstructorType);\n return;\n }\n tsParseUnionTypeOrHigher();\n}\n\nexport function tsParseTypeAssertion() {\n const oldIsType = pushTypeContext(1);\n tsParseType();\n expect(tt.greaterThan);\n popTypeContext(oldIsType);\n parseMaybeUnary();\n}\n\nexport function tsTryParseJSXTypeArgument() {\n if (eat(tt.jsxTagStart)) {\n state.tokens[state.tokens.length - 1].type = tt.typeParameterStart;\n const oldIsType = pushTypeContext(1);\n while (!match(tt.greaterThan) && !state.error) {\n tsParseType();\n eat(tt.comma);\n }\n // Process >, but the one after needs to be parsed JSX-style.\n nextJSXTagToken();\n popTypeContext(oldIsType);\n }\n}\n\nfunction tsParseHeritageClause() {\n while (!match(tt.braceL) && !state.error) {\n tsParseExpressionWithTypeArguments();\n eat(tt.comma);\n }\n}\n\nfunction tsParseExpressionWithTypeArguments() {\n // Note: TS uses parseLeftHandSideExpressionOrHigher,\n // then has grammar errors later if it's not an EntityName.\n tsParseEntityName();\n if (match(tt.lessThan)) {\n tsParseTypeArguments();\n }\n}\n\nfunction tsParseInterfaceDeclaration() {\n parseBindingIdentifier(false);\n tsTryParseTypeParameters();\n if (eat(tt._extends)) {\n tsParseHeritageClause();\n }\n tsParseObjectTypeMembers();\n}\n\nfunction tsParseTypeAliasDeclaration() {\n parseBindingIdentifier(false);\n tsTryParseTypeParameters();\n expect(tt.eq);\n tsParseType();\n semicolon();\n}\n\nfunction tsParseEnumMember() {\n // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n if (match(tt.string)) {\n parseLiteral();\n } else {\n parseIdentifier();\n }\n if (eat(tt.eq)) {\n const eqIndex = state.tokens.length - 1;\n parseMaybeAssign();\n state.tokens[eqIndex].rhsEndIndex = state.tokens.length;\n }\n}\n\nfunction tsParseEnumDeclaration() {\n parseBindingIdentifier(false);\n expect(tt.braceL);\n while (!eat(tt.braceR) && !state.error) {\n tsParseEnumMember();\n eat(tt.comma);\n }\n}\n\nfunction tsParseModuleBlock() {\n expect(tt.braceL);\n parseBlockBody(/* end */ tt.braceR);\n}\n\nfunction tsParseModuleOrNamespaceDeclaration() {\n parseBindingIdentifier(false);\n if (eat(tt.dot)) {\n tsParseModuleOrNamespaceDeclaration();\n } else {\n tsParseModuleBlock();\n }\n}\n\nfunction tsParseAmbientExternalModuleDeclaration() {\n if (isContextual(ContextualKeyword._global)) {\n parseIdentifier();\n } else if (match(tt.string)) {\n parseExprAtom();\n } else {\n unexpected();\n }\n\n if (match(tt.braceL)) {\n tsParseModuleBlock();\n } else {\n semicolon();\n }\n}\n\nexport function tsParseImportEqualsDeclaration() {\n parseImportedIdentifier();\n expect(tt.eq);\n tsParseModuleReference();\n semicolon();\n}\n\nfunction tsIsExternalModuleReference() {\n return isContextual(ContextualKeyword._require) && lookaheadType() === tt.parenL;\n}\n\nfunction tsParseModuleReference() {\n if (tsIsExternalModuleReference()) {\n tsParseExternalModuleReference();\n } else {\n tsParseEntityName();\n }\n}\n\nfunction tsParseExternalModuleReference() {\n expectContextual(ContextualKeyword._require);\n expect(tt.parenL);\n if (!match(tt.string)) {\n unexpected();\n }\n parseLiteral();\n expect(tt.parenR);\n}\n\n// Utilities\n\n// Returns true if a statement matched.\nfunction tsTryParseDeclare() {\n if (isLineTerminator()) {\n return false;\n }\n switch (state.type) {\n case tt._function: {\n const oldIsType = pushTypeContext(1);\n next();\n // We don't need to precisely get the function start here, since it's only used to mark\n // the function as a type if it's bodiless, and it's already a type here.\n const functionStart = state.start;\n parseFunction(functionStart, /* isStatement */ true);\n popTypeContext(oldIsType);\n return true;\n }\n case tt._class: {\n const oldIsType = pushTypeContext(1);\n parseClass(/* isStatement */ true, /* optionalId */ false);\n popTypeContext(oldIsType);\n return true;\n }\n case tt._const: {\n if (match(tt._const) && isLookaheadContextual(ContextualKeyword._enum)) {\n const oldIsType = pushTypeContext(1);\n // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n expect(tt._const);\n expectContextual(ContextualKeyword._enum);\n state.tokens[state.tokens.length - 1].type = tt._enum;\n tsParseEnumDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n }\n // falls through\n case tt._var:\n case tt._let: {\n const oldIsType = pushTypeContext(1);\n parseVarStatement(state.type !== tt._var);\n popTypeContext(oldIsType);\n return true;\n }\n case tt.name: {\n const oldIsType = pushTypeContext(1);\n const contextualKeyword = state.contextualKeyword;\n let matched = false;\n if (contextualKeyword === ContextualKeyword._global) {\n tsParseAmbientExternalModuleDeclaration();\n matched = true;\n } else {\n matched = tsParseDeclaration(contextualKeyword, /* isBeforeToken */ true);\n }\n popTypeContext(oldIsType);\n return matched;\n }\n default:\n return false;\n }\n}\n\n// Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n// Returns true if it matched a declaration.\nfunction tsTryParseExportDeclaration() {\n return tsParseDeclaration(state.contextualKeyword, /* isBeforeToken */ true);\n}\n\n// Returns true if it matched a statement.\nfunction tsParseExpressionStatement(contextualKeyword) {\n switch (contextualKeyword) {\n case ContextualKeyword._declare: {\n const declareTokenIndex = state.tokens.length - 1;\n const matched = tsTryParseDeclare();\n if (matched) {\n state.tokens[declareTokenIndex].type = tt._declare;\n return true;\n }\n break;\n }\n case ContextualKeyword._global:\n // `global { }` (with no `declare`) may appear inside an ambient module declaration.\n // Would like to use tsParseAmbientExternalModuleDeclaration here, but already ran past \"global\".\n if (match(tt.braceL)) {\n tsParseModuleBlock();\n return true;\n }\n break;\n\n default:\n return tsParseDeclaration(contextualKeyword, /* isBeforeToken */ false);\n }\n return false;\n}\n\n/**\n * Common code for parsing a declaration.\n *\n * isBeforeToken indicates that the current parser state is at the contextual\n * keyword (and that it is not yet emitted) rather than reading the token after\n * it. When isBeforeToken is true, we may be preceded by an `export` token and\n * should include that token in a type context we create, e.g. to handle\n * `export interface` or `export type`. (This is a bit of a hack and should be\n * cleaned up at some point.)\n *\n * Returns true if it matched a declaration.\n */\nfunction tsParseDeclaration(contextualKeyword, isBeforeToken) {\n switch (contextualKeyword) {\n case ContextualKeyword._abstract:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt._class)) {\n state.tokens[state.tokens.length - 1].type = tt._abstract;\n parseClass(/* isStatement */ true, /* optionalId */ false);\n return true;\n }\n break;\n\n case ContextualKeyword._enum:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt.name)) {\n state.tokens[state.tokens.length - 1].type = tt._enum;\n tsParseEnumDeclaration();\n return true;\n }\n break;\n\n case ContextualKeyword._interface:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt.name)) {\n // `next` is true in \"export\" and \"declare\" contexts, so we want to remove that token\n // as well.\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseInterfaceDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n break;\n\n case ContextualKeyword._module:\n if (tsCheckLineTerminator(isBeforeToken)) {\n if (match(tt.string)) {\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseAmbientExternalModuleDeclaration();\n popTypeContext(oldIsType);\n return true;\n } else if (match(tt.name)) {\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseModuleOrNamespaceDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n }\n break;\n\n case ContextualKeyword._namespace:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt.name)) {\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseModuleOrNamespaceDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n break;\n\n case ContextualKeyword._type:\n if (tsCheckLineTerminator(isBeforeToken) && match(tt.name)) {\n const oldIsType = pushTypeContext(isBeforeToken ? 2 : 1);\n tsParseTypeAliasDeclaration();\n popTypeContext(oldIsType);\n return true;\n }\n break;\n\n default:\n break;\n }\n return false;\n}\n\nfunction tsCheckLineTerminator(isBeforeToken) {\n if (isBeforeToken) {\n // Babel checks hasFollowingLineBreak here and returns false, but this\n // doesn't actually come up, e.g. `export interface` can never be on its own\n // line in valid code.\n next();\n return true;\n } else {\n return !isLineTerminator();\n }\n}\n\n// Returns true if there was a generic async arrow function.\nfunction tsTryParseGenericAsyncArrowFunction() {\n const snapshot = state.snapshot();\n\n tsParseTypeParameters();\n parseFunctionParams();\n tsTryParseTypeOrTypePredicateAnnotation();\n expect(tt.arrow);\n\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n\n parseFunctionBody(true);\n return true;\n}\n\n/**\n * If necessary, hack the tokenizer state so that this bitshift was actually a\n * less-than token, then keep parsing. This should only be used in situations\n * where we restore from snapshot on error (which reverts this change) or\n * where bitshift would be illegal anyway (e.g. in a class \"extends\" clause).\n *\n * This hack is useful to handle situations like foo<<T>() => void>() where\n * there can legitimately be two open-angle-brackets in a row in TS.\n */\nfunction tsParseTypeArgumentsWithPossibleBitshift() {\n if (state.type === tt.bitShiftL) {\n state.pos -= 1;\n finishToken(tt.lessThan);\n }\n tsParseTypeArguments();\n}\n\nfunction tsParseTypeArguments() {\n const oldIsType = pushTypeContext(0);\n expect(tt.lessThan);\n while (!match(tt.greaterThan) && !state.error) {\n tsParseType();\n eat(tt.comma);\n }\n if (!oldIsType) {\n // If the type arguments are present in an expression context, e.g.\n // f<number>(), then the > sign should be tokenized as a non-type token.\n // In particular, f(a < b, c >= d) should parse the >= as a single token,\n // resulting in a syntax error and fallback to the non-type-args\n // interpretation. In the success case, even though the > is tokenized as a\n // non-type token, it still must be marked as a type token so that it is\n // erased.\n popTypeContext(oldIsType);\n rescan_gt();\n expect(tt.greaterThan);\n state.tokens[state.tokens.length - 1].isType = true;\n } else {\n expect(tt.greaterThan);\n popTypeContext(oldIsType);\n }\n}\n\nexport function tsIsDeclarationStart() {\n if (match(tt.name)) {\n switch (state.contextualKeyword) {\n case ContextualKeyword._abstract:\n case ContextualKeyword._declare:\n case ContextualKeyword._enum:\n case ContextualKeyword._interface:\n case ContextualKeyword._module:\n case ContextualKeyword._namespace:\n case ContextualKeyword._type:\n return true;\n default:\n break;\n }\n }\n\n return false;\n}\n\n// ======================================================\n// OVERRIDES\n// ======================================================\n\nexport function tsParseFunctionBodyAndFinish(functionStart, funcContextId) {\n // For arrow functions, `parseArrow` handles the return type itself.\n if (match(tt.colon)) {\n tsParseTypeOrTypePredicateAnnotation(tt.colon);\n }\n\n // The original code checked the node type to make sure this function type allows a missing\n // body, but we skip that to avoid sending around the node type. We instead just use the\n // allowExpressionBody boolean to make sure it's not an arrow function.\n if (!match(tt.braceL) && isLineTerminator()) {\n // Retroactively mark the function declaration as a type.\n let i = state.tokens.length - 1;\n while (\n i >= 0 &&\n (state.tokens[i].start >= functionStart ||\n state.tokens[i].type === tt._default ||\n state.tokens[i].type === tt._export)\n ) {\n state.tokens[i].isType = true;\n i--;\n }\n return;\n }\n\n parseFunctionBody(false, funcContextId);\n}\n\nexport function tsParseSubscript(\n startTokenIndex,\n noCalls,\n stopState,\n) {\n if (!hasPrecedingLineBreak() && eat(tt.bang)) {\n state.tokens[state.tokens.length - 1].type = tt.nonNullAssertion;\n return;\n }\n\n if (match(tt.lessThan) || match(tt.bitShiftL)) {\n // There are number of things we are going to \"maybe\" parse, like type arguments on\n // tagged template expressions. If any of them fail, walk it back and continue.\n const snapshot = state.snapshot();\n\n if (!noCalls && atPossibleAsync()) {\n // Almost certainly this is a generic async function `async <T>() => ...\n // But it might be a call with a type argument `async<T>();`\n const asyncArrowFn = tsTryParseGenericAsyncArrowFunction();\n if (asyncArrowFn) {\n return;\n }\n }\n tsParseTypeArgumentsWithPossibleBitshift();\n if (!noCalls && eat(tt.parenL)) {\n // With f<T>(), the subscriptStartIndex marker is on the ( token.\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n parseCallExpressionArguments();\n } else if (match(tt.backQuote)) {\n // Tagged template with a type argument.\n parseTemplate();\n } else if (\n // The remaining possible case is an instantiation expression, e.g.\n // Array<number> . Check for a few cases that would disqualify it and\n // cause us to bail out.\n // a<b>>c is not (a<b>)>c, but a<(b>>c)\n state.type === tt.greaterThan ||\n // a<b>c is (a<b)>c\n (state.type !== tt.parenL &&\n Boolean(state.type & TokenType.IS_EXPRESSION_START) &&\n !hasPrecedingLineBreak())\n ) {\n // Bail out. We have something like a<b>c, which is not an expression with\n // type arguments but an (a < b) > c comparison.\n unexpected();\n }\n\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n } else {\n return;\n }\n } else if (!noCalls && match(tt.questionDot) && lookaheadType() === tt.lessThan) {\n // If we see f?.<, then this must be an optional call with a type argument.\n next();\n state.tokens[startTokenIndex].isOptionalChainStart = true;\n // With f?.<T>(), the subscriptStartIndex marker is on the ?. token.\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n\n tsParseTypeArguments();\n expect(tt.parenL);\n parseCallExpressionArguments();\n }\n baseParseSubscript(startTokenIndex, noCalls, stopState);\n}\n\nexport function tsTryParseExport() {\n if (eat(tt._import)) {\n // One of these cases:\n // export import A = B;\n // export import type A = require(\"A\");\n if (isContextual(ContextualKeyword._type) && lookaheadType() !== tt.eq) {\n // Eat a `type` token, unless it's actually an identifier name.\n expectContextual(ContextualKeyword._type);\n }\n tsParseImportEqualsDeclaration();\n return true;\n } else if (eat(tt.eq)) {\n // `export = x;`\n parseExpression();\n semicolon();\n return true;\n } else if (eatContextual(ContextualKeyword._as)) {\n // `export as namespace A;`\n // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n expectContextual(ContextualKeyword._namespace);\n parseIdentifier();\n semicolon();\n return true;\n } else {\n if (isContextual(ContextualKeyword._type)) {\n const nextType = lookaheadType();\n // export type {foo} from 'a';\n // export type * from 'a';'\n // export type * as ns from 'a';'\n if (nextType === tt.braceL || nextType === tt.star) {\n next();\n }\n }\n return false;\n }\n}\n\n/**\n * Parse a TS import specifier, which may be prefixed with \"type\" and may be of\n * the form `foo as bar`.\n *\n * The number of identifier-like tokens we see happens to be enough to uniquely\n * identify the form, so simply count the number of identifiers rather than\n * matching the words `type` or `as`. This is particularly important because\n * `type` and `as` could each actually be plain identifiers rather than\n * keywords.\n */\nexport function tsParseImportSpecifier() {\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // import {foo}\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n return;\n }\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // import {type foo}\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n state.tokens[state.tokens.length - 2].isType = true;\n state.tokens[state.tokens.length - 1].isType = true;\n return;\n }\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // import {foo as bar}\n state.tokens[state.tokens.length - 3].identifierRole = IdentifierRole.ImportAccess;\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n return;\n }\n parseIdentifier();\n // import {type foo as bar}\n state.tokens[state.tokens.length - 3].identifierRole = IdentifierRole.ImportAccess;\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportDeclaration;\n state.tokens[state.tokens.length - 4].isType = true;\n state.tokens[state.tokens.length - 3].isType = true;\n state.tokens[state.tokens.length - 2].isType = true;\n state.tokens[state.tokens.length - 1].isType = true;\n}\n\n/**\n * Just like named import specifiers, export specifiers can have from 1 to 4\n * tokens, inclusive, and the number of tokens determines the role of each token.\n */\nexport function tsParseExportSpecifier() {\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // export {foo}\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ExportAccess;\n return;\n }\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // export {type foo}\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ExportAccess;\n state.tokens[state.tokens.length - 2].isType = true;\n state.tokens[state.tokens.length - 1].isType = true;\n return;\n }\n parseIdentifier();\n if (match(tt.comma) || match(tt.braceR)) {\n // export {foo as bar}\n state.tokens[state.tokens.length - 3].identifierRole = IdentifierRole.ExportAccess;\n return;\n }\n parseIdentifier();\n // export {type foo as bar}\n state.tokens[state.tokens.length - 3].identifierRole = IdentifierRole.ExportAccess;\n state.tokens[state.tokens.length - 4].isType = true;\n state.tokens[state.tokens.length - 3].isType = true;\n state.tokens[state.tokens.length - 2].isType = true;\n state.tokens[state.tokens.length - 1].isType = true;\n}\n\nexport function tsTryParseExportDefaultExpression() {\n if (isContextual(ContextualKeyword._abstract) && lookaheadType() === tt._class) {\n state.type = tt._abstract;\n next(); // Skip \"abstract\"\n parseClass(true, true);\n return true;\n }\n if (isContextual(ContextualKeyword._interface)) {\n // Make sure \"export default\" are considered type tokens so the whole thing is removed.\n const oldIsType = pushTypeContext(2);\n tsParseDeclaration(ContextualKeyword._interface, true);\n popTypeContext(oldIsType);\n return true;\n }\n return false;\n}\n\nexport function tsTryParseStatementContent() {\n if (state.type === tt._const) {\n const ahead = lookaheadTypeAndKeyword();\n if (ahead.type === tt.name && ahead.contextualKeyword === ContextualKeyword._enum) {\n expect(tt._const);\n expectContextual(ContextualKeyword._enum);\n state.tokens[state.tokens.length - 1].type = tt._enum;\n tsParseEnumDeclaration();\n return true;\n }\n }\n return false;\n}\n\nexport function tsTryParseClassMemberWithIsStatic(isStatic) {\n const memberStartIndexAfterStatic = state.tokens.length;\n tsParseModifiers([\n ContextualKeyword._abstract,\n ContextualKeyword._readonly,\n ContextualKeyword._declare,\n ContextualKeyword._static,\n ContextualKeyword._override,\n ]);\n\n const modifiersEndIndex = state.tokens.length;\n const found = tsTryParseIndexSignature();\n if (found) {\n // Index signatures are type declarations, so set the modifier tokens as\n // type tokens. Most tokens could be assumed to be type tokens, but `static`\n // is ambiguous unless we set it explicitly here.\n const memberStartIndex = isStatic\n ? memberStartIndexAfterStatic - 1\n : memberStartIndexAfterStatic;\n for (let i = memberStartIndex; i < modifiersEndIndex; i++) {\n state.tokens[i].isType = true;\n }\n return true;\n }\n return false;\n}\n\n// Note: The reason we do this in `parseIdentifierStatement` and not `parseStatement`\n// is that e.g. `type()` is valid JS, so we must try parsing that first.\n// If it's really a type, we will parse `type` as the statement, and can correct it here\n// by parsing the rest.\nexport function tsParseIdentifierStatement(contextualKeyword) {\n const matched = tsParseExpressionStatement(contextualKeyword);\n if (!matched) {\n semicolon();\n }\n}\n\nexport function tsParseExportDeclaration() {\n // \"export declare\" is equivalent to just \"export\".\n const isDeclare = eatContextual(ContextualKeyword._declare);\n if (isDeclare) {\n state.tokens[state.tokens.length - 1].type = tt._declare;\n }\n\n let matchedDeclaration = false;\n if (match(tt.name)) {\n if (isDeclare) {\n const oldIsType = pushTypeContext(2);\n matchedDeclaration = tsTryParseExportDeclaration();\n popTypeContext(oldIsType);\n } else {\n matchedDeclaration = tsTryParseExportDeclaration();\n }\n }\n if (!matchedDeclaration) {\n if (isDeclare) {\n const oldIsType = pushTypeContext(2);\n parseStatement(true);\n popTypeContext(oldIsType);\n } else {\n parseStatement(true);\n }\n }\n}\n\nexport function tsAfterParseClassSuper(hasSuper) {\n if (hasSuper && (match(tt.lessThan) || match(tt.bitShiftL))) {\n tsParseTypeArgumentsWithPossibleBitshift();\n }\n if (eatContextual(ContextualKeyword._implements)) {\n state.tokens[state.tokens.length - 1].type = tt._implements;\n const oldIsType = pushTypeContext(1);\n tsParseHeritageClause();\n popTypeContext(oldIsType);\n }\n}\n\nexport function tsStartParseObjPropValue() {\n tsTryParseTypeParameters();\n}\n\nexport function tsStartParseFunctionParams() {\n tsTryParseTypeParameters();\n}\n\n// `let x: number;`\nexport function tsAfterParseVarHead() {\n const oldIsType = pushTypeContext(0);\n if (!hasPrecedingLineBreak()) {\n eat(tt.bang);\n }\n tsTryParseTypeAnnotation();\n popTypeContext(oldIsType);\n}\n\n// parse the return type of an async arrow function - let foo = (async (): number => {});\nexport function tsStartParseAsyncArrowFromCallExpression() {\n if (match(tt.colon)) {\n tsParseTypeAnnotation();\n }\n}\n\n// Returns true if the expression was an arrow function.\nexport function tsParseMaybeAssign(noIn, isWithinParens) {\n // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n if (isJSXEnabled) {\n return tsParseMaybeAssignWithJSX(noIn, isWithinParens);\n } else {\n return tsParseMaybeAssignWithoutJSX(noIn, isWithinParens);\n }\n}\n\nexport function tsParseMaybeAssignWithJSX(noIn, isWithinParens) {\n if (!match(tt.lessThan)) {\n return baseParseMaybeAssign(noIn, isWithinParens);\n }\n\n // Prefer to parse JSX if possible. But may be an arrow fn.\n const snapshot = state.snapshot();\n let wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n } else {\n return wasArrow;\n }\n\n // Otherwise, try as type-parameterized arrow function.\n state.type = tt.typeParameterStart;\n // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n tsParseTypeParameters();\n wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (!wasArrow) {\n unexpected();\n }\n\n return wasArrow;\n}\n\nexport function tsParseMaybeAssignWithoutJSX(noIn, isWithinParens) {\n if (!match(tt.lessThan)) {\n return baseParseMaybeAssign(noIn, isWithinParens);\n }\n\n const snapshot = state.snapshot();\n // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n tsParseTypeParameters();\n const wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (!wasArrow) {\n unexpected();\n }\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n } else {\n return wasArrow;\n }\n\n // Try parsing a type cast instead of an arrow function.\n // This will start with a type assertion (via parseMaybeUnary).\n // But don't directly call `tsParseTypeAssertion` because we want to handle any binary after it.\n return baseParseMaybeAssign(noIn, isWithinParens);\n}\n\nexport function tsParseArrow() {\n if (match(tt.colon)) {\n // This is different from how the TS parser does it.\n // TS uses lookahead. Babylon parses it as a parenthesized expression and converts.\n const snapshot = state.snapshot();\n\n tsParseTypeOrTypePredicateAnnotation(tt.colon);\n if (canInsertSemicolon()) unexpected();\n if (!match(tt.arrow)) unexpected();\n\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n }\n }\n return eat(tt.arrow);\n}\n\n// Allow type annotations inside of a parameter list.\nexport function tsParseAssignableListItemTypes() {\n const oldIsType = pushTypeContext(0);\n eat(tt.question);\n tsTryParseTypeAnnotation();\n popTypeContext(oldIsType);\n}\n\nexport function tsParseMaybeDecoratorArguments() {\n if (match(tt.lessThan) || match(tt.bitShiftL)) {\n tsParseTypeArgumentsWithPossibleBitshift();\n }\n baseParseMaybeDecoratorArguments();\n}\n", "import {\n eat,\n finishToken,\n getTokenFromCode,\n IdentifierRole,\n JSXRole,\n match,\n next,\n skipSpace,\n Token,\n} from \"../../tokenizer/index\";\nimport {TokenType as tt} from \"../../tokenizer/types\";\nimport {input, isTypeScriptEnabled, state} from \"../../traverser/base\";\nimport {parseExpression, parseMaybeAssign} from \"../../traverser/expression\";\nimport {expect, unexpected} from \"../../traverser/util\";\nimport {charCodes} from \"../../util/charcodes\";\nimport {IS_IDENTIFIER_CHAR, IS_IDENTIFIER_START} from \"../../util/identifier\";\nimport {tsTryParseJSXTypeArgument} from \"../typescript\";\n\n/**\n * Read token with JSX contents.\n *\n * In addition to detecting jsxTagStart and also regular tokens that might be\n * part of an expression, this code detects the start and end of text ranges\n * within JSX children. In order to properly count the number of children, we\n * distinguish jsxText from jsxEmptyText, which is a text range that simplifies\n * to the empty string after JSX whitespace trimming.\n *\n * It turns out that a JSX text range will simplify to the empty string if and\n * only if both of these conditions hold:\n * - The range consists entirely of whitespace characters (only counting space,\n * tab, \\r, and \\n).\n * - The range has at least one newline.\n * This can be proven by analyzing any implementation of whitespace trimming,\n * e.g. formatJSXTextLiteral in Sucrase or cleanJSXElementLiteralChild in Babel.\n */\nfunction jsxReadToken() {\n let sawNewline = false;\n let sawNonWhitespace = false;\n while (true) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated JSX contents\");\n return;\n }\n\n const ch = input.charCodeAt(state.pos);\n if (ch === charCodes.lessThan || ch === charCodes.leftCurlyBrace) {\n if (state.pos === state.start) {\n if (ch === charCodes.lessThan) {\n state.pos++;\n finishToken(tt.jsxTagStart);\n return;\n }\n getTokenFromCode(ch);\n return;\n }\n if (sawNewline && !sawNonWhitespace) {\n finishToken(tt.jsxEmptyText);\n } else {\n finishToken(tt.jsxText);\n }\n return;\n }\n\n // This is part of JSX text.\n if (ch === charCodes.lineFeed) {\n sawNewline = true;\n } else if (ch !== charCodes.space && ch !== charCodes.carriageReturn && ch !== charCodes.tab) {\n sawNonWhitespace = true;\n }\n state.pos++;\n }\n}\n\nfunction jsxReadString(quote) {\n state.pos++;\n for (;;) {\n if (state.pos >= input.length) {\n unexpected(\"Unterminated string constant\");\n return;\n }\n\n const ch = input.charCodeAt(state.pos);\n if (ch === quote) {\n state.pos++;\n break;\n }\n state.pos++;\n }\n finishToken(tt.string);\n}\n\n// Read a JSX identifier (valid tag or attribute name).\n//\n// Optimized version since JSX identifiers can't contain\n// escape characters and so can be read as single slice.\n// Also assumes that first character was already checked\n// by isIdentifierStart in readToken.\n\nfunction jsxReadWord() {\n let ch;\n do {\n if (state.pos > input.length) {\n unexpected(\"Unexpectedly reached the end of input.\");\n return;\n }\n ch = input.charCodeAt(++state.pos);\n } while (IS_IDENTIFIER_CHAR[ch] || ch === charCodes.dash);\n finishToken(tt.jsxName);\n}\n\n// Parse next token as JSX identifier\nfunction jsxParseIdentifier() {\n nextJSXTagToken();\n}\n\n// Parse namespaced identifier.\nfunction jsxParseNamespacedName(identifierRole) {\n jsxParseIdentifier();\n if (!eat(tt.colon)) {\n // Plain identifier, so this is an access.\n state.tokens[state.tokens.length - 1].identifierRole = identifierRole;\n return;\n }\n // Process the second half of the namespaced name.\n jsxParseIdentifier();\n}\n\n// Parses element name in any form - namespaced, member\n// or single identifier.\nfunction jsxParseElementName() {\n const firstTokenIndex = state.tokens.length;\n jsxParseNamespacedName(IdentifierRole.Access);\n let hadDot = false;\n while (match(tt.dot)) {\n hadDot = true;\n nextJSXTagToken();\n jsxParseIdentifier();\n }\n // For tags like <div> with a lowercase letter and no dots, the name is\n // actually *not* an identifier access, since it's referring to a built-in\n // tag name. Remove the identifier role in this case so that it's not\n // accidentally transformed by the imports transform when preserving JSX.\n if (!hadDot) {\n const firstToken = state.tokens[firstTokenIndex];\n const firstChar = input.charCodeAt(firstToken.start);\n if (firstChar >= charCodes.lowercaseA && firstChar <= charCodes.lowercaseZ) {\n firstToken.identifierRole = null;\n }\n }\n}\n\n// Parses any type of JSX attribute value.\nfunction jsxParseAttributeValue() {\n switch (state.type) {\n case tt.braceL:\n next();\n parseExpression();\n nextJSXTagToken();\n return;\n\n case tt.jsxTagStart:\n jsxParseElement();\n nextJSXTagToken();\n return;\n\n case tt.string:\n nextJSXTagToken();\n return;\n\n default:\n unexpected(\"JSX value should be either an expression or a quoted JSX text\");\n }\n}\n\n// Parse JSX spread child, after already processing the {\n// Does not parse the closing }\nfunction jsxParseSpreadChild() {\n expect(tt.ellipsis);\n parseExpression();\n}\n\n// Parses JSX opening tag starting after \"<\".\n// Returns true if the tag was self-closing.\n// Does not parse the last token.\nfunction jsxParseOpeningElement(initialTokenIndex) {\n if (match(tt.jsxTagEnd)) {\n // This is an open-fragment.\n return false;\n }\n jsxParseElementName();\n if (isTypeScriptEnabled) {\n tsTryParseJSXTypeArgument();\n }\n let hasSeenPropSpread = false;\n while (!match(tt.slash) && !match(tt.jsxTagEnd) && !state.error) {\n if (eat(tt.braceL)) {\n hasSeenPropSpread = true;\n expect(tt.ellipsis);\n parseMaybeAssign();\n // }\n nextJSXTagToken();\n continue;\n }\n if (\n hasSeenPropSpread &&\n state.end - state.start === 3 &&\n input.charCodeAt(state.start) === charCodes.lowercaseK &&\n input.charCodeAt(state.start + 1) === charCodes.lowercaseE &&\n input.charCodeAt(state.start + 2) === charCodes.lowercaseY\n ) {\n state.tokens[initialTokenIndex].jsxRole = JSXRole.KeyAfterPropSpread;\n }\n jsxParseNamespacedName(IdentifierRole.ObjectKey);\n if (match(tt.eq)) {\n nextJSXTagToken();\n jsxParseAttributeValue();\n }\n }\n const isSelfClosing = match(tt.slash);\n if (isSelfClosing) {\n // /\n nextJSXTagToken();\n }\n return isSelfClosing;\n}\n\n// Parses JSX closing tag starting after \"</\".\n// Does not parse the last token.\nfunction jsxParseClosingElement() {\n if (match(tt.jsxTagEnd)) {\n // Fragment syntax, so we immediately have a tag end.\n return;\n }\n jsxParseElementName();\n}\n\n// Parses entire JSX element, including its opening tag\n// (starting after \"<\"), attributes, contents and closing tag.\n// Does not parse the last token.\nfunction jsxParseElementAt() {\n const initialTokenIndex = state.tokens.length - 1;\n state.tokens[initialTokenIndex].jsxRole = JSXRole.NoChildren;\n let numExplicitChildren = 0;\n const isSelfClosing = jsxParseOpeningElement(initialTokenIndex);\n if (!isSelfClosing) {\n nextJSXExprToken();\n while (true) {\n switch (state.type) {\n case tt.jsxTagStart:\n nextJSXTagToken();\n if (match(tt.slash)) {\n nextJSXTagToken();\n jsxParseClosingElement();\n // Key after prop spread takes precedence over number of children,\n // since it means we switch to createElement, which doesn't care\n // about number of children.\n if (state.tokens[initialTokenIndex].jsxRole !== JSXRole.KeyAfterPropSpread) {\n if (numExplicitChildren === 1) {\n state.tokens[initialTokenIndex].jsxRole = JSXRole.OneChild;\n } else if (numExplicitChildren > 1) {\n state.tokens[initialTokenIndex].jsxRole = JSXRole.StaticChildren;\n }\n }\n return;\n }\n numExplicitChildren++;\n jsxParseElementAt();\n nextJSXExprToken();\n break;\n\n case tt.jsxText:\n numExplicitChildren++;\n nextJSXExprToken();\n break;\n\n case tt.jsxEmptyText:\n nextJSXExprToken();\n break;\n\n case tt.braceL:\n next();\n if (match(tt.ellipsis)) {\n jsxParseSpreadChild();\n nextJSXExprToken();\n // Spread children are a mechanism to explicitly mark children as\n // static, so count it as 2 children to satisfy the \"more than one\n // child\" condition.\n numExplicitChildren += 2;\n } else {\n // If we see {}, this is an empty pseudo-expression that doesn't\n // count as a child.\n if (!match(tt.braceR)) {\n numExplicitChildren++;\n parseExpression();\n }\n nextJSXExprToken();\n }\n\n break;\n\n // istanbul ignore next - should never happen\n default:\n unexpected();\n return;\n }\n }\n }\n}\n\n// Parses entire JSX element from current position.\n// Does not parse the last token.\nexport function jsxParseElement() {\n nextJSXTagToken();\n jsxParseElementAt();\n}\n\n// ==================================\n// Overrides\n// ==================================\n\nexport function nextJSXTagToken() {\n state.tokens.push(new Token());\n skipSpace();\n state.start = state.pos;\n const code = input.charCodeAt(state.pos);\n\n if (IS_IDENTIFIER_START[code]) {\n jsxReadWord();\n } else if (code === charCodes.quotationMark || code === charCodes.apostrophe) {\n jsxReadString(code);\n } else {\n // The following tokens are just one character each.\n ++state.pos;\n switch (code) {\n case charCodes.greaterThan:\n finishToken(tt.jsxTagEnd);\n break;\n case charCodes.lessThan:\n finishToken(tt.jsxTagStart);\n break;\n case charCodes.slash:\n finishToken(tt.slash);\n break;\n case charCodes.equalsTo:\n finishToken(tt.eq);\n break;\n case charCodes.leftCurlyBrace:\n finishToken(tt.braceL);\n break;\n case charCodes.dot:\n finishToken(tt.dot);\n break;\n case charCodes.colon:\n finishToken(tt.colon);\n break;\n default:\n unexpected();\n }\n }\n}\n\nfunction nextJSXExprToken() {\n state.tokens.push(new Token());\n state.start = state.pos;\n jsxReadToken();\n}\n", "import {eatTypeToken, lookaheadType, match} from \"../tokenizer/index\";\nimport {TokenType as tt} from \"../tokenizer/types\";\nimport {isFlowEnabled, isTypeScriptEnabled} from \"../traverser/base\";\nimport {baseParseConditional} from \"../traverser/expression\";\nimport {flowParseTypeAnnotation} from \"./flow\";\nimport {tsParseTypeAnnotation} from \"./typescript\";\n\n/**\n * Common parser code for TypeScript and Flow.\n */\n\n// An apparent conditional expression could actually be an optional parameter in an arrow function.\nexport function typedParseConditional(noIn) {\n // If we see ?:, this can't possibly be a valid conditional. typedParseParenItem will be called\n // later to finish off the arrow parameter. We also need to handle bare ? tokens for optional\n // parameters without type annotations, i.e. ?, and ?) .\n if (match(tt.question)) {\n const nextType = lookaheadType();\n if (nextType === tt.colon || nextType === tt.comma || nextType === tt.parenR) {\n return;\n }\n }\n baseParseConditional(noIn);\n}\n\n// Note: These \"type casts\" are *not* valid TS expressions.\n// But we parse them here and change them when completing the arrow function.\nexport function typedParseParenItem() {\n eatTypeToken(tt.question);\n if (match(tt.colon)) {\n if (isTypeScriptEnabled) {\n tsParseTypeAnnotation();\n } else if (isFlowEnabled) {\n flowParseTypeAnnotation();\n }\n }\n}\n", "/* eslint max-len: 0 */\n\n// A recursive descent parser operates by defining functions for all\n// syntactic elements, and recursively calling those, each function\n// advancing the input stream and returning an AST node. Precedence\n// of constructs (for example, the fact that `!x[1]` means `!(x[1])`\n// instead of `(!x)[1]` is handled by the fact that the parser\n// function that parses unary prefix operators is called first, and\n// in turn calls the function that parses `[]` subscripts \u2014 that\n// way, it'll receive the node for `x[1]` already parsed, and wraps\n// *that* in the unary operator node.\n//\n// Acorn uses an [operator precedence parser][opp] to handle binary\n// operator precedence, because it is much more compact than using\n// the technique outlined above, which uses different, nesting\n// functions to specify precedence, for all of the ten binary\n// precedence levels that JavaScript defines.\n//\n// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser\n\nimport {\n flowParseArrow,\n flowParseFunctionBodyAndFinish,\n flowParseMaybeAssign,\n flowParseSubscript,\n flowParseSubscripts,\n flowParseVariance,\n flowStartParseAsyncArrowFromCallExpression,\n flowStartParseNewArguments,\n flowStartParseObjPropValue,\n} from \"../plugins/flow\";\nimport {jsxParseElement} from \"../plugins/jsx/index\";\nimport {typedParseConditional, typedParseParenItem} from \"../plugins/types\";\nimport {\n tsParseArrow,\n tsParseFunctionBodyAndFinish,\n tsParseMaybeAssign,\n tsParseSubscript,\n tsParseType,\n tsParseTypeAssertion,\n tsStartParseAsyncArrowFromCallExpression,\n tsStartParseObjPropValue,\n} from \"../plugins/typescript\";\nimport {\n eat,\n IdentifierRole,\n lookaheadCharCode,\n lookaheadType,\n match,\n next,\n nextTemplateToken,\n popTypeContext,\n pushTypeContext,\n rescan_gt,\n retokenizeSlashAsRegex,\n} from \"../tokenizer/index\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {Scope} from \"../tokenizer/state\";\nimport {TokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {charCodes} from \"../util/charcodes\";\nimport {IS_IDENTIFIER_START} from \"../util/identifier\";\nimport {getNextContextId, isFlowEnabled, isJSXEnabled, isTypeScriptEnabled, state} from \"./base\";\nimport {\n markPriorBindingIdentifier,\n parseBindingIdentifier,\n parseMaybeDefault,\n parseRest,\n parseSpread,\n} from \"./lval\";\nimport {\n parseBlock,\n parseBlockBody,\n parseClass,\n parseDecorators,\n parseFunction,\n parseFunctionParams,\n} from \"./statement\";\nimport {\n canInsertSemicolon,\n eatContextual,\n expect,\n expectContextual,\n hasFollowingLineBreak,\n hasPrecedingLineBreak,\n isContextual,\n unexpected,\n} from \"./util\";\n\nexport class StopState {\n \n constructor(stop) {\n this.stop = stop;\n }\n}\n\n// ### Expression parsing\n\n// These nest, from the most general expression type at the top to\n// 'atomic', nondivisible expression types at the bottom. Most of\n// the functions will simply let the function (s) below them parse,\n// and, *if* the syntactic construct they handle is present, wrap\n// the AST node that the inner parser gave them in another node.\nexport function parseExpression(noIn = false) {\n parseMaybeAssign(noIn);\n if (match(tt.comma)) {\n while (eat(tt.comma)) {\n parseMaybeAssign(noIn);\n }\n }\n}\n\n/**\n * noIn is used when parsing a for loop so that we don't interpret a following \"in\" as the binary\n * operatior.\n * isWithinParens is used to indicate that we're parsing something that might be a comma expression\n * or might be an arrow function or might be a Flow type assertion (which requires explicit parens).\n * In these cases, we should allow : and ?: after the initial \"left\" part.\n */\nexport function parseMaybeAssign(noIn = false, isWithinParens = false) {\n if (isTypeScriptEnabled) {\n return tsParseMaybeAssign(noIn, isWithinParens);\n } else if (isFlowEnabled) {\n return flowParseMaybeAssign(noIn, isWithinParens);\n } else {\n return baseParseMaybeAssign(noIn, isWithinParens);\n }\n}\n\n// Parse an assignment expression. This includes applications of\n// operators like `+=`.\n// Returns true if the expression was an arrow function.\nexport function baseParseMaybeAssign(noIn, isWithinParens) {\n if (match(tt._yield)) {\n parseYield();\n return false;\n }\n\n if (match(tt.parenL) || match(tt.name) || match(tt._yield)) {\n state.potentialArrowAt = state.start;\n }\n\n const wasArrow = parseMaybeConditional(noIn);\n if (isWithinParens) {\n parseParenItem();\n }\n if (state.type & TokenType.IS_ASSIGN) {\n next();\n parseMaybeAssign(noIn);\n return false;\n }\n return wasArrow;\n}\n\n// Parse a ternary conditional (`?:`) operator.\n// Returns true if the expression was an arrow function.\nfunction parseMaybeConditional(noIn) {\n const wasArrow = parseExprOps(noIn);\n if (wasArrow) {\n return true;\n }\n parseConditional(noIn);\n return false;\n}\n\nfunction parseConditional(noIn) {\n if (isTypeScriptEnabled || isFlowEnabled) {\n typedParseConditional(noIn);\n } else {\n baseParseConditional(noIn);\n }\n}\n\nexport function baseParseConditional(noIn) {\n if (eat(tt.question)) {\n parseMaybeAssign();\n expect(tt.colon);\n parseMaybeAssign(noIn);\n }\n}\n\n// Start the precedence parser.\n// Returns true if this was an arrow function\nfunction parseExprOps(noIn) {\n const startTokenIndex = state.tokens.length;\n const wasArrow = parseMaybeUnary();\n if (wasArrow) {\n return true;\n }\n parseExprOp(startTokenIndex, -1, noIn);\n return false;\n}\n\n// Parse binary operators with the operator precedence parsing\n// algorithm. `left` is the left-hand side of the operator.\n// `minPrec` provides context that allows the function to stop and\n// defer further parser to one of its callers when it encounters an\n// operator that has a lower precedence than the set it is parsing.\nfunction parseExprOp(startTokenIndex, minPrec, noIn) {\n if (\n isTypeScriptEnabled &&\n (tt._in & TokenType.PRECEDENCE_MASK) > minPrec &&\n !hasPrecedingLineBreak() &&\n (eatContextual(ContextualKeyword._as) || eatContextual(ContextualKeyword._satisfies))\n ) {\n const oldIsType = pushTypeContext(1);\n tsParseType();\n popTypeContext(oldIsType);\n rescan_gt();\n parseExprOp(startTokenIndex, minPrec, noIn);\n return;\n }\n\n const prec = state.type & TokenType.PRECEDENCE_MASK;\n if (prec > 0 && (!noIn || !match(tt._in))) {\n if (prec > minPrec) {\n const op = state.type;\n next();\n if (op === tt.nullishCoalescing) {\n state.tokens[state.tokens.length - 1].nullishStartIndex = startTokenIndex;\n }\n\n const rhsStartTokenIndex = state.tokens.length;\n parseMaybeUnary();\n // Extend the right operand of this operator if possible.\n parseExprOp(rhsStartTokenIndex, op & TokenType.IS_RIGHT_ASSOCIATIVE ? prec - 1 : prec, noIn);\n if (op === tt.nullishCoalescing) {\n state.tokens[startTokenIndex].numNullishCoalesceStarts++;\n state.tokens[state.tokens.length - 1].numNullishCoalesceEnds++;\n }\n // Continue with any future operator holding this expression as the left operand.\n parseExprOp(startTokenIndex, minPrec, noIn);\n }\n }\n}\n\n// Parse unary operators, both prefix and postfix.\n// Returns true if this was an arrow function.\nexport function parseMaybeUnary() {\n if (isTypeScriptEnabled && !isJSXEnabled && eat(tt.lessThan)) {\n tsParseTypeAssertion();\n return false;\n }\n if (\n isContextual(ContextualKeyword._module) &&\n lookaheadCharCode() === charCodes.leftCurlyBrace &&\n !hasFollowingLineBreak()\n ) {\n parseModuleExpression();\n return false;\n }\n if (state.type & TokenType.IS_PREFIX) {\n next();\n parseMaybeUnary();\n return false;\n }\n\n const wasArrow = parseExprSubscripts();\n if (wasArrow) {\n return true;\n }\n while (state.type & TokenType.IS_POSTFIX && !canInsertSemicolon()) {\n // The tokenizer calls everything a preincrement, so make it a postincrement when\n // we see it in that context.\n if (state.type === tt.preIncDec) {\n state.type = tt.postIncDec;\n }\n next();\n }\n return false;\n}\n\n// Parse call, dot, and `[]`-subscript expressions.\n// Returns true if this was an arrow function.\nexport function parseExprSubscripts() {\n const startTokenIndex = state.tokens.length;\n const wasArrow = parseExprAtom();\n if (wasArrow) {\n return true;\n }\n parseSubscripts(startTokenIndex);\n // If there was any optional chain operation, the start token would be marked\n // as such, so also mark the end now.\n if (state.tokens.length > startTokenIndex && state.tokens[startTokenIndex].isOptionalChainStart) {\n state.tokens[state.tokens.length - 1].isOptionalChainEnd = true;\n }\n return false;\n}\n\nfunction parseSubscripts(startTokenIndex, noCalls = false) {\n if (isFlowEnabled) {\n flowParseSubscripts(startTokenIndex, noCalls);\n } else {\n baseParseSubscripts(startTokenIndex, noCalls);\n }\n}\n\nexport function baseParseSubscripts(startTokenIndex, noCalls = false) {\n const stopState = new StopState(false);\n do {\n parseSubscript(startTokenIndex, noCalls, stopState);\n } while (!stopState.stop && !state.error);\n}\n\nfunction parseSubscript(startTokenIndex, noCalls, stopState) {\n if (isTypeScriptEnabled) {\n tsParseSubscript(startTokenIndex, noCalls, stopState);\n } else if (isFlowEnabled) {\n flowParseSubscript(startTokenIndex, noCalls, stopState);\n } else {\n baseParseSubscript(startTokenIndex, noCalls, stopState);\n }\n}\n\n/** Set 'state.stop = true' to indicate that we should stop parsing subscripts. */\nexport function baseParseSubscript(\n startTokenIndex,\n noCalls,\n stopState,\n) {\n if (!noCalls && eat(tt.doubleColon)) {\n parseNoCallExpr();\n stopState.stop = true;\n // Propagate startTokenIndex so that `a::b?.()` will keep `a` as the first token. We may want\n // to revisit this in the future when fully supporting bind syntax.\n parseSubscripts(startTokenIndex, noCalls);\n } else if (match(tt.questionDot)) {\n state.tokens[startTokenIndex].isOptionalChainStart = true;\n if (noCalls && lookaheadType() === tt.parenL) {\n stopState.stop = true;\n return;\n }\n next();\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n\n if (eat(tt.bracketL)) {\n parseExpression();\n expect(tt.bracketR);\n } else if (eat(tt.parenL)) {\n parseCallExpressionArguments();\n } else {\n parseMaybePrivateName();\n }\n } else if (eat(tt.dot)) {\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n parseMaybePrivateName();\n } else if (eat(tt.bracketL)) {\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n parseExpression();\n expect(tt.bracketR);\n } else if (!noCalls && match(tt.parenL)) {\n if (atPossibleAsync()) {\n // We see \"async\", but it's possible it's a usage of the name \"async\". Parse as if it's a\n // function call, and if we see an arrow later, backtrack and re-parse as a parameter list.\n const snapshot = state.snapshot();\n const asyncStartTokenIndex = state.tokens.length;\n next();\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n\n const callContextId = getNextContextId();\n\n state.tokens[state.tokens.length - 1].contextId = callContextId;\n parseCallExpressionArguments();\n state.tokens[state.tokens.length - 1].contextId = callContextId;\n\n if (shouldParseAsyncArrow()) {\n // We hit an arrow, so backtrack and start again parsing function parameters.\n state.restoreFromSnapshot(snapshot);\n stopState.stop = true;\n state.scopeDepth++;\n\n parseFunctionParams();\n parseAsyncArrowFromCallExpression(asyncStartTokenIndex);\n }\n } else {\n next();\n state.tokens[state.tokens.length - 1].subscriptStartIndex = startTokenIndex;\n const callContextId = getNextContextId();\n state.tokens[state.tokens.length - 1].contextId = callContextId;\n parseCallExpressionArguments();\n state.tokens[state.tokens.length - 1].contextId = callContextId;\n }\n } else if (match(tt.backQuote)) {\n // Tagged template expression.\n parseTemplate();\n } else {\n stopState.stop = true;\n }\n}\n\nexport function atPossibleAsync() {\n // This was made less strict than the original version to avoid passing around nodes, but it\n // should be safe to have rare false positives here.\n return (\n state.tokens[state.tokens.length - 1].contextualKeyword === ContextualKeyword._async &&\n !canInsertSemicolon()\n );\n}\n\nexport function parseCallExpressionArguments() {\n let first = true;\n while (!eat(tt.parenR) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (eat(tt.parenR)) {\n break;\n }\n }\n\n parseExprListItem(false);\n }\n}\n\nfunction shouldParseAsyncArrow() {\n return match(tt.colon) || match(tt.arrow);\n}\n\nfunction parseAsyncArrowFromCallExpression(startTokenIndex) {\n if (isTypeScriptEnabled) {\n tsStartParseAsyncArrowFromCallExpression();\n } else if (isFlowEnabled) {\n flowStartParseAsyncArrowFromCallExpression();\n }\n expect(tt.arrow);\n parseArrowExpression(startTokenIndex);\n}\n\n// Parse a no-call expression (like argument of `new` or `::` operators).\n\nfunction parseNoCallExpr() {\n const startTokenIndex = state.tokens.length;\n parseExprAtom();\n parseSubscripts(startTokenIndex, true);\n}\n\n// Parse an atomic expression \u2014 either a single token that is an\n// expression, an expression started by a keyword like `function` or\n// `new`, or an expression wrapped in punctuation like `()`, `[]`,\n// or `{}`.\n// Returns true if the parsed expression was an arrow function.\nexport function parseExprAtom() {\n if (eat(tt.modulo)) {\n // V8 intrinsic expression. Just parse the identifier, and the function invocation is parsed\n // naturally.\n parseIdentifier();\n return false;\n }\n\n if (match(tt.jsxText) || match(tt.jsxEmptyText)) {\n parseLiteral();\n return false;\n } else if (match(tt.lessThan) && isJSXEnabled) {\n state.type = tt.jsxTagStart;\n jsxParseElement();\n next();\n return false;\n }\n\n const canBeArrow = state.potentialArrowAt === state.start;\n switch (state.type) {\n case tt.slash:\n case tt.assign:\n retokenizeSlashAsRegex();\n // Fall through.\n\n case tt._super:\n case tt._this:\n case tt.regexp:\n case tt.num:\n case tt.bigint:\n case tt.decimal:\n case tt.string:\n case tt._null:\n case tt._true:\n case tt._false:\n next();\n return false;\n\n case tt._import:\n next();\n if (match(tt.dot)) {\n // import.meta\n state.tokens[state.tokens.length - 1].type = tt.name;\n next();\n parseIdentifier();\n }\n return false;\n\n case tt.name: {\n const startTokenIndex = state.tokens.length;\n const functionStart = state.start;\n const contextualKeyword = state.contextualKeyword;\n parseIdentifier();\n if (contextualKeyword === ContextualKeyword._await) {\n parseAwait();\n return false;\n } else if (\n contextualKeyword === ContextualKeyword._async &&\n match(tt._function) &&\n !canInsertSemicolon()\n ) {\n next();\n parseFunction(functionStart, false);\n return false;\n } else if (\n canBeArrow &&\n contextualKeyword === ContextualKeyword._async &&\n !canInsertSemicolon() &&\n match(tt.name)\n ) {\n state.scopeDepth++;\n parseBindingIdentifier(false);\n expect(tt.arrow);\n // let foo = async bar => {};\n parseArrowExpression(startTokenIndex);\n return true;\n } else if (match(tt._do) && !canInsertSemicolon()) {\n next();\n parseBlock();\n return false;\n }\n\n if (canBeArrow && !canInsertSemicolon() && match(tt.arrow)) {\n state.scopeDepth++;\n markPriorBindingIdentifier(false);\n expect(tt.arrow);\n parseArrowExpression(startTokenIndex);\n return true;\n }\n\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.Access;\n return false;\n }\n\n case tt._do: {\n next();\n parseBlock();\n return false;\n }\n\n case tt.parenL: {\n const wasArrow = parseParenAndDistinguishExpression(canBeArrow);\n return wasArrow;\n }\n\n case tt.bracketL:\n next();\n parseExprList(tt.bracketR, true);\n return false;\n\n case tt.braceL:\n parseObj(false, false);\n return false;\n\n case tt._function:\n parseFunctionExpression();\n return false;\n\n case tt.at:\n parseDecorators();\n // Fall through.\n\n case tt._class:\n parseClass(false);\n return false;\n\n case tt._new:\n parseNew();\n return false;\n\n case tt.backQuote:\n parseTemplate();\n return false;\n\n case tt.doubleColon: {\n next();\n parseNoCallExpr();\n return false;\n }\n\n case tt.hash: {\n const code = lookaheadCharCode();\n if (IS_IDENTIFIER_START[code] || code === charCodes.backslash) {\n parseMaybePrivateName();\n } else {\n next();\n }\n // Smart pipeline topic reference.\n return false;\n }\n\n default:\n unexpected();\n return false;\n }\n}\n\nfunction parseMaybePrivateName() {\n eat(tt.hash);\n parseIdentifier();\n}\n\nfunction parseFunctionExpression() {\n const functionStart = state.start;\n parseIdentifier();\n if (eat(tt.dot)) {\n // function.sent\n parseIdentifier();\n }\n parseFunction(functionStart, false);\n}\n\nexport function parseLiteral() {\n next();\n}\n\nexport function parseParenExpression() {\n expect(tt.parenL);\n parseExpression();\n expect(tt.parenR);\n}\n\n// Returns true if this was an arrow expression.\nfunction parseParenAndDistinguishExpression(canBeArrow) {\n // Assume this is a normal parenthesized expression, but if we see an arrow, we'll bail and\n // start over as a parameter list.\n const snapshot = state.snapshot();\n\n const startTokenIndex = state.tokens.length;\n expect(tt.parenL);\n\n let first = true;\n\n while (!match(tt.parenR) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (match(tt.parenR)) {\n break;\n }\n }\n\n if (match(tt.ellipsis)) {\n parseRest(false /* isBlockScope */);\n parseParenItem();\n break;\n } else {\n parseMaybeAssign(false, true);\n }\n }\n\n expect(tt.parenR);\n\n if (canBeArrow && shouldParseArrow()) {\n const wasArrow = parseArrow();\n if (wasArrow) {\n // It was an arrow function this whole time, so start over and parse it as params so that we\n // get proper token annotations.\n state.restoreFromSnapshot(snapshot);\n state.scopeDepth++;\n // Don't specify a context ID because arrow functions don't need a context ID.\n parseFunctionParams();\n parseArrow();\n parseArrowExpression(startTokenIndex);\n if (state.error) {\n // Nevermind! This must have been something that looks very much like an\n // arrow function but where its \"parameter list\" isn't actually a valid\n // parameter list. Force non-arrow parsing.\n // See https://github.com/alangpierce/sucrase/issues/666 for an example.\n state.restoreFromSnapshot(snapshot);\n parseParenAndDistinguishExpression(false);\n return false;\n }\n return true;\n }\n }\n\n return false;\n}\n\nfunction shouldParseArrow() {\n return match(tt.colon) || !canInsertSemicolon();\n}\n\n// Returns whether there was an arrow token.\nexport function parseArrow() {\n if (isTypeScriptEnabled) {\n return tsParseArrow();\n } else if (isFlowEnabled) {\n return flowParseArrow();\n } else {\n return eat(tt.arrow);\n }\n}\n\nfunction parseParenItem() {\n if (isTypeScriptEnabled || isFlowEnabled) {\n typedParseParenItem();\n }\n}\n\n// New's precedence is slightly tricky. It must allow its argument to\n// be a `[]` or dot subscript expression, but not a call \u2014 at least,\n// not without wrapping it in parentheses. Thus, it uses the noCalls\n// argument to parseSubscripts to prevent it from consuming the\n// argument list.\nfunction parseNew() {\n expect(tt._new);\n if (eat(tt.dot)) {\n // new.target\n parseIdentifier();\n return;\n }\n parseNewCallee();\n if (isFlowEnabled) {\n flowStartParseNewArguments();\n }\n if (eat(tt.parenL)) {\n parseExprList(tt.parenR);\n }\n}\n\nfunction parseNewCallee() {\n parseNoCallExpr();\n eat(tt.questionDot);\n}\n\nexport function parseTemplate() {\n // Finish `, read quasi\n nextTemplateToken();\n // Finish quasi, read ${\n nextTemplateToken();\n while (!match(tt.backQuote) && !state.error) {\n expect(tt.dollarBraceL);\n parseExpression();\n // Finish }, read quasi\n nextTemplateToken();\n // Finish quasi, read either ${ or `\n nextTemplateToken();\n }\n next();\n}\n\n// Parse an object literal or binding pattern.\nexport function parseObj(isPattern, isBlockScope) {\n // Attach a context ID to the object open and close brace and each object key.\n const contextId = getNextContextId();\n let first = true;\n\n next();\n state.tokens[state.tokens.length - 1].contextId = contextId;\n\n while (!eat(tt.braceR) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (eat(tt.braceR)) {\n break;\n }\n }\n\n let isGenerator = false;\n if (match(tt.ellipsis)) {\n const previousIndex = state.tokens.length;\n parseSpread();\n if (isPattern) {\n // Mark role when the only thing being spread over is an identifier.\n if (state.tokens.length === previousIndex + 2) {\n markPriorBindingIdentifier(isBlockScope);\n }\n if (eat(tt.braceR)) {\n break;\n }\n }\n continue;\n }\n\n if (!isPattern) {\n isGenerator = eat(tt.star);\n }\n\n if (!isPattern && isContextual(ContextualKeyword._async)) {\n if (isGenerator) unexpected();\n\n parseIdentifier();\n if (\n match(tt.colon) ||\n match(tt.parenL) ||\n match(tt.braceR) ||\n match(tt.eq) ||\n match(tt.comma)\n ) {\n // This is a key called \"async\" rather than an async function.\n } else {\n if (match(tt.star)) {\n next();\n isGenerator = true;\n }\n parsePropertyName(contextId);\n }\n } else {\n parsePropertyName(contextId);\n }\n\n parseObjPropValue(isPattern, isBlockScope, contextId);\n }\n\n state.tokens[state.tokens.length - 1].contextId = contextId;\n}\n\nfunction isGetterOrSetterMethod(isPattern) {\n // We go off of the next and don't bother checking if the node key is actually \"get\" or \"set\".\n // This lets us avoid generating a node, and should only make the validation worse.\n return (\n !isPattern &&\n (match(tt.string) || // get \"string\"() {}\n match(tt.num) || // get 1() {}\n match(tt.bracketL) || // get [\"string\"]() {}\n match(tt.name) || // get foo() {}\n !!(state.type & TokenType.IS_KEYWORD)) // get debugger() {}\n );\n}\n\n// Returns true if this was a method.\nfunction parseObjectMethod(isPattern, objectContextId) {\n // We don't need to worry about modifiers because object methods can't have optional bodies, so\n // the start will never be used.\n const functionStart = state.start;\n if (match(tt.parenL)) {\n if (isPattern) unexpected();\n parseMethod(functionStart, /* isConstructor */ false);\n return true;\n }\n\n if (isGetterOrSetterMethod(isPattern)) {\n parsePropertyName(objectContextId);\n parseMethod(functionStart, /* isConstructor */ false);\n return true;\n }\n return false;\n}\n\nfunction parseObjectProperty(isPattern, isBlockScope) {\n if (eat(tt.colon)) {\n if (isPattern) {\n parseMaybeDefault(isBlockScope);\n } else {\n parseMaybeAssign(false);\n }\n return;\n }\n\n // Since there's no colon, we assume this is an object shorthand.\n\n // If we're in a destructuring, we've now discovered that the key was actually an assignee, so\n // we need to tag it as a declaration with the appropriate scope. Otherwise, we might need to\n // transform it on access, so mark it as a normal object shorthand.\n let identifierRole;\n if (isPattern) {\n if (state.scopeDepth === 0) {\n identifierRole = IdentifierRole.ObjectShorthandTopLevelDeclaration;\n } else if (isBlockScope) {\n identifierRole = IdentifierRole.ObjectShorthandBlockScopedDeclaration;\n } else {\n identifierRole = IdentifierRole.ObjectShorthandFunctionScopedDeclaration;\n }\n } else {\n identifierRole = IdentifierRole.ObjectShorthand;\n }\n state.tokens[state.tokens.length - 1].identifierRole = identifierRole;\n\n // Regardless of whether we know this to be a pattern or if we're in an ambiguous context, allow\n // parsing as if there's a default value.\n parseMaybeDefault(isBlockScope, true);\n}\n\nfunction parseObjPropValue(\n isPattern,\n isBlockScope,\n objectContextId,\n) {\n if (isTypeScriptEnabled) {\n tsStartParseObjPropValue();\n } else if (isFlowEnabled) {\n flowStartParseObjPropValue();\n }\n const wasMethod = parseObjectMethod(isPattern, objectContextId);\n if (!wasMethod) {\n parseObjectProperty(isPattern, isBlockScope);\n }\n}\n\nexport function parsePropertyName(objectContextId) {\n if (isFlowEnabled) {\n flowParseVariance();\n }\n if (eat(tt.bracketL)) {\n state.tokens[state.tokens.length - 1].contextId = objectContextId;\n parseMaybeAssign();\n expect(tt.bracketR);\n state.tokens[state.tokens.length - 1].contextId = objectContextId;\n } else {\n if (match(tt.num) || match(tt.string) || match(tt.bigint) || match(tt.decimal)) {\n parseExprAtom();\n } else {\n parseMaybePrivateName();\n }\n\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ObjectKey;\n state.tokens[state.tokens.length - 1].contextId = objectContextId;\n }\n}\n\n// Parse object or class method.\nexport function parseMethod(functionStart, isConstructor) {\n const funcContextId = getNextContextId();\n\n state.scopeDepth++;\n const startTokenIndex = state.tokens.length;\n const allowModifiers = isConstructor; // For TypeScript parameter properties\n parseFunctionParams(allowModifiers, funcContextId);\n parseFunctionBodyAndFinish(functionStart, funcContextId);\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, true));\n state.scopeDepth--;\n}\n\n// Parse arrow function expression.\n// If the parameters are provided, they will be converted to an\n// assignable list.\nexport function parseArrowExpression(startTokenIndex) {\n parseFunctionBody(true);\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, true));\n state.scopeDepth--;\n}\n\nexport function parseFunctionBodyAndFinish(functionStart, funcContextId = 0) {\n if (isTypeScriptEnabled) {\n tsParseFunctionBodyAndFinish(functionStart, funcContextId);\n } else if (isFlowEnabled) {\n flowParseFunctionBodyAndFinish(funcContextId);\n } else {\n parseFunctionBody(false, funcContextId);\n }\n}\n\nexport function parseFunctionBody(allowExpression, funcContextId = 0) {\n const isExpression = allowExpression && !match(tt.braceL);\n\n if (isExpression) {\n parseMaybeAssign();\n } else {\n parseBlock(true /* isFunctionScope */, funcContextId);\n }\n}\n\n// Parses a comma-separated list of expressions, and returns them as\n// an array. `close` is the token type that ends the list, and\n// `allowEmpty` can be turned on to allow subsequent commas with\n// nothing in between them to be parsed as `null` (which is needed\n// for array literals).\n\nfunction parseExprList(close, allowEmpty = false) {\n let first = true;\n while (!eat(close) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (eat(close)) break;\n }\n parseExprListItem(allowEmpty);\n }\n}\n\nfunction parseExprListItem(allowEmpty) {\n if (allowEmpty && match(tt.comma)) {\n // Empty item; nothing more to parse for this item.\n } else if (match(tt.ellipsis)) {\n parseSpread();\n parseParenItem();\n } else if (match(tt.question)) {\n // Partial function application proposal.\n next();\n } else {\n parseMaybeAssign(false, true);\n }\n}\n\n// Parse the next token as an identifier.\nexport function parseIdentifier() {\n next();\n state.tokens[state.tokens.length - 1].type = tt.name;\n}\n\n// Parses await expression inside async function.\nfunction parseAwait() {\n parseMaybeUnary();\n}\n\n// Parses yield expression inside generator.\nfunction parseYield() {\n next();\n if (!match(tt.semi) && !canInsertSemicolon()) {\n eat(tt.star);\n parseMaybeAssign();\n }\n}\n\n// https://github.com/tc39/proposal-js-module-blocks\nfunction parseModuleExpression() {\n expectContextual(ContextualKeyword._module);\n expect(tt.braceL);\n // For now, just call parseBlockBody to parse the block. In the future when we\n // implement full support, we'll want to emit scopes and possibly other\n // information.\n parseBlockBody(tt.braceR);\n}\n", "/* eslint max-len: 0 */\n\nimport {\n eat,\n lookaheadType,\n lookaheadTypeAndKeyword,\n match,\n next,\n popTypeContext,\n pushTypeContext,\n\n} from \"../tokenizer/index\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {TokenType, TokenType as tt} from \"../tokenizer/types\";\nimport {input, state} from \"../traverser/base\";\nimport {\n baseParseMaybeAssign,\n baseParseSubscript,\n baseParseSubscripts,\n parseArrow,\n parseArrowExpression,\n parseCallExpressionArguments,\n parseExprAtom,\n parseExpression,\n parseFunctionBody,\n parseIdentifier,\n parseLiteral,\n\n} from \"../traverser/expression\";\nimport {\n baseParseExportStar,\n parseExport,\n parseExportFrom,\n parseExportSpecifiers,\n parseFunctionParams,\n parseImport,\n parseStatement,\n} from \"../traverser/statement\";\nimport {\n canInsertSemicolon,\n eatContextual,\n expect,\n expectContextual,\n isContextual,\n isLookaheadContextual,\n semicolon,\n unexpected,\n} from \"../traverser/util\";\n\nfunction isMaybeDefaultImport(lookahead) {\n return (\n (lookahead.type === tt.name || !!(lookahead.type & TokenType.IS_KEYWORD)) &&\n lookahead.contextualKeyword !== ContextualKeyword._from\n );\n}\n\nfunction flowParseTypeInitialiser(tok) {\n const oldIsType = pushTypeContext(0);\n expect(tok || tt.colon);\n flowParseType();\n popTypeContext(oldIsType);\n}\n\nfunction flowParsePredicate() {\n expect(tt.modulo);\n expectContextual(ContextualKeyword._checks);\n if (eat(tt.parenL)) {\n parseExpression();\n expect(tt.parenR);\n }\n}\n\nfunction flowParseTypeAndPredicateInitialiser() {\n const oldIsType = pushTypeContext(0);\n expect(tt.colon);\n if (match(tt.modulo)) {\n flowParsePredicate();\n } else {\n flowParseType();\n if (match(tt.modulo)) {\n flowParsePredicate();\n }\n }\n popTypeContext(oldIsType);\n}\n\nfunction flowParseDeclareClass() {\n next();\n flowParseInterfaceish(/* isClass */ true);\n}\n\nfunction flowParseDeclareFunction() {\n next();\n parseIdentifier();\n\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n expect(tt.parenL);\n flowParseFunctionTypeParams();\n expect(tt.parenR);\n\n flowParseTypeAndPredicateInitialiser();\n\n semicolon();\n}\n\nfunction flowParseDeclare() {\n if (match(tt._class)) {\n flowParseDeclareClass();\n } else if (match(tt._function)) {\n flowParseDeclareFunction();\n } else if (match(tt._var)) {\n flowParseDeclareVariable();\n } else if (eatContextual(ContextualKeyword._module)) {\n if (eat(tt.dot)) {\n flowParseDeclareModuleExports();\n } else {\n flowParseDeclareModule();\n }\n } else if (isContextual(ContextualKeyword._type)) {\n flowParseDeclareTypeAlias();\n } else if (isContextual(ContextualKeyword._opaque)) {\n flowParseDeclareOpaqueType();\n } else if (isContextual(ContextualKeyword._interface)) {\n flowParseDeclareInterface();\n } else if (match(tt._export)) {\n flowParseDeclareExportDeclaration();\n } else {\n unexpected();\n }\n}\n\nfunction flowParseDeclareVariable() {\n next();\n flowParseTypeAnnotatableIdentifier();\n semicolon();\n}\n\nfunction flowParseDeclareModule() {\n if (match(tt.string)) {\n parseExprAtom();\n } else {\n parseIdentifier();\n }\n\n expect(tt.braceL);\n while (!match(tt.braceR) && !state.error) {\n if (match(tt._import)) {\n next();\n parseImport();\n } else {\n unexpected();\n }\n }\n expect(tt.braceR);\n}\n\nfunction flowParseDeclareExportDeclaration() {\n expect(tt._export);\n\n if (eat(tt._default)) {\n if (match(tt._function) || match(tt._class)) {\n // declare export default class ...\n // declare export default function ...\n flowParseDeclare();\n } else {\n // declare export default [type];\n flowParseType();\n semicolon();\n }\n } else if (\n match(tt._var) || // declare export var ...\n match(tt._function) || // declare export function ...\n match(tt._class) || // declare export class ...\n isContextual(ContextualKeyword._opaque) // declare export opaque ..\n ) {\n flowParseDeclare();\n } else if (\n match(tt.star) || // declare export * from ''\n match(tt.braceL) || // declare export {} ...\n isContextual(ContextualKeyword._interface) || // declare export interface ...\n isContextual(ContextualKeyword._type) || // declare export type ...\n isContextual(ContextualKeyword._opaque) // declare export opaque type ...\n ) {\n parseExport();\n } else {\n unexpected();\n }\n}\n\nfunction flowParseDeclareModuleExports() {\n expectContextual(ContextualKeyword._exports);\n flowParseTypeAnnotation();\n semicolon();\n}\n\nfunction flowParseDeclareTypeAlias() {\n next();\n flowParseTypeAlias();\n}\n\nfunction flowParseDeclareOpaqueType() {\n next();\n flowParseOpaqueType(true);\n}\n\nfunction flowParseDeclareInterface() {\n next();\n flowParseInterfaceish();\n}\n\n// Interfaces\n\nfunction flowParseInterfaceish(isClass = false) {\n flowParseRestrictedIdentifier();\n\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n if (eat(tt._extends)) {\n do {\n flowParseInterfaceExtends();\n } while (!isClass && eat(tt.comma));\n }\n\n if (isContextual(ContextualKeyword._mixins)) {\n next();\n do {\n flowParseInterfaceExtends();\n } while (eat(tt.comma));\n }\n\n if (isContextual(ContextualKeyword._implements)) {\n next();\n do {\n flowParseInterfaceExtends();\n } while (eat(tt.comma));\n }\n\n flowParseObjectType(isClass, false, isClass);\n}\n\nfunction flowParseInterfaceExtends() {\n flowParseQualifiedTypeIdentifier(false);\n if (match(tt.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n}\n\nfunction flowParseInterface() {\n flowParseInterfaceish();\n}\n\nfunction flowParseRestrictedIdentifier() {\n parseIdentifier();\n}\n\nfunction flowParseTypeAlias() {\n flowParseRestrictedIdentifier();\n\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n flowParseTypeInitialiser(tt.eq);\n semicolon();\n}\n\nfunction flowParseOpaqueType(declare) {\n expectContextual(ContextualKeyword._type);\n flowParseRestrictedIdentifier();\n\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n // Parse the supertype\n if (match(tt.colon)) {\n flowParseTypeInitialiser(tt.colon);\n }\n\n if (!declare) {\n flowParseTypeInitialiser(tt.eq);\n }\n semicolon();\n}\n\nfunction flowParseTypeParameter() {\n flowParseVariance();\n flowParseTypeAnnotatableIdentifier();\n\n if (eat(tt.eq)) {\n flowParseType();\n }\n}\n\nexport function flowParseTypeParameterDeclaration() {\n const oldIsType = pushTypeContext(0);\n // istanbul ignore else: this condition is already checked at all call sites\n if (match(tt.lessThan) || match(tt.typeParameterStart)) {\n next();\n } else {\n unexpected();\n }\n\n do {\n flowParseTypeParameter();\n if (!match(tt.greaterThan)) {\n expect(tt.comma);\n }\n } while (!match(tt.greaterThan) && !state.error);\n expect(tt.greaterThan);\n popTypeContext(oldIsType);\n}\n\nfunction flowParseTypeParameterInstantiation() {\n const oldIsType = pushTypeContext(0);\n expect(tt.lessThan);\n while (!match(tt.greaterThan) && !state.error) {\n flowParseType();\n if (!match(tt.greaterThan)) {\n expect(tt.comma);\n }\n }\n expect(tt.greaterThan);\n popTypeContext(oldIsType);\n}\n\nfunction flowParseInterfaceType() {\n expectContextual(ContextualKeyword._interface);\n if (eat(tt._extends)) {\n do {\n flowParseInterfaceExtends();\n } while (eat(tt.comma));\n }\n flowParseObjectType(false, false, false);\n}\n\nfunction flowParseObjectPropertyKey() {\n if (match(tt.num) || match(tt.string)) {\n parseExprAtom();\n } else {\n parseIdentifier();\n }\n}\n\nfunction flowParseObjectTypeIndexer() {\n // Note: bracketL has already been consumed\n if (lookaheadType() === tt.colon) {\n flowParseObjectPropertyKey();\n flowParseTypeInitialiser();\n } else {\n flowParseType();\n }\n expect(tt.bracketR);\n flowParseTypeInitialiser();\n}\n\nfunction flowParseObjectTypeInternalSlot() {\n // Note: both bracketL have already been consumed\n flowParseObjectPropertyKey();\n expect(tt.bracketR);\n expect(tt.bracketR);\n if (match(tt.lessThan) || match(tt.parenL)) {\n flowParseObjectTypeMethodish();\n } else {\n eat(tt.question);\n flowParseTypeInitialiser();\n }\n}\n\nfunction flowParseObjectTypeMethodish() {\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n\n expect(tt.parenL);\n while (!match(tt.parenR) && !match(tt.ellipsis) && !state.error) {\n flowParseFunctionTypeParam();\n if (!match(tt.parenR)) {\n expect(tt.comma);\n }\n }\n\n if (eat(tt.ellipsis)) {\n flowParseFunctionTypeParam();\n }\n expect(tt.parenR);\n flowParseTypeInitialiser();\n}\n\nfunction flowParseObjectTypeCallProperty() {\n flowParseObjectTypeMethodish();\n}\n\nfunction flowParseObjectType(allowStatic, allowExact, allowProto) {\n let endDelim;\n if (allowExact && match(tt.braceBarL)) {\n expect(tt.braceBarL);\n endDelim = tt.braceBarR;\n } else {\n expect(tt.braceL);\n endDelim = tt.braceR;\n }\n\n while (!match(endDelim) && !state.error) {\n if (allowProto && isContextual(ContextualKeyword._proto)) {\n const lookahead = lookaheadType();\n if (lookahead !== tt.colon && lookahead !== tt.question) {\n next();\n allowStatic = false;\n }\n }\n if (allowStatic && isContextual(ContextualKeyword._static)) {\n const lookahead = lookaheadType();\n if (lookahead !== tt.colon && lookahead !== tt.question) {\n next();\n }\n }\n\n flowParseVariance();\n\n if (eat(tt.bracketL)) {\n if (eat(tt.bracketL)) {\n flowParseObjectTypeInternalSlot();\n } else {\n flowParseObjectTypeIndexer();\n }\n } else if (match(tt.parenL) || match(tt.lessThan)) {\n flowParseObjectTypeCallProperty();\n } else {\n if (isContextual(ContextualKeyword._get) || isContextual(ContextualKeyword._set)) {\n const lookahead = lookaheadType();\n if (lookahead === tt.name || lookahead === tt.string || lookahead === tt.num) {\n next();\n }\n }\n\n flowParseObjectTypeProperty();\n }\n\n flowObjectTypeSemicolon();\n }\n\n expect(endDelim);\n}\n\nfunction flowParseObjectTypeProperty() {\n if (match(tt.ellipsis)) {\n expect(tt.ellipsis);\n if (!eat(tt.comma)) {\n eat(tt.semi);\n }\n // Explicit inexact object syntax.\n if (match(tt.braceR)) {\n return;\n }\n flowParseType();\n } else {\n flowParseObjectPropertyKey();\n if (match(tt.lessThan) || match(tt.parenL)) {\n // This is a method property\n flowParseObjectTypeMethodish();\n } else {\n eat(tt.question);\n flowParseTypeInitialiser();\n }\n }\n}\n\nfunction flowObjectTypeSemicolon() {\n if (!eat(tt.semi) && !eat(tt.comma) && !match(tt.braceR) && !match(tt.braceBarR)) {\n unexpected();\n }\n}\n\nfunction flowParseQualifiedTypeIdentifier(initialIdAlreadyParsed) {\n if (!initialIdAlreadyParsed) {\n parseIdentifier();\n }\n while (eat(tt.dot)) {\n parseIdentifier();\n }\n}\n\nfunction flowParseGenericType() {\n flowParseQualifiedTypeIdentifier(true);\n if (match(tt.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n}\n\nfunction flowParseTypeofType() {\n expect(tt._typeof);\n flowParsePrimaryType();\n}\n\nfunction flowParseTupleType() {\n expect(tt.bracketL);\n // We allow trailing commas\n while (state.pos < input.length && !match(tt.bracketR)) {\n flowParseType();\n if (match(tt.bracketR)) {\n break;\n }\n expect(tt.comma);\n }\n expect(tt.bracketR);\n}\n\nfunction flowParseFunctionTypeParam() {\n const lookahead = lookaheadType();\n if (lookahead === tt.colon || lookahead === tt.question) {\n parseIdentifier();\n eat(tt.question);\n flowParseTypeInitialiser();\n } else {\n flowParseType();\n }\n}\n\nfunction flowParseFunctionTypeParams() {\n while (!match(tt.parenR) && !match(tt.ellipsis) && !state.error) {\n flowParseFunctionTypeParam();\n if (!match(tt.parenR)) {\n expect(tt.comma);\n }\n }\n if (eat(tt.ellipsis)) {\n flowParseFunctionTypeParam();\n }\n}\n\n// The parsing of types roughly parallels the parsing of expressions, and\n// primary types are kind of like primary expressions...they're the\n// primitives with which other types are constructed.\nfunction flowParsePrimaryType() {\n let isGroupedType = false;\n const oldNoAnonFunctionType = state.noAnonFunctionType;\n\n switch (state.type) {\n case tt.name: {\n if (isContextual(ContextualKeyword._interface)) {\n flowParseInterfaceType();\n return;\n }\n parseIdentifier();\n flowParseGenericType();\n return;\n }\n\n case tt.braceL:\n flowParseObjectType(false, false, false);\n return;\n\n case tt.braceBarL:\n flowParseObjectType(false, true, false);\n return;\n\n case tt.bracketL:\n flowParseTupleType();\n return;\n\n case tt.lessThan:\n flowParseTypeParameterDeclaration();\n expect(tt.parenL);\n flowParseFunctionTypeParams();\n expect(tt.parenR);\n expect(tt.arrow);\n flowParseType();\n return;\n\n case tt.parenL:\n next();\n\n // Check to see if this is actually a grouped type\n if (!match(tt.parenR) && !match(tt.ellipsis)) {\n if (match(tt.name)) {\n const token = lookaheadType();\n isGroupedType = token !== tt.question && token !== tt.colon;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n state.noAnonFunctionType = false;\n flowParseType();\n state.noAnonFunctionType = oldNoAnonFunctionType;\n\n // A `,` or a `) =>` means this is an anonymous function type\n if (\n state.noAnonFunctionType ||\n !(match(tt.comma) || (match(tt.parenR) && lookaheadType() === tt.arrow))\n ) {\n expect(tt.parenR);\n return;\n } else {\n // Eat a comma if there is one\n eat(tt.comma);\n }\n }\n\n flowParseFunctionTypeParams();\n\n expect(tt.parenR);\n expect(tt.arrow);\n flowParseType();\n return;\n\n case tt.minus:\n next();\n parseLiteral();\n return;\n\n case tt.string:\n case tt.num:\n case tt._true:\n case tt._false:\n case tt._null:\n case tt._this:\n case tt._void:\n case tt.star:\n next();\n return;\n\n default:\n if (state.type === tt._typeof) {\n flowParseTypeofType();\n return;\n } else if (state.type & TokenType.IS_KEYWORD) {\n next();\n state.tokens[state.tokens.length - 1].type = tt.name;\n return;\n }\n }\n\n unexpected();\n}\n\nfunction flowParsePostfixType() {\n flowParsePrimaryType();\n while (!canInsertSemicolon() && (match(tt.bracketL) || match(tt.questionDot))) {\n eat(tt.questionDot);\n expect(tt.bracketL);\n if (eat(tt.bracketR)) {\n // Array type\n } else {\n // Indexed access type\n flowParseType();\n expect(tt.bracketR);\n }\n }\n}\n\nfunction flowParsePrefixType() {\n if (eat(tt.question)) {\n flowParsePrefixType();\n } else {\n flowParsePostfixType();\n }\n}\n\nfunction flowParseAnonFunctionWithoutParens() {\n flowParsePrefixType();\n if (!state.noAnonFunctionType && eat(tt.arrow)) {\n flowParseType();\n }\n}\n\nfunction flowParseIntersectionType() {\n eat(tt.bitwiseAND);\n flowParseAnonFunctionWithoutParens();\n while (eat(tt.bitwiseAND)) {\n flowParseAnonFunctionWithoutParens();\n }\n}\n\nfunction flowParseUnionType() {\n eat(tt.bitwiseOR);\n flowParseIntersectionType();\n while (eat(tt.bitwiseOR)) {\n flowParseIntersectionType();\n }\n}\n\nfunction flowParseType() {\n flowParseUnionType();\n}\n\nexport function flowParseTypeAnnotation() {\n flowParseTypeInitialiser();\n}\n\nfunction flowParseTypeAnnotatableIdentifier() {\n parseIdentifier();\n if (match(tt.colon)) {\n flowParseTypeAnnotation();\n }\n}\n\nexport function flowParseVariance() {\n if (match(tt.plus) || match(tt.minus)) {\n next();\n state.tokens[state.tokens.length - 1].isType = true;\n }\n}\n\n// ==================================\n// Overrides\n// ==================================\n\nexport function flowParseFunctionBodyAndFinish(funcContextId) {\n // For arrow functions, `parseArrow` handles the return type itself.\n if (match(tt.colon)) {\n flowParseTypeAndPredicateInitialiser();\n }\n\n parseFunctionBody(false, funcContextId);\n}\n\nexport function flowParseSubscript(\n startTokenIndex,\n noCalls,\n stopState,\n) {\n if (match(tt.questionDot) && lookaheadType() === tt.lessThan) {\n if (noCalls) {\n stopState.stop = true;\n return;\n }\n next();\n flowParseTypeParameterInstantiation();\n expect(tt.parenL);\n parseCallExpressionArguments();\n return;\n } else if (!noCalls && match(tt.lessThan)) {\n const snapshot = state.snapshot();\n flowParseTypeParameterInstantiation();\n expect(tt.parenL);\n parseCallExpressionArguments();\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n } else {\n return;\n }\n }\n baseParseSubscript(startTokenIndex, noCalls, stopState);\n}\n\nexport function flowStartParseNewArguments() {\n if (match(tt.lessThan)) {\n const snapshot = state.snapshot();\n flowParseTypeParameterInstantiation();\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n }\n }\n}\n\n// interfaces\nexport function flowTryParseStatement() {\n if (match(tt.name) && state.contextualKeyword === ContextualKeyword._interface) {\n const oldIsType = pushTypeContext(0);\n next();\n flowParseInterface();\n popTypeContext(oldIsType);\n return true;\n } else if (isContextual(ContextualKeyword._enum)) {\n flowParseEnumDeclaration();\n return true;\n }\n return false;\n}\n\nexport function flowTryParseExportDefaultExpression() {\n if (isContextual(ContextualKeyword._enum)) {\n flowParseEnumDeclaration();\n return true;\n }\n return false;\n}\n\n// declares, interfaces and type aliases\nexport function flowParseIdentifierStatement(contextualKeyword) {\n if (contextualKeyword === ContextualKeyword._declare) {\n if (\n match(tt._class) ||\n match(tt.name) ||\n match(tt._function) ||\n match(tt._var) ||\n match(tt._export)\n ) {\n const oldIsType = pushTypeContext(1);\n flowParseDeclare();\n popTypeContext(oldIsType);\n }\n } else if (match(tt.name)) {\n if (contextualKeyword === ContextualKeyword._interface) {\n const oldIsType = pushTypeContext(1);\n flowParseInterface();\n popTypeContext(oldIsType);\n } else if (contextualKeyword === ContextualKeyword._type) {\n const oldIsType = pushTypeContext(1);\n flowParseTypeAlias();\n popTypeContext(oldIsType);\n } else if (contextualKeyword === ContextualKeyword._opaque) {\n const oldIsType = pushTypeContext(1);\n flowParseOpaqueType(false);\n popTypeContext(oldIsType);\n }\n }\n semicolon();\n}\n\n// export type\nexport function flowShouldParseExportDeclaration() {\n return (\n isContextual(ContextualKeyword._type) ||\n isContextual(ContextualKeyword._interface) ||\n isContextual(ContextualKeyword._opaque) ||\n isContextual(ContextualKeyword._enum)\n );\n}\n\nexport function flowShouldDisallowExportDefaultSpecifier() {\n return (\n match(tt.name) &&\n (state.contextualKeyword === ContextualKeyword._type ||\n state.contextualKeyword === ContextualKeyword._interface ||\n state.contextualKeyword === ContextualKeyword._opaque ||\n state.contextualKeyword === ContextualKeyword._enum)\n );\n}\n\nexport function flowParseExportDeclaration() {\n if (isContextual(ContextualKeyword._type)) {\n const oldIsType = pushTypeContext(1);\n next();\n\n if (match(tt.braceL)) {\n // export type { foo, bar };\n parseExportSpecifiers();\n parseExportFrom();\n } else {\n // export type Foo = Bar;\n flowParseTypeAlias();\n }\n popTypeContext(oldIsType);\n } else if (isContextual(ContextualKeyword._opaque)) {\n const oldIsType = pushTypeContext(1);\n next();\n // export opaque type Foo = Bar;\n flowParseOpaqueType(false);\n popTypeContext(oldIsType);\n } else if (isContextual(ContextualKeyword._interface)) {\n const oldIsType = pushTypeContext(1);\n next();\n flowParseInterface();\n popTypeContext(oldIsType);\n } else {\n parseStatement(true);\n }\n}\n\nexport function flowShouldParseExportStar() {\n return match(tt.star) || (isContextual(ContextualKeyword._type) && lookaheadType() === tt.star);\n}\n\nexport function flowParseExportStar() {\n if (eatContextual(ContextualKeyword._type)) {\n const oldIsType = pushTypeContext(2);\n baseParseExportStar();\n popTypeContext(oldIsType);\n } else {\n baseParseExportStar();\n }\n}\n\n// parse a the super class type parameters and implements\nexport function flowAfterParseClassSuper(hasSuper) {\n if (hasSuper && match(tt.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n if (isContextual(ContextualKeyword._implements)) {\n const oldIsType = pushTypeContext(0);\n next();\n state.tokens[state.tokens.length - 1].type = tt._implements;\n do {\n flowParseRestrictedIdentifier();\n if (match(tt.lessThan)) {\n flowParseTypeParameterInstantiation();\n }\n } while (eat(tt.comma));\n popTypeContext(oldIsType);\n }\n}\n\n// parse type parameters for object method shorthand\nexport function flowStartParseObjPropValue() {\n // method shorthand\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n if (!match(tt.parenL)) unexpected();\n }\n}\n\nexport function flowParseAssignableListItemTypes() {\n const oldIsType = pushTypeContext(0);\n eat(tt.question);\n if (match(tt.colon)) {\n flowParseTypeAnnotation();\n }\n popTypeContext(oldIsType);\n}\n\n// parse typeof and type imports\nexport function flowStartParseImportSpecifiers() {\n if (match(tt._typeof) || isContextual(ContextualKeyword._type)) {\n const lh = lookaheadTypeAndKeyword();\n if (isMaybeDefaultImport(lh) || lh.type === tt.braceL || lh.type === tt.star) {\n next();\n }\n }\n}\n\n// parse import-type/typeof shorthand\nexport function flowParseImportSpecifier() {\n const isTypeKeyword =\n state.contextualKeyword === ContextualKeyword._type || state.type === tt._typeof;\n if (isTypeKeyword) {\n next();\n } else {\n parseIdentifier();\n }\n\n if (isContextual(ContextualKeyword._as) && !isLookaheadContextual(ContextualKeyword._as)) {\n parseIdentifier();\n if (isTypeKeyword && !match(tt.name) && !(state.type & TokenType.IS_KEYWORD)) {\n // `import {type as ,` or `import {type as }`\n } else {\n // `import {type as foo`\n parseIdentifier();\n }\n } else {\n if (isTypeKeyword && (match(tt.name) || !!(state.type & TokenType.IS_KEYWORD))) {\n // `import {type foo`\n parseIdentifier();\n }\n if (eatContextual(ContextualKeyword._as)) {\n parseIdentifier();\n }\n }\n}\n\n// parse function type parameters - function foo<T>() {}\nexport function flowStartParseFunctionParams() {\n // Originally this checked if the method is a getter/setter, but if it was, we'd crash soon\n // anyway, so don't try to propagate that information.\n if (match(tt.lessThan)) {\n const oldIsType = pushTypeContext(0);\n flowParseTypeParameterDeclaration();\n popTypeContext(oldIsType);\n }\n}\n\n// parse flow type annotations on variable declarator heads - let foo: string = bar\nexport function flowAfterParseVarHead() {\n if (match(tt.colon)) {\n flowParseTypeAnnotation();\n }\n}\n\n// parse the return type of an async arrow function - let foo = (async (): number => {});\nexport function flowStartParseAsyncArrowFromCallExpression() {\n if (match(tt.colon)) {\n const oldNoAnonFunctionType = state.noAnonFunctionType;\n state.noAnonFunctionType = true;\n flowParseTypeAnnotation();\n state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n}\n\n// We need to support type parameter declarations for arrow functions. This\n// is tricky. There are three situations we need to handle\n//\n// 1. This is either JSX or an arrow function. We'll try JSX first. If that\n// fails, we'll try an arrow function. If that fails, we'll throw the JSX\n// error.\n// 2. This is an arrow function. We'll parse the type parameter declaration,\n// parse the rest, make sure the rest is an arrow function, and go from\n// there\n// 3. This is neither. Just call the super method\nexport function flowParseMaybeAssign(noIn, isWithinParens) {\n if (match(tt.lessThan)) {\n const snapshot = state.snapshot();\n let wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n state.type = tt.typeParameterStart;\n } else {\n return wasArrow;\n }\n\n const oldIsType = pushTypeContext(0);\n flowParseTypeParameterDeclaration();\n popTypeContext(oldIsType);\n wasArrow = baseParseMaybeAssign(noIn, isWithinParens);\n if (wasArrow) {\n return true;\n }\n unexpected();\n }\n\n return baseParseMaybeAssign(noIn, isWithinParens);\n}\n\n// handle return types for arrow functions\nexport function flowParseArrow() {\n if (match(tt.colon)) {\n const oldIsType = pushTypeContext(0);\n const snapshot = state.snapshot();\n\n const oldNoAnonFunctionType = state.noAnonFunctionType;\n state.noAnonFunctionType = true;\n flowParseTypeAndPredicateInitialiser();\n state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (canInsertSemicolon()) unexpected();\n if (!match(tt.arrow)) unexpected();\n\n if (state.error) {\n state.restoreFromSnapshot(snapshot);\n }\n popTypeContext(oldIsType);\n }\n return eat(tt.arrow);\n}\n\nexport function flowParseSubscripts(startTokenIndex, noCalls = false) {\n if (\n state.tokens[state.tokens.length - 1].contextualKeyword === ContextualKeyword._async &&\n match(tt.lessThan)\n ) {\n const snapshot = state.snapshot();\n const wasArrow = parseAsyncArrowWithTypeParameters();\n if (wasArrow && !state.error) {\n return;\n }\n state.restoreFromSnapshot(snapshot);\n }\n\n baseParseSubscripts(startTokenIndex, noCalls);\n}\n\n// Returns true if there was an arrow function here.\nfunction parseAsyncArrowWithTypeParameters() {\n state.scopeDepth++;\n const startTokenIndex = state.tokens.length;\n parseFunctionParams();\n if (!parseArrow()) {\n return false;\n }\n parseArrowExpression(startTokenIndex);\n return true;\n}\n\nfunction flowParseEnumDeclaration() {\n expectContextual(ContextualKeyword._enum);\n state.tokens[state.tokens.length - 1].type = tt._enum;\n parseIdentifier();\n flowParseEnumBody();\n}\n\nfunction flowParseEnumBody() {\n if (eatContextual(ContextualKeyword._of)) {\n next();\n }\n expect(tt.braceL);\n flowParseEnumMembers();\n expect(tt.braceR);\n}\n\nfunction flowParseEnumMembers() {\n while (!match(tt.braceR) && !state.error) {\n if (eat(tt.ellipsis)) {\n break;\n }\n flowParseEnumMember();\n if (!match(tt.braceR)) {\n expect(tt.comma);\n }\n }\n}\n\nfunction flowParseEnumMember() {\n parseIdentifier();\n if (eat(tt.eq)) {\n // Flow enum values are always just one token (a string, number, or boolean literal).\n next();\n }\n}\n", "/* eslint max-len: 0 */\n\nimport {File} from \"../index\";\nimport {\n flowAfterParseClassSuper,\n flowAfterParseVarHead,\n flowParseExportDeclaration,\n flowParseExportStar,\n flowParseIdentifierStatement,\n flowParseImportSpecifier,\n flowParseTypeAnnotation,\n flowParseTypeParameterDeclaration,\n flowShouldDisallowExportDefaultSpecifier,\n flowShouldParseExportDeclaration,\n flowShouldParseExportStar,\n flowStartParseFunctionParams,\n flowStartParseImportSpecifiers,\n flowTryParseExportDefaultExpression,\n flowTryParseStatement,\n} from \"../plugins/flow\";\nimport {\n tsAfterParseClassSuper,\n tsAfterParseVarHead,\n tsIsDeclarationStart,\n tsParseExportDeclaration,\n tsParseExportSpecifier,\n tsParseIdentifierStatement,\n tsParseImportEqualsDeclaration,\n tsParseImportSpecifier,\n tsParseMaybeDecoratorArguments,\n tsParseModifiers,\n tsStartParseFunctionParams,\n tsTryParseClassMemberWithIsStatic,\n tsTryParseExport,\n tsTryParseExportDefaultExpression,\n tsTryParseStatementContent,\n tsTryParseTypeAnnotation,\n tsTryParseTypeParameters,\n} from \"../plugins/typescript\";\nimport {\n eat,\n eatTypeToken,\n IdentifierRole,\n lookaheadType,\n lookaheadTypeAndKeyword,\n match,\n next,\n nextTokenStart,\n nextTokenStartSince,\n popTypeContext,\n pushTypeContext,\n} from \"../tokenizer\";\nimport {ContextualKeyword} from \"../tokenizer/keywords\";\nimport {Scope} from \"../tokenizer/state\";\nimport { TokenType as tt} from \"../tokenizer/types\";\nimport {charCodes} from \"../util/charcodes\";\nimport {getNextContextId, input, isFlowEnabled, isTypeScriptEnabled, state} from \"./base\";\nimport {\n parseCallExpressionArguments,\n parseExprAtom,\n parseExpression,\n parseExprSubscripts,\n parseFunctionBodyAndFinish,\n parseIdentifier,\n parseMaybeAssign,\n parseMethod,\n parseObj,\n parseParenExpression,\n parsePropertyName,\n} from \"./expression\";\nimport {\n parseBindingAtom,\n parseBindingIdentifier,\n parseBindingList,\n parseImportedIdentifier,\n} from \"./lval\";\nimport {\n canInsertSemicolon,\n eatContextual,\n expect,\n expectContextual,\n hasFollowingLineBreak,\n hasPrecedingLineBreak,\n isContextual,\n isLineTerminator,\n isLookaheadContextual,\n semicolon,\n unexpected,\n} from \"./util\";\n\nexport function parseTopLevel() {\n parseBlockBody(tt.eof);\n state.scopes.push(new Scope(0, state.tokens.length, true));\n if (state.scopeDepth !== 0) {\n throw new Error(`Invalid scope depth at end of file: ${state.scopeDepth}`);\n }\n return new File(state.tokens, state.scopes);\n}\n\n// Parse a single statement.\n//\n// If expecting a statement and finding a slash operator, parse a\n// regular expression literal. This is to handle cases like\n// `if (foo) /blah/.exec(foo)`, where looking at the previous token\n// does not help.\n\nexport function parseStatement(declaration) {\n if (isFlowEnabled) {\n if (flowTryParseStatement()) {\n return;\n }\n }\n if (match(tt.at)) {\n parseDecorators();\n }\n parseStatementContent(declaration);\n}\n\nfunction parseStatementContent(declaration) {\n if (isTypeScriptEnabled) {\n if (tsTryParseStatementContent()) {\n return;\n }\n }\n\n const starttype = state.type;\n\n // Most types of statements are recognized by the keyword they\n // start with. Many are trivial to parse, some require a bit of\n // complexity.\n\n switch (starttype) {\n case tt._break:\n case tt._continue:\n parseBreakContinueStatement();\n return;\n case tt._debugger:\n parseDebuggerStatement();\n return;\n case tt._do:\n parseDoStatement();\n return;\n case tt._for:\n parseForStatement();\n return;\n case tt._function:\n if (lookaheadType() === tt.dot) break;\n if (!declaration) unexpected();\n parseFunctionStatement();\n return;\n\n case tt._class:\n if (!declaration) unexpected();\n parseClass(true);\n return;\n\n case tt._if:\n parseIfStatement();\n return;\n case tt._return:\n parseReturnStatement();\n return;\n case tt._switch:\n parseSwitchStatement();\n return;\n case tt._throw:\n parseThrowStatement();\n return;\n case tt._try:\n parseTryStatement();\n return;\n\n case tt._let:\n case tt._const:\n if (!declaration) unexpected(); // NOTE: falls through to _var\n\n case tt._var:\n parseVarStatement(starttype !== tt._var);\n return;\n\n case tt._while:\n parseWhileStatement();\n return;\n case tt.braceL:\n parseBlock();\n return;\n case tt.semi:\n parseEmptyStatement();\n return;\n case tt._export:\n case tt._import: {\n const nextType = lookaheadType();\n if (nextType === tt.parenL || nextType === tt.dot) {\n break;\n }\n next();\n if (starttype === tt._import) {\n parseImport();\n } else {\n parseExport();\n }\n return;\n }\n case tt.name:\n if (state.contextualKeyword === ContextualKeyword._async) {\n const functionStart = state.start;\n // peek ahead and see if next token is a function\n const snapshot = state.snapshot();\n next();\n if (match(tt._function) && !canInsertSemicolon()) {\n expect(tt._function);\n parseFunction(functionStart, true);\n return;\n } else {\n state.restoreFromSnapshot(snapshot);\n }\n } else if (\n state.contextualKeyword === ContextualKeyword._using &&\n !hasFollowingLineBreak() &&\n // Statements like `using[0]` and `using in foo` aren't actual using\n // declarations.\n lookaheadType() === tt.name\n ) {\n parseVarStatement(true);\n return;\n } else if (startsAwaitUsing()) {\n expectContextual(ContextualKeyword._await);\n parseVarStatement(true);\n return;\n }\n default:\n // Do nothing.\n break;\n }\n\n // If the statement does not start with a statement keyword or a\n // brace, it's an ExpressionStatement or LabeledStatement. We\n // simply start parsing an expression, and afterwards, if the\n // next token is a colon and the expression was a simple\n // Identifier node, we switch to interpreting it as a label.\n const initialTokensLength = state.tokens.length;\n parseExpression();\n let simpleName = null;\n if (state.tokens.length === initialTokensLength + 1) {\n const token = state.tokens[state.tokens.length - 1];\n if (token.type === tt.name) {\n simpleName = token.contextualKeyword;\n }\n }\n if (simpleName == null) {\n semicolon();\n return;\n }\n if (eat(tt.colon)) {\n parseLabeledStatement();\n } else {\n // This was an identifier, so we might want to handle flow/typescript-specific cases.\n parseIdentifierStatement(simpleName);\n }\n}\n\n/**\n * Determine if we're positioned at an `await using` declaration.\n *\n * Note that this can happen either in place of a regular variable declaration\n * or in a loop body, and in both places, there are similar-looking cases where\n * we need to return false.\n *\n * Examples returning true:\n * await using foo = bar();\n * for (await using a of b) {}\n *\n * Examples returning false:\n * await using\n * await using + 1\n * await using instanceof T\n * for (await using;;) {}\n *\n * For now, we early return if we don't see `await`, then do a simple\n * backtracking-based lookahead for the `using` and identifier tokens. In the\n * future, this could be optimized with a character-based approach.\n */\nfunction startsAwaitUsing() {\n if (!isContextual(ContextualKeyword._await)) {\n return false;\n }\n const snapshot = state.snapshot();\n // await\n next();\n if (!isContextual(ContextualKeyword._using) || hasPrecedingLineBreak()) {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n // using\n next();\n if (!match(tt.name) || hasPrecedingLineBreak()) {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n state.restoreFromSnapshot(snapshot);\n return true;\n}\n\nexport function parseDecorators() {\n while (match(tt.at)) {\n parseDecorator();\n }\n}\n\nfunction parseDecorator() {\n next();\n if (eat(tt.parenL)) {\n parseExpression();\n expect(tt.parenR);\n } else {\n parseIdentifier();\n while (eat(tt.dot)) {\n parseIdentifier();\n }\n parseMaybeDecoratorArguments();\n }\n}\n\nfunction parseMaybeDecoratorArguments() {\n if (isTypeScriptEnabled) {\n tsParseMaybeDecoratorArguments();\n } else {\n baseParseMaybeDecoratorArguments();\n }\n}\n\nexport function baseParseMaybeDecoratorArguments() {\n if (eat(tt.parenL)) {\n parseCallExpressionArguments();\n }\n}\n\nfunction parseBreakContinueStatement() {\n next();\n if (!isLineTerminator()) {\n parseIdentifier();\n semicolon();\n }\n}\n\nfunction parseDebuggerStatement() {\n next();\n semicolon();\n}\n\nfunction parseDoStatement() {\n next();\n parseStatement(false);\n expect(tt._while);\n parseParenExpression();\n eat(tt.semi);\n}\n\nfunction parseForStatement() {\n state.scopeDepth++;\n const startTokenIndex = state.tokens.length;\n parseAmbiguousForStatement();\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, false));\n state.scopeDepth--;\n}\n\n/**\n * Determine if this token is a `using` declaration (explicit resource\n * management) as part of a loop.\n * https://github.com/tc39/proposal-explicit-resource-management\n */\nfunction isUsingInLoop() {\n if (!isContextual(ContextualKeyword._using)) {\n return false;\n }\n // This must be `for (using of`, where `using` is the name of the loop\n // variable.\n if (isLookaheadContextual(ContextualKeyword._of)) {\n return false;\n }\n return true;\n}\n\n// Disambiguating between a `for` and a `for`/`in` or `for`/`of`\n// loop is non-trivial. Basically, we have to parse the init `var`\n// statement or expression, disallowing the `in` operator (see\n// the second parameter to `parseExpression`), and then check\n// whether the next token is `in` or `of`. When there is no init\n// part (semicolon immediately after the opening parenthesis), it\n// is a regular `for` loop.\nfunction parseAmbiguousForStatement() {\n next();\n\n let forAwait = false;\n if (isContextual(ContextualKeyword._await)) {\n forAwait = true;\n next();\n }\n expect(tt.parenL);\n\n if (match(tt.semi)) {\n if (forAwait) {\n unexpected();\n }\n parseFor();\n return;\n }\n\n const isAwaitUsing = startsAwaitUsing();\n if (isAwaitUsing || match(tt._var) || match(tt._let) || match(tt._const) || isUsingInLoop()) {\n if (isAwaitUsing) {\n expectContextual(ContextualKeyword._await);\n }\n next();\n parseVar(true, state.type !== tt._var);\n if (match(tt._in) || isContextual(ContextualKeyword._of)) {\n parseForIn(forAwait);\n return;\n }\n parseFor();\n return;\n }\n\n parseExpression(true);\n if (match(tt._in) || isContextual(ContextualKeyword._of)) {\n parseForIn(forAwait);\n return;\n }\n if (forAwait) {\n unexpected();\n }\n parseFor();\n}\n\nfunction parseFunctionStatement() {\n const functionStart = state.start;\n next();\n parseFunction(functionStart, true);\n}\n\nfunction parseIfStatement() {\n next();\n parseParenExpression();\n parseStatement(false);\n if (eat(tt._else)) {\n parseStatement(false);\n }\n}\n\nfunction parseReturnStatement() {\n next();\n\n // In `return` (and `break`/`continue`), the keywords with\n // optional arguments, we eagerly look for a semicolon or the\n // possibility to insert one.\n\n if (!isLineTerminator()) {\n parseExpression();\n semicolon();\n }\n}\n\nfunction parseSwitchStatement() {\n next();\n parseParenExpression();\n state.scopeDepth++;\n const startTokenIndex = state.tokens.length;\n expect(tt.braceL);\n\n // Don't bother validation; just go through any sequence of cases, defaults, and statements.\n while (!match(tt.braceR) && !state.error) {\n if (match(tt._case) || match(tt._default)) {\n const isCase = match(tt._case);\n next();\n if (isCase) {\n parseExpression();\n }\n expect(tt.colon);\n } else {\n parseStatement(true);\n }\n }\n next(); // Closing brace\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, false));\n state.scopeDepth--;\n}\n\nfunction parseThrowStatement() {\n next();\n parseExpression();\n semicolon();\n}\n\nfunction parseCatchClauseParam() {\n parseBindingAtom(true /* isBlockScope */);\n\n if (isTypeScriptEnabled) {\n tsTryParseTypeAnnotation();\n }\n}\n\nfunction parseTryStatement() {\n next();\n\n parseBlock();\n\n if (match(tt._catch)) {\n next();\n let catchBindingStartTokenIndex = null;\n if (match(tt.parenL)) {\n state.scopeDepth++;\n catchBindingStartTokenIndex = state.tokens.length;\n expect(tt.parenL);\n parseCatchClauseParam();\n expect(tt.parenR);\n }\n parseBlock();\n if (catchBindingStartTokenIndex != null) {\n // We need a special scope for the catch binding which includes the binding itself and the\n // catch block.\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(catchBindingStartTokenIndex, endTokenIndex, false));\n state.scopeDepth--;\n }\n }\n if (eat(tt._finally)) {\n parseBlock();\n }\n}\n\nexport function parseVarStatement(isBlockScope) {\n next();\n parseVar(false, isBlockScope);\n semicolon();\n}\n\nfunction parseWhileStatement() {\n next();\n parseParenExpression();\n parseStatement(false);\n}\n\nfunction parseEmptyStatement() {\n next();\n}\n\nfunction parseLabeledStatement() {\n parseStatement(true);\n}\n\n/**\n * Parse a statement starting with an identifier of the given name. Subclasses match on the name\n * to handle statements like \"declare\".\n */\nfunction parseIdentifierStatement(contextualKeyword) {\n if (isTypeScriptEnabled) {\n tsParseIdentifierStatement(contextualKeyword);\n } else if (isFlowEnabled) {\n flowParseIdentifierStatement(contextualKeyword);\n } else {\n semicolon();\n }\n}\n\n// Parse a semicolon-enclosed block of statements.\nexport function parseBlock(isFunctionScope = false, contextId = 0) {\n const startTokenIndex = state.tokens.length;\n state.scopeDepth++;\n expect(tt.braceL);\n if (contextId) {\n state.tokens[state.tokens.length - 1].contextId = contextId;\n }\n parseBlockBody(tt.braceR);\n if (contextId) {\n state.tokens[state.tokens.length - 1].contextId = contextId;\n }\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, isFunctionScope));\n state.scopeDepth--;\n}\n\nexport function parseBlockBody(end) {\n while (!eat(end) && !state.error) {\n parseStatement(true);\n }\n}\n\n// Parse a regular `for` loop. The disambiguation code in\n// `parseStatement` will already have parsed the init statement or\n// expression.\n\nfunction parseFor() {\n expect(tt.semi);\n if (!match(tt.semi)) {\n parseExpression();\n }\n expect(tt.semi);\n if (!match(tt.parenR)) {\n parseExpression();\n }\n expect(tt.parenR);\n parseStatement(false);\n}\n\n// Parse a `for`/`in` and `for`/`of` loop, which are almost\n// same from parser's perspective.\n\nfunction parseForIn(forAwait) {\n if (forAwait) {\n eatContextual(ContextualKeyword._of);\n } else {\n next();\n }\n parseExpression();\n expect(tt.parenR);\n parseStatement(false);\n}\n\n// Parse a list of variable declarations.\n\nfunction parseVar(isFor, isBlockScope) {\n while (true) {\n parseVarHead(isBlockScope);\n if (eat(tt.eq)) {\n const eqIndex = state.tokens.length - 1;\n parseMaybeAssign(isFor);\n state.tokens[eqIndex].rhsEndIndex = state.tokens.length;\n }\n if (!eat(tt.comma)) {\n break;\n }\n }\n}\n\nfunction parseVarHead(isBlockScope) {\n parseBindingAtom(isBlockScope);\n if (isTypeScriptEnabled) {\n tsAfterParseVarHead();\n } else if (isFlowEnabled) {\n flowAfterParseVarHead();\n }\n}\n\n// Parse a function declaration or literal (depending on the\n// `isStatement` parameter).\n\nexport function parseFunction(\n functionStart,\n isStatement,\n optionalId = false,\n) {\n if (match(tt.star)) {\n next();\n }\n\n if (isStatement && !optionalId && !match(tt.name) && !match(tt._yield)) {\n unexpected();\n }\n\n let nameScopeStartTokenIndex = null;\n\n if (match(tt.name)) {\n // Expression-style functions should limit their name's scope to the function body, so we make\n // a new function scope to enforce that.\n if (!isStatement) {\n nameScopeStartTokenIndex = state.tokens.length;\n state.scopeDepth++;\n }\n parseBindingIdentifier(false);\n }\n\n const startTokenIndex = state.tokens.length;\n state.scopeDepth++;\n parseFunctionParams();\n parseFunctionBodyAndFinish(functionStart);\n const endTokenIndex = state.tokens.length;\n // In addition to the block scope of the function body, we need a separate function-style scope\n // that includes the params.\n state.scopes.push(new Scope(startTokenIndex, endTokenIndex, true));\n state.scopeDepth--;\n if (nameScopeStartTokenIndex !== null) {\n state.scopes.push(new Scope(nameScopeStartTokenIndex, endTokenIndex, true));\n state.scopeDepth--;\n }\n}\n\nexport function parseFunctionParams(\n allowModifiers = false,\n funcContextId = 0,\n) {\n if (isTypeScriptEnabled) {\n tsStartParseFunctionParams();\n } else if (isFlowEnabled) {\n flowStartParseFunctionParams();\n }\n\n expect(tt.parenL);\n if (funcContextId) {\n state.tokens[state.tokens.length - 1].contextId = funcContextId;\n }\n parseBindingList(\n tt.parenR,\n false /* isBlockScope */,\n false /* allowEmpty */,\n allowModifiers,\n funcContextId,\n );\n if (funcContextId) {\n state.tokens[state.tokens.length - 1].contextId = funcContextId;\n }\n}\n\n// Parse a class declaration or literal (depending on the\n// `isStatement` parameter).\n\nexport function parseClass(isStatement, optionalId = false) {\n // Put a context ID on the class keyword, the open-brace, and the close-brace, so that later\n // code can easily navigate to meaningful points on the class.\n const contextId = getNextContextId();\n\n next();\n state.tokens[state.tokens.length - 1].contextId = contextId;\n state.tokens[state.tokens.length - 1].isExpression = !isStatement;\n // Like with functions, we declare a special \"name scope\" from the start of the name to the end\n // of the class, but only with expression-style classes, to represent the fact that the name is\n // available to the body of the class but not an outer declaration.\n let nameScopeStartTokenIndex = null;\n if (!isStatement) {\n nameScopeStartTokenIndex = state.tokens.length;\n state.scopeDepth++;\n }\n parseClassId(isStatement, optionalId);\n parseClassSuper();\n const openBraceIndex = state.tokens.length;\n parseClassBody(contextId);\n if (state.error) {\n return;\n }\n state.tokens[openBraceIndex].contextId = contextId;\n state.tokens[state.tokens.length - 1].contextId = contextId;\n if (nameScopeStartTokenIndex !== null) {\n const endTokenIndex = state.tokens.length;\n state.scopes.push(new Scope(nameScopeStartTokenIndex, endTokenIndex, false));\n state.scopeDepth--;\n }\n}\n\nfunction isClassProperty() {\n return match(tt.eq) || match(tt.semi) || match(tt.braceR) || match(tt.bang) || match(tt.colon);\n}\n\nfunction isClassMethod() {\n return match(tt.parenL) || match(tt.lessThan);\n}\n\nfunction parseClassBody(classContextId) {\n expect(tt.braceL);\n\n while (!eat(tt.braceR) && !state.error) {\n if (eat(tt.semi)) {\n continue;\n }\n\n if (match(tt.at)) {\n parseDecorator();\n continue;\n }\n const memberStart = state.start;\n parseClassMember(memberStart, classContextId);\n }\n}\n\nfunction parseClassMember(memberStart, classContextId) {\n if (isTypeScriptEnabled) {\n tsParseModifiers([\n ContextualKeyword._declare,\n ContextualKeyword._public,\n ContextualKeyword._protected,\n ContextualKeyword._private,\n ContextualKeyword._override,\n ]);\n }\n let isStatic = false;\n if (match(tt.name) && state.contextualKeyword === ContextualKeyword._static) {\n parseIdentifier(); // eats 'static'\n if (isClassMethod()) {\n parseClassMethod(memberStart, /* isConstructor */ false);\n return;\n } else if (isClassProperty()) {\n parseClassProperty();\n return;\n }\n // otherwise something static\n state.tokens[state.tokens.length - 1].type = tt._static;\n isStatic = true;\n\n if (match(tt.braceL)) {\n // This is a static block. Mark the word \"static\" with the class context ID for class element\n // detection and parse as a regular block.\n state.tokens[state.tokens.length - 1].contextId = classContextId;\n parseBlock();\n return;\n }\n }\n\n parseClassMemberWithIsStatic(memberStart, isStatic, classContextId);\n}\n\nfunction parseClassMemberWithIsStatic(\n memberStart,\n isStatic,\n classContextId,\n) {\n if (isTypeScriptEnabled) {\n if (tsTryParseClassMemberWithIsStatic(isStatic)) {\n return;\n }\n }\n if (eat(tt.star)) {\n // a generator\n parseClassPropertyName(classContextId);\n parseClassMethod(memberStart, /* isConstructor */ false);\n return;\n }\n\n // Get the identifier name so we can tell if it's actually a keyword like \"async\", \"get\", or\n // \"set\".\n parseClassPropertyName(classContextId);\n let isConstructor = false;\n const token = state.tokens[state.tokens.length - 1];\n // We allow \"constructor\" as either an identifier or a string.\n if (token.contextualKeyword === ContextualKeyword._constructor) {\n isConstructor = true;\n }\n parsePostMemberNameModifiers();\n\n if (isClassMethod()) {\n parseClassMethod(memberStart, isConstructor);\n } else if (isClassProperty()) {\n parseClassProperty();\n } else if (token.contextualKeyword === ContextualKeyword._async && !isLineTerminator()) {\n state.tokens[state.tokens.length - 1].type = tt._async;\n // an async method\n const isGenerator = match(tt.star);\n if (isGenerator) {\n next();\n }\n\n // The so-called parsed name would have been \"async\": get the real name.\n parseClassPropertyName(classContextId);\n parsePostMemberNameModifiers();\n parseClassMethod(memberStart, false /* isConstructor */);\n } else if (\n (token.contextualKeyword === ContextualKeyword._get ||\n token.contextualKeyword === ContextualKeyword._set) &&\n !(isLineTerminator() && match(tt.star))\n ) {\n if (token.contextualKeyword === ContextualKeyword._get) {\n state.tokens[state.tokens.length - 1].type = tt._get;\n } else {\n state.tokens[state.tokens.length - 1].type = tt._set;\n }\n // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n // a getter or setter\n // The so-called parsed name would have been \"get/set\": get the real name.\n parseClassPropertyName(classContextId);\n parseClassMethod(memberStart, /* isConstructor */ false);\n } else if (token.contextualKeyword === ContextualKeyword._accessor && !isLineTerminator()) {\n parseClassPropertyName(classContextId);\n parseClassProperty();\n } else if (isLineTerminator()) {\n // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n parseClassProperty();\n } else {\n unexpected();\n }\n}\n\nfunction parseClassMethod(functionStart, isConstructor) {\n if (isTypeScriptEnabled) {\n tsTryParseTypeParameters();\n } else if (isFlowEnabled) {\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n }\n parseMethod(functionStart, isConstructor);\n}\n\n// Return the name of the class property, if it is a simple identifier.\nexport function parseClassPropertyName(classContextId) {\n parsePropertyName(classContextId);\n}\n\nexport function parsePostMemberNameModifiers() {\n if (isTypeScriptEnabled) {\n const oldIsType = pushTypeContext(0);\n eat(tt.question);\n popTypeContext(oldIsType);\n }\n}\n\nexport function parseClassProperty() {\n if (isTypeScriptEnabled) {\n eatTypeToken(tt.bang);\n tsTryParseTypeAnnotation();\n } else if (isFlowEnabled) {\n if (match(tt.colon)) {\n flowParseTypeAnnotation();\n }\n }\n\n if (match(tt.eq)) {\n const equalsTokenIndex = state.tokens.length;\n next();\n parseMaybeAssign();\n state.tokens[equalsTokenIndex].rhsEndIndex = state.tokens.length;\n }\n semicolon();\n}\n\nfunction parseClassId(isStatement, optionalId = false) {\n if (\n isTypeScriptEnabled &&\n (!isStatement || optionalId) &&\n isContextual(ContextualKeyword._implements)\n ) {\n return;\n }\n\n if (match(tt.name)) {\n parseBindingIdentifier(true);\n }\n\n if (isTypeScriptEnabled) {\n tsTryParseTypeParameters();\n } else if (isFlowEnabled) {\n if (match(tt.lessThan)) {\n flowParseTypeParameterDeclaration();\n }\n }\n}\n\n// Returns true if there was a superclass.\nfunction parseClassSuper() {\n let hasSuper = false;\n if (eat(tt._extends)) {\n parseExprSubscripts();\n hasSuper = true;\n } else {\n hasSuper = false;\n }\n if (isTypeScriptEnabled) {\n tsAfterParseClassSuper(hasSuper);\n } else if (isFlowEnabled) {\n flowAfterParseClassSuper(hasSuper);\n }\n}\n\n// Parses module export declaration.\n\nexport function parseExport() {\n const exportIndex = state.tokens.length - 1;\n if (isTypeScriptEnabled) {\n if (tsTryParseExport()) {\n return;\n }\n }\n // export * from '...'\n if (shouldParseExportStar()) {\n parseExportStar();\n } else if (isExportDefaultSpecifier()) {\n // export default from\n parseIdentifier();\n if (match(tt.comma) && lookaheadType() === tt.star) {\n expect(tt.comma);\n expect(tt.star);\n expectContextual(ContextualKeyword._as);\n parseIdentifier();\n } else {\n parseExportSpecifiersMaybe();\n }\n parseExportFrom();\n } else if (eat(tt._default)) {\n // export default ...\n parseExportDefaultExpression();\n } else if (shouldParseExportDeclaration()) {\n parseExportDeclaration();\n } else {\n // export { x, y as z } [from '...']\n parseExportSpecifiers();\n parseExportFrom();\n }\n state.tokens[exportIndex].rhsEndIndex = state.tokens.length;\n}\n\nfunction parseExportDefaultExpression() {\n if (isTypeScriptEnabled) {\n if (tsTryParseExportDefaultExpression()) {\n return;\n }\n }\n if (isFlowEnabled) {\n if (flowTryParseExportDefaultExpression()) {\n return;\n }\n }\n const functionStart = state.start;\n if (eat(tt._function)) {\n parseFunction(functionStart, true, true);\n } else if (isContextual(ContextualKeyword._async) && lookaheadType() === tt._function) {\n // async function declaration\n eatContextual(ContextualKeyword._async);\n eat(tt._function);\n parseFunction(functionStart, true, true);\n } else if (match(tt._class)) {\n parseClass(true, true);\n } else if (match(tt.at)) {\n parseDecorators();\n parseClass(true, true);\n } else {\n parseMaybeAssign();\n semicolon();\n }\n}\n\nfunction parseExportDeclaration() {\n if (isTypeScriptEnabled) {\n tsParseExportDeclaration();\n } else if (isFlowEnabled) {\n flowParseExportDeclaration();\n } else {\n parseStatement(true);\n }\n}\n\nfunction isExportDefaultSpecifier() {\n if (isTypeScriptEnabled && tsIsDeclarationStart()) {\n return false;\n } else if (isFlowEnabled && flowShouldDisallowExportDefaultSpecifier()) {\n return false;\n }\n if (match(tt.name)) {\n return state.contextualKeyword !== ContextualKeyword._async;\n }\n\n if (!match(tt._default)) {\n return false;\n }\n\n const _next = nextTokenStart();\n const lookahead = lookaheadTypeAndKeyword();\n const hasFrom =\n lookahead.type === tt.name && lookahead.contextualKeyword === ContextualKeyword._from;\n if (lookahead.type === tt.comma) {\n return true;\n }\n // lookahead again when `export default from` is seen\n if (hasFrom) {\n const nextAfterFrom = input.charCodeAt(nextTokenStartSince(_next + 4));\n return nextAfterFrom === charCodes.quotationMark || nextAfterFrom === charCodes.apostrophe;\n }\n return false;\n}\n\nfunction parseExportSpecifiersMaybe() {\n if (eat(tt.comma)) {\n parseExportSpecifiers();\n }\n}\n\nexport function parseExportFrom() {\n if (eatContextual(ContextualKeyword._from)) {\n parseExprAtom();\n maybeParseImportAttributes();\n }\n semicolon();\n}\n\nfunction shouldParseExportStar() {\n if (isFlowEnabled) {\n return flowShouldParseExportStar();\n } else {\n return match(tt.star);\n }\n}\n\nfunction parseExportStar() {\n if (isFlowEnabled) {\n flowParseExportStar();\n } else {\n baseParseExportStar();\n }\n}\n\nexport function baseParseExportStar() {\n expect(tt.star);\n\n if (isContextual(ContextualKeyword._as)) {\n parseExportNamespace();\n } else {\n parseExportFrom();\n }\n}\n\nfunction parseExportNamespace() {\n next();\n state.tokens[state.tokens.length - 1].type = tt._as;\n parseIdentifier();\n parseExportSpecifiersMaybe();\n parseExportFrom();\n}\n\nfunction shouldParseExportDeclaration() {\n return (\n (isTypeScriptEnabled && tsIsDeclarationStart()) ||\n (isFlowEnabled && flowShouldParseExportDeclaration()) ||\n state.type === tt._var ||\n state.type === tt._const ||\n state.type === tt._let ||\n state.type === tt._function ||\n state.type === tt._class ||\n isContextual(ContextualKeyword._async) ||\n match(tt.at)\n );\n}\n\n// Parses a comma-separated list of module exports.\nexport function parseExportSpecifiers() {\n let first = true;\n\n // export { x, y as z } [from '...']\n expect(tt.braceL);\n\n while (!eat(tt.braceR) && !state.error) {\n if (first) {\n first = false;\n } else {\n expect(tt.comma);\n if (eat(tt.braceR)) {\n break;\n }\n }\n parseExportSpecifier();\n }\n}\n\nfunction parseExportSpecifier() {\n if (isTypeScriptEnabled) {\n tsParseExportSpecifier();\n return;\n }\n parseIdentifier();\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ExportAccess;\n if (eatContextual(ContextualKeyword._as)) {\n parseIdentifier();\n }\n}\n\n/**\n * Starting at the `module` token in an import, determine if it was truly an\n * import reflection token or just looks like one.\n *\n * Returns true for:\n * import module foo from \"foo\";\n * import module from from \"foo\";\n *\n * Returns false for:\n * import module from \"foo\";\n * import module, {bar} from \"foo\";\n */\nfunction isImportReflection() {\n const snapshot = state.snapshot();\n expectContextual(ContextualKeyword._module);\n if (eatContextual(ContextualKeyword._from)) {\n if (isContextual(ContextualKeyword._from)) {\n state.restoreFromSnapshot(snapshot);\n return true;\n } else {\n state.restoreFromSnapshot(snapshot);\n return false;\n }\n } else if (match(tt.comma)) {\n state.restoreFromSnapshot(snapshot);\n return false;\n } else {\n state.restoreFromSnapshot(snapshot);\n return true;\n }\n}\n\n/**\n * Eat the \"module\" token from the import reflection proposal.\n * https://github.com/tc39/proposal-import-reflection\n */\nfunction parseMaybeImportReflection() {\n // isImportReflection does snapshot/restore, so only run it if we see the word\n // \"module\".\n if (isContextual(ContextualKeyword._module) && isImportReflection()) {\n next();\n }\n}\n\n// Parses import declaration.\n\nexport function parseImport() {\n if (isTypeScriptEnabled && match(tt.name) && lookaheadType() === tt.eq) {\n tsParseImportEqualsDeclaration();\n return;\n }\n if (isTypeScriptEnabled && isContextual(ContextualKeyword._type)) {\n const lookahead = lookaheadTypeAndKeyword();\n if (lookahead.type === tt.name && lookahead.contextualKeyword !== ContextualKeyword._from) {\n // One of these `import type` cases:\n // import type T = require('T');\n // import type A from 'A';\n expectContextual(ContextualKeyword._type);\n if (lookaheadType() === tt.eq) {\n tsParseImportEqualsDeclaration();\n return;\n }\n // If this is an `import type...from` statement, then we already ate the\n // type token, so proceed to the regular import parser.\n } else if (lookahead.type === tt.star || lookahead.type === tt.braceL) {\n // One of these `import type` cases, in which case we can eat the type token\n // and proceed as normal:\n // import type * as A from 'A';\n // import type {a} from 'A';\n expectContextual(ContextualKeyword._type);\n }\n // Otherwise, we are importing the name \"type\".\n }\n\n // import '...'\n if (match(tt.string)) {\n parseExprAtom();\n } else {\n parseMaybeImportReflection();\n parseImportSpecifiers();\n expectContextual(ContextualKeyword._from);\n parseExprAtom();\n }\n maybeParseImportAttributes();\n semicolon();\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction shouldParseDefaultImport() {\n return match(tt.name);\n}\n\nfunction parseImportSpecifierLocal() {\n parseImportedIdentifier();\n}\n\n// Parses a comma-separated list of module imports.\nfunction parseImportSpecifiers() {\n if (isFlowEnabled) {\n flowStartParseImportSpecifiers();\n }\n\n let first = true;\n if (shouldParseDefaultImport()) {\n // import defaultObj, { x, y as z } from '...'\n parseImportSpecifierLocal();\n\n if (!eat(tt.comma)) return;\n }\n\n if (match(tt.star)) {\n next();\n expectContextual(ContextualKeyword._as);\n\n parseImportSpecifierLocal();\n\n return;\n }\n\n expect(tt.braceL);\n while (!eat(tt.braceR) && !state.error) {\n if (first) {\n first = false;\n } else {\n // Detect an attempt to deep destructure\n if (eat(tt.colon)) {\n unexpected(\n \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n );\n }\n\n expect(tt.comma);\n if (eat(tt.braceR)) {\n break;\n }\n }\n\n parseImportSpecifier();\n }\n}\n\nfunction parseImportSpecifier() {\n if (isTypeScriptEnabled) {\n tsParseImportSpecifier();\n return;\n }\n if (isFlowEnabled) {\n flowParseImportSpecifier();\n return;\n }\n parseImportedIdentifier();\n if (isContextual(ContextualKeyword._as)) {\n state.tokens[state.tokens.length - 1].identifierRole = IdentifierRole.ImportAccess;\n next();\n parseImportedIdentifier();\n }\n}\n\n/**\n * Parse import attributes like `with {type: \"json\"}`, or the legacy form\n * `assert {type: \"json\"}`.\n *\n * Import attributes technically have their own syntax, but are always parseable\n * as a plain JS object, so just do that for simplicity.\n */\nfunction maybeParseImportAttributes() {\n if (match(tt._with) || (isContextual(ContextualKeyword._assert) && !hasPrecedingLineBreak())) {\n next();\n parseObj(false, false);\n }\n}\n", "\nimport {nextToken, skipLineComment} from \"../tokenizer/index\";\nimport {charCodes} from \"../util/charcodes\";\nimport {input, state} from \"./base\";\nimport {parseTopLevel} from \"./statement\";\n\nexport function parseFile() {\n // If enabled, skip leading hashbang line.\n if (\n state.pos === 0 &&\n input.charCodeAt(0) === charCodes.numberSign &&\n input.charCodeAt(1) === charCodes.exclamationMark\n ) {\n skipLineComment(2);\n }\n nextToken();\n return parseTopLevel();\n}\n", "\n\nimport {augmentError, initParser, state} from \"./traverser/base\";\nimport {parseFile} from \"./traverser/index\";\n\nexport class File {\n \n \n\n constructor(tokens, scopes) {\n this.tokens = tokens;\n this.scopes = scopes;\n }\n}\n\nexport function parse(\n input,\n isJSXEnabled,\n isTypeScriptEnabled,\n isFlowEnabled,\n) {\n if (isFlowEnabled && isTypeScriptEnabled) {\n throw new Error(\"Cannot combine flow and typescript plugins.\");\n }\n initParser(input, isJSXEnabled, isTypeScriptEnabled, isFlowEnabled);\n const result = parseFile();\n if (state.error) {\n throw augmentError(state.error);\n }\n return result;\n}\n", "import {ContextualKeyword} from \"../parser/tokenizer/keywords\";\n\n\n/**\n * Determine whether this optional chain or nullish coalescing operation has any await statements in\n * it. If so, we'll need to transpile to an async operation.\n *\n * We compute this by walking the length of the operation and returning true if we see an await\n * keyword used as a real await (rather than an object key or property access). Nested optional\n * chain/nullish operations need to be tracked but don't silence await, but a nested async function\n * (or any other nested scope) will make the await not count.\n */\nexport default function isAsyncOperation(tokens) {\n let index = tokens.currentIndex();\n let depth = 0;\n const startToken = tokens.currentToken();\n do {\n const token = tokens.tokens[index];\n if (token.isOptionalChainStart) {\n depth++;\n }\n if (token.isOptionalChainEnd) {\n depth--;\n }\n depth += token.numNullishCoalesceStarts;\n depth -= token.numNullishCoalesceEnds;\n\n if (\n token.contextualKeyword === ContextualKeyword._await &&\n token.identifierRole == null &&\n token.scopeDepth === startToken.scopeDepth\n ) {\n return true;\n }\n index += 1;\n } while (depth > 0 && index < tokens.tokens.length);\n return false;\n}\n", "\n\n\nimport { TokenType as tt} from \"./parser/tokenizer/types\";\nimport isAsyncOperation from \"./util/isAsyncOperation\";\n\n\n\n\n\n\n\n\n\n\n\nexport default class TokenProcessor {\n __init() {this.resultCode = \"\"}\n // Array mapping input token index to optional string index position in the\n // output code.\n __init2() {this.resultMappings = new Array(this.tokens.length)}\n __init3() {this.tokenIndex = 0}\n\n constructor(\n code,\n tokens,\n isFlowEnabled,\n disableESTransforms,\n helperManager,\n ) {;this.code = code;this.tokens = tokens;this.isFlowEnabled = isFlowEnabled;this.disableESTransforms = disableESTransforms;this.helperManager = helperManager;TokenProcessor.prototype.__init.call(this);TokenProcessor.prototype.__init2.call(this);TokenProcessor.prototype.__init3.call(this);}\n\n /**\n * Snapshot the token state in a way that can be restored later, useful for\n * things like lookahead.\n *\n * resultMappings do not need to be copied since in all use cases, they will\n * be overwritten anyway after restore.\n */\n snapshot() {\n return {\n resultCode: this.resultCode,\n tokenIndex: this.tokenIndex,\n };\n }\n\n restoreToSnapshot(snapshot) {\n this.resultCode = snapshot.resultCode;\n this.tokenIndex = snapshot.tokenIndex;\n }\n\n /**\n * Remove and return the code generated since the snapshot, leaving the\n * current token position in-place. Unlike most TokenProcessor operations,\n * this operation can result in input/output line number mismatches because\n * the removed code may contain newlines, so this operation should be used\n * sparingly.\n */\n dangerouslyGetAndRemoveCodeSinceSnapshot(snapshot) {\n const result = this.resultCode.slice(snapshot.resultCode.length);\n this.resultCode = snapshot.resultCode;\n return result;\n }\n\n reset() {\n this.resultCode = \"\";\n this.resultMappings = new Array(this.tokens.length);\n this.tokenIndex = 0;\n }\n\n matchesContextualAtIndex(index, contextualKeyword) {\n return (\n this.matches1AtIndex(index, tt.name) &&\n this.tokens[index].contextualKeyword === contextualKeyword\n );\n }\n\n identifierNameAtIndex(index) {\n // TODO: We need to process escapes since technically you can have unicode escapes in variable\n // names.\n return this.identifierNameForToken(this.tokens[index]);\n }\n\n identifierNameAtRelativeIndex(relativeIndex) {\n return this.identifierNameForToken(this.tokenAtRelativeIndex(relativeIndex));\n }\n\n identifierName() {\n return this.identifierNameForToken(this.currentToken());\n }\n\n identifierNameForToken(token) {\n return this.code.slice(token.start, token.end);\n }\n\n rawCodeForToken(token) {\n return this.code.slice(token.start, token.end);\n }\n\n stringValueAtIndex(index) {\n return this.stringValueForToken(this.tokens[index]);\n }\n\n stringValue() {\n return this.stringValueForToken(this.currentToken());\n }\n\n stringValueForToken(token) {\n // This is used to identify when two imports are the same and to resolve TypeScript enum keys.\n // Ideally we'd process escapes within the strings, but for now we pretty much take the raw\n // code.\n return this.code.slice(token.start + 1, token.end - 1);\n }\n\n matches1AtIndex(index, t1) {\n return this.tokens[index].type === t1;\n }\n\n matches2AtIndex(index, t1, t2) {\n return this.tokens[index].type === t1 && this.tokens[index + 1].type === t2;\n }\n\n matches3AtIndex(index, t1, t2, t3) {\n return (\n this.tokens[index].type === t1 &&\n this.tokens[index + 1].type === t2 &&\n this.tokens[index + 2].type === t3\n );\n }\n\n matches1(t1) {\n return this.tokens[this.tokenIndex].type === t1;\n }\n\n matches2(t1, t2) {\n return this.tokens[this.tokenIndex].type === t1 && this.tokens[this.tokenIndex + 1].type === t2;\n }\n\n matches3(t1, t2, t3) {\n return (\n this.tokens[this.tokenIndex].type === t1 &&\n this.tokens[this.tokenIndex + 1].type === t2 &&\n this.tokens[this.tokenIndex + 2].type === t3\n );\n }\n\n matches4(t1, t2, t3, t4) {\n return (\n this.tokens[this.tokenIndex].type === t1 &&\n this.tokens[this.tokenIndex + 1].type === t2 &&\n this.tokens[this.tokenIndex + 2].type === t3 &&\n this.tokens[this.tokenIndex + 3].type === t4\n );\n }\n\n matches5(t1, t2, t3, t4, t5) {\n return (\n this.tokens[this.tokenIndex].type === t1 &&\n this.tokens[this.tokenIndex + 1].type === t2 &&\n this.tokens[this.tokenIndex + 2].type === t3 &&\n this.tokens[this.tokenIndex + 3].type === t4 &&\n this.tokens[this.tokenIndex + 4].type === t5\n );\n }\n\n matchesContextual(contextualKeyword) {\n return this.matchesContextualAtIndex(this.tokenIndex, contextualKeyword);\n }\n\n matchesContextIdAndLabel(type, contextId) {\n return this.matches1(type) && this.currentToken().contextId === contextId;\n }\n\n previousWhitespaceAndComments() {\n let whitespaceAndComments = this.code.slice(\n this.tokenIndex > 0 ? this.tokens[this.tokenIndex - 1].end : 0,\n this.tokenIndex < this.tokens.length ? this.tokens[this.tokenIndex].start : this.code.length,\n );\n if (this.isFlowEnabled) {\n whitespaceAndComments = whitespaceAndComments.replace(/@flow/g, \"\");\n }\n return whitespaceAndComments;\n }\n\n replaceToken(newCode) {\n this.resultCode += this.previousWhitespaceAndComments();\n this.appendTokenPrefix();\n this.resultMappings[this.tokenIndex] = this.resultCode.length;\n this.resultCode += newCode;\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n replaceTokenTrimmingLeftWhitespace(newCode) {\n this.resultCode += this.previousWhitespaceAndComments().replace(/[^\\r\\n]/g, \"\");\n this.appendTokenPrefix();\n this.resultMappings[this.tokenIndex] = this.resultCode.length;\n this.resultCode += newCode;\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n removeInitialToken() {\n this.replaceToken(\"\");\n }\n\n removeToken() {\n this.replaceTokenTrimmingLeftWhitespace(\"\");\n }\n\n /**\n * Remove all code until the next }, accounting for balanced braces.\n */\n removeBalancedCode() {\n let braceDepth = 0;\n while (!this.isAtEnd()) {\n if (this.matches1(tt.braceL)) {\n braceDepth++;\n } else if (this.matches1(tt.braceR)) {\n if (braceDepth === 0) {\n return;\n }\n braceDepth--;\n }\n this.removeToken();\n }\n }\n\n copyExpectedToken(tokenType) {\n if (this.tokens[this.tokenIndex].type !== tokenType) {\n throw new Error(`Expected token ${tokenType}`);\n }\n this.copyToken();\n }\n\n copyToken() {\n this.resultCode += this.previousWhitespaceAndComments();\n this.appendTokenPrefix();\n this.resultMappings[this.tokenIndex] = this.resultCode.length;\n this.resultCode += this.code.slice(\n this.tokens[this.tokenIndex].start,\n this.tokens[this.tokenIndex].end,\n );\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n copyTokenWithPrefix(prefix) {\n this.resultCode += this.previousWhitespaceAndComments();\n this.appendTokenPrefix();\n this.resultCode += prefix;\n this.resultMappings[this.tokenIndex] = this.resultCode.length;\n this.resultCode += this.code.slice(\n this.tokens[this.tokenIndex].start,\n this.tokens[this.tokenIndex].end,\n );\n this.appendTokenSuffix();\n this.tokenIndex++;\n }\n\n appendTokenPrefix() {\n const token = this.currentToken();\n if (token.numNullishCoalesceStarts || token.isOptionalChainStart) {\n token.isAsyncOperation = isAsyncOperation(this);\n }\n if (this.disableESTransforms) {\n return;\n }\n if (token.numNullishCoalesceStarts) {\n for (let i = 0; i < token.numNullishCoalesceStarts; i++) {\n if (token.isAsyncOperation) {\n this.resultCode += \"await \";\n this.resultCode += this.helperManager.getHelperName(\"asyncNullishCoalesce\");\n } else {\n this.resultCode += this.helperManager.getHelperName(\"nullishCoalesce\");\n }\n this.resultCode += \"(\";\n }\n }\n if (token.isOptionalChainStart) {\n if (token.isAsyncOperation) {\n this.resultCode += \"await \";\n }\n if (this.tokenIndex > 0 && this.tokenAtRelativeIndex(-1).type === tt._delete) {\n if (token.isAsyncOperation) {\n this.resultCode += this.helperManager.getHelperName(\"asyncOptionalChainDelete\");\n } else {\n this.resultCode += this.helperManager.getHelperName(\"optionalChainDelete\");\n }\n } else if (token.isAsyncOperation) {\n this.resultCode += this.helperManager.getHelperName(\"asyncOptionalChain\");\n } else {\n this.resultCode += this.helperManager.getHelperName(\"optionalChain\");\n }\n this.resultCode += \"([\";\n }\n }\n\n appendTokenSuffix() {\n const token = this.currentToken();\n if (token.isOptionalChainEnd && !this.disableESTransforms) {\n this.resultCode += \"])\";\n }\n if (token.numNullishCoalesceEnds && !this.disableESTransforms) {\n for (let i = 0; i < token.numNullishCoalesceEnds; i++) {\n this.resultCode += \"))\";\n }\n }\n }\n\n appendCode(code) {\n this.resultCode += code;\n }\n\n currentToken() {\n return this.tokens[this.tokenIndex];\n }\n\n currentTokenCode() {\n const token = this.currentToken();\n return this.code.slice(token.start, token.end);\n }\n\n tokenAtRelativeIndex(relativeIndex) {\n return this.tokens[this.tokenIndex + relativeIndex];\n }\n\n currentIndex() {\n return this.tokenIndex;\n }\n\n /**\n * Move to the next token. Only suitable in preprocessing steps. When\n * generating new code, you should use copyToken or removeToken.\n */\n nextToken() {\n if (this.tokenIndex === this.tokens.length) {\n throw new Error(\"Unexpectedly reached end of input.\");\n }\n this.tokenIndex++;\n }\n\n previousToken() {\n this.tokenIndex--;\n }\n\n finish() {\n if (this.tokenIndex !== this.tokens.length) {\n throw new Error(\"Tried to finish processing tokens before reaching the end.\");\n }\n this.resultCode += this.previousWhitespaceAndComments();\n return {code: this.resultCode, mappings: this.resultMappings};\n }\n\n isAtEnd() {\n return this.tokenIndex === this.tokens.length;\n }\n}\n", "\n\nimport {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Get information about the class fields for this class, given a token processor pointing to the\n * open-brace at the start of the class.\n */\nexport default function getClassInfo(\n rootTransformer,\n tokens,\n nameManager,\n disableESTransforms,\n) {\n const snapshot = tokens.snapshot();\n\n const headerInfo = processClassHeader(tokens);\n\n let constructorInitializerStatements = [];\n const instanceInitializerNames = [];\n const staticInitializerNames = [];\n let constructorInsertPos = null;\n const fields = [];\n const rangesToRemove = [];\n\n const classContextId = tokens.currentToken().contextId;\n if (classContextId == null) {\n throw new Error(\"Expected non-null class context ID on class open-brace.\");\n }\n\n tokens.nextToken();\n while (!tokens.matchesContextIdAndLabel(tt.braceR, classContextId)) {\n if (tokens.matchesContextual(ContextualKeyword._constructor) && !tokens.currentToken().isType) {\n ({constructorInitializerStatements, constructorInsertPos} = processConstructor(tokens));\n } else if (tokens.matches1(tt.semi)) {\n if (!disableESTransforms) {\n rangesToRemove.push({start: tokens.currentIndex(), end: tokens.currentIndex() + 1});\n }\n tokens.nextToken();\n } else if (tokens.currentToken().isType) {\n tokens.nextToken();\n } else {\n // Either a method or a field. Skip to the identifier part.\n const statementStartIndex = tokens.currentIndex();\n let isStatic = false;\n let isESPrivate = false;\n let isDeclareOrAbstract = false;\n while (isAccessModifier(tokens.currentToken())) {\n if (tokens.matches1(tt._static)) {\n isStatic = true;\n }\n if (tokens.matches1(tt.hash)) {\n isESPrivate = true;\n }\n if (tokens.matches1(tt._declare) || tokens.matches1(tt._abstract)) {\n isDeclareOrAbstract = true;\n }\n tokens.nextToken();\n }\n if (isStatic && tokens.matches1(tt.braceL)) {\n // This is a static block, so don't process it in any special way.\n skipToNextClassElement(tokens, classContextId);\n continue;\n }\n if (isESPrivate) {\n // Sucrase doesn't attempt to transpile private fields; just leave them as-is.\n skipToNextClassElement(tokens, classContextId);\n continue;\n }\n if (\n tokens.matchesContextual(ContextualKeyword._constructor) &&\n !tokens.currentToken().isType\n ) {\n ({constructorInitializerStatements, constructorInsertPos} = processConstructor(tokens));\n continue;\n }\n\n const nameStartIndex = tokens.currentIndex();\n skipFieldName(tokens);\n if (tokens.matches1(tt.lessThan) || tokens.matches1(tt.parenL)) {\n // This is a method, so nothing to process.\n skipToNextClassElement(tokens, classContextId);\n continue;\n }\n // There might be a type annotation that we need to skip.\n while (tokens.currentToken().isType) {\n tokens.nextToken();\n }\n if (tokens.matches1(tt.eq)) {\n const equalsIndex = tokens.currentIndex();\n // This is an initializer, so we need to wrap in an initializer method.\n const valueEnd = tokens.currentToken().rhsEndIndex;\n if (valueEnd == null) {\n throw new Error(\"Expected rhsEndIndex on class field assignment.\");\n }\n tokens.nextToken();\n while (tokens.currentIndex() < valueEnd) {\n rootTransformer.processToken();\n }\n let initializerName;\n if (isStatic) {\n initializerName = nameManager.claimFreeName(\"__initStatic\");\n staticInitializerNames.push(initializerName);\n } else {\n initializerName = nameManager.claimFreeName(\"__init\");\n instanceInitializerNames.push(initializerName);\n }\n // Fields start at the name, so `static x = 1;` has a field range of `x = 1;`.\n fields.push({\n initializerName,\n equalsIndex,\n start: nameStartIndex,\n end: tokens.currentIndex(),\n });\n } else if (!disableESTransforms || isDeclareOrAbstract) {\n // This is a regular field declaration, like `x;`. With the class transform enabled, we just\n // remove the line so that no output is produced. With the class transform disabled, we\n // usually want to preserve the declaration (but still strip types), but if the `declare`\n // or `abstract` keyword is specified, we should remove the line to avoid initializing the\n // value to undefined.\n rangesToRemove.push({start: statementStartIndex, end: tokens.currentIndex()});\n }\n }\n }\n\n tokens.restoreToSnapshot(snapshot);\n if (disableESTransforms) {\n // With ES transforms disabled, we don't want to transform regular class\n // field declarations, and we don't need to do any additional tricks to\n // reference the constructor for static init, but we still need to transform\n // TypeScript field initializers defined as constructor parameters and we\n // still need to remove `declare` fields. For now, we run the same code\n // path but omit any field information, as if the class had no field\n // declarations. In the future, when we fully drop the class fields\n // transform, we can simplify this code significantly.\n return {\n headerInfo,\n constructorInitializerStatements,\n instanceInitializerNames: [],\n staticInitializerNames: [],\n constructorInsertPos,\n fields: [],\n rangesToRemove,\n };\n } else {\n return {\n headerInfo,\n constructorInitializerStatements,\n instanceInitializerNames,\n staticInitializerNames,\n constructorInsertPos,\n fields,\n rangesToRemove,\n };\n }\n}\n\n/**\n * Move the token processor to the next method/field in the class.\n *\n * To do that, we seek forward to the next start of a class name (either an open\n * bracket or an identifier, or the closing curly brace), then seek backward to\n * include any access modifiers.\n */\nfunction skipToNextClassElement(tokens, classContextId) {\n tokens.nextToken();\n while (tokens.currentToken().contextId !== classContextId) {\n tokens.nextToken();\n }\n while (isAccessModifier(tokens.tokenAtRelativeIndex(-1))) {\n tokens.previousToken();\n }\n}\n\nfunction processClassHeader(tokens) {\n const classToken = tokens.currentToken();\n const contextId = classToken.contextId;\n if (contextId == null) {\n throw new Error(\"Expected context ID on class token.\");\n }\n const isExpression = classToken.isExpression;\n if (isExpression == null) {\n throw new Error(\"Expected isExpression on class token.\");\n }\n let className = null;\n let hasSuperclass = false;\n tokens.nextToken();\n if (tokens.matches1(tt.name)) {\n className = tokens.identifierName();\n }\n while (!tokens.matchesContextIdAndLabel(tt.braceL, contextId)) {\n // If this has a superclass, there will always be an `extends` token. If it doesn't have a\n // superclass, only type parameters and `implements` clauses can show up here, all of which\n // consist only of type tokens. A declaration like `class A<B extends C> {` should *not* count\n // as having a superclass.\n if (tokens.matches1(tt._extends) && !tokens.currentToken().isType) {\n hasSuperclass = true;\n }\n tokens.nextToken();\n }\n return {isExpression, className, hasSuperclass};\n}\n\n/**\n * Extract useful information out of a constructor, starting at the \"constructor\" name.\n */\nfunction processConstructor(tokens)\n\n\n {\n const constructorInitializerStatements = [];\n\n tokens.nextToken();\n const constructorContextId = tokens.currentToken().contextId;\n if (constructorContextId == null) {\n throw new Error(\"Expected context ID on open-paren starting constructor params.\");\n }\n // Advance through parameters looking for access modifiers.\n while (!tokens.matchesContextIdAndLabel(tt.parenR, constructorContextId)) {\n if (tokens.currentToken().contextId === constructorContextId) {\n // Current token is an open paren or comma just before a param, so check\n // that param for access modifiers.\n tokens.nextToken();\n if (isAccessModifier(tokens.currentToken())) {\n tokens.nextToken();\n while (isAccessModifier(tokens.currentToken())) {\n tokens.nextToken();\n }\n const token = tokens.currentToken();\n if (token.type !== tt.name) {\n throw new Error(\"Expected identifier after access modifiers in constructor arg.\");\n }\n const name = tokens.identifierNameForToken(token);\n constructorInitializerStatements.push(`this.${name} = ${name}`);\n }\n } else {\n tokens.nextToken();\n }\n }\n // )\n tokens.nextToken();\n // Constructor type annotations are invalid, but skip them anyway since\n // they're easy to skip.\n while (tokens.currentToken().isType) {\n tokens.nextToken();\n }\n let constructorInsertPos = tokens.currentIndex();\n\n // Advance through body looking for a super call.\n let foundSuperCall = false;\n while (!tokens.matchesContextIdAndLabel(tt.braceR, constructorContextId)) {\n if (!foundSuperCall && tokens.matches2(tt._super, tt.parenL)) {\n tokens.nextToken();\n const superCallContextId = tokens.currentToken().contextId;\n if (superCallContextId == null) {\n throw new Error(\"Expected a context ID on the super call\");\n }\n while (!tokens.matchesContextIdAndLabel(tt.parenR, superCallContextId)) {\n tokens.nextToken();\n }\n constructorInsertPos = tokens.currentIndex();\n foundSuperCall = true;\n }\n tokens.nextToken();\n }\n // }\n tokens.nextToken();\n\n return {constructorInitializerStatements, constructorInsertPos};\n}\n\n/**\n * Determine if this is any token that can go before the name in a method/field.\n */\nfunction isAccessModifier(token) {\n return [\n tt._async,\n tt._get,\n tt._set,\n tt.plus,\n tt.minus,\n tt._readonly,\n tt._static,\n tt._public,\n tt._private,\n tt._protected,\n tt._override,\n tt._abstract,\n tt.star,\n tt._declare,\n tt.hash,\n ].includes(token.type);\n}\n\n/**\n * The next token or set of tokens is either an identifier or an expression in square brackets, for\n * a method or field name.\n */\nfunction skipFieldName(tokens) {\n if (tokens.matches1(tt.bracketL)) {\n const startToken = tokens.currentToken();\n const classContextId = startToken.contextId;\n if (classContextId == null) {\n throw new Error(\"Expected class context ID on computed name open bracket.\");\n }\n while (!tokens.matchesContextIdAndLabel(tt.bracketR, classContextId)) {\n tokens.nextToken();\n }\n tokens.nextToken();\n } else {\n tokens.nextToken();\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\nexport default function elideImportEquals(tokens) {\n // import\n tokens.removeInitialToken();\n // name\n tokens.removeToken();\n // =\n tokens.removeToken();\n // name or require\n tokens.removeToken();\n // Handle either `import A = require('A')` or `import A = B.C.D`.\n if (tokens.matches1(tt.parenL)) {\n // (\n tokens.removeToken();\n // path string\n tokens.removeToken();\n // )\n tokens.removeToken();\n } else {\n while (tokens.matches1(tt.dot)) {\n // .\n tokens.removeToken();\n // name\n tokens.removeToken();\n }\n }\n}\n", "import {isTopLevelDeclaration} from \"../parser/tokenizer\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n\n\n\n\n\nexport const EMPTY_DECLARATION_INFO = {\n typeDeclarations: new Set(),\n valueDeclarations: new Set(),\n};\n\n/**\n * Get all top-level identifiers that should be preserved when exported in TypeScript.\n *\n * Examples:\n * - If an identifier is declared as `const x`, then `export {x}` should be preserved.\n * - If it's declared as `type x`, then `export {x}` should be removed.\n * - If it's declared as both `const x` and `type x`, then the export should be preserved.\n * - Classes and enums should be preserved (even though they also introduce types).\n * - Imported identifiers should be preserved since we don't have enough information to\n * rule them out. --isolatedModules disallows re-exports, which catches errors here.\n */\nexport default function getDeclarationInfo(tokens) {\n const typeDeclarations = new Set();\n const valueDeclarations = new Set();\n for (let i = 0; i < tokens.tokens.length; i++) {\n const token = tokens.tokens[i];\n if (token.type === tt.name && isTopLevelDeclaration(token)) {\n if (token.isType) {\n typeDeclarations.add(tokens.identifierNameForToken(token));\n } else {\n valueDeclarations.add(tokens.identifierNameForToken(token));\n }\n }\n }\n return {typeDeclarations, valueDeclarations};\n}\n", "import {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n/**\n * Starting at `export {`, look ahead and return `true` if this is an\n * `export {...} from` statement and `false` if this is a plain multi-export.\n */\nexport default function isExportFrom(tokens) {\n let closeBraceIndex = tokens.currentIndex();\n while (!tokens.matches1AtIndex(closeBraceIndex, tt.braceR)) {\n closeBraceIndex++;\n }\n return (\n tokens.matchesContextualAtIndex(closeBraceIndex + 1, ContextualKeyword._from) &&\n tokens.matches1AtIndex(closeBraceIndex + 2, tt.string)\n );\n}\n", "import {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n/**\n * Starting at a potential `with` or (legacy) `assert` token, remove the import\n * attributes if they exist.\n */\nexport function removeMaybeImportAttributes(tokens) {\n if (\n tokens.matches2(tt._with, tt.braceL) ||\n (tokens.matches2(tt.name, tt.braceL) && tokens.matchesContextual(ContextualKeyword._assert))\n ) {\n // assert\n tokens.removeToken();\n // {\n tokens.removeToken();\n tokens.removeBalancedCode();\n // }\n tokens.removeToken();\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\n\n/**\n * Common method sharing code between CJS and ESM cases, since they're the same here.\n */\nexport default function shouldElideDefaultExport(\n isTypeScriptTransformEnabled,\n keepUnusedImports,\n tokens,\n declarationInfo,\n) {\n if (!isTypeScriptTransformEnabled || keepUnusedImports) {\n return false;\n }\n const exportToken = tokens.currentToken();\n if (exportToken.rhsEndIndex == null) {\n throw new Error(\"Expected non-null rhsEndIndex on export token.\");\n }\n // The export must be of the form `export default a` or `export default a;`.\n const numTokens = exportToken.rhsEndIndex - tokens.currentIndex();\n if (\n numTokens !== 3 &&\n !(numTokens === 4 && tokens.matches1AtIndex(exportToken.rhsEndIndex - 1, tt.semi))\n ) {\n return false;\n }\n const identifierToken = tokens.tokenAtRelativeIndex(2);\n if (identifierToken.type !== tt.name) {\n return false;\n }\n const exportedName = tokens.identifierNameForToken(identifierToken);\n return (\n declarationInfo.typeDeclarations.has(exportedName) &&\n !declarationInfo.valueDeclarations.has(exportedName)\n );\n}\n", "\n\n\nimport {IdentifierRole, isDeclaration, isObjectShorthandDeclaration} from \"../parser/tokenizer\";\nimport {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport elideImportEquals from \"../util/elideImportEquals\";\nimport getDeclarationInfo, {\n\n EMPTY_DECLARATION_INFO,\n} from \"../util/getDeclarationInfo\";\nimport getImportExportSpecifierInfo from \"../util/getImportExportSpecifierInfo\";\nimport isExportFrom from \"../util/isExportFrom\";\nimport {removeMaybeImportAttributes} from \"../util/removeMaybeImportAttributes\";\nimport shouldElideDefaultExport from \"../util/shouldElideDefaultExport\";\n\n\nimport Transformer from \"./Transformer\";\n\n/**\n * Class for editing import statements when we are transforming to commonjs.\n */\nexport default class CJSImportTransformer extends Transformer {\n __init() {this.hadExport = false}\n __init2() {this.hadNamedExport = false}\n __init3() {this.hadDefaultExport = false}\n \n\n constructor(\n rootTransformer,\n tokens,\n importProcessor,\n nameManager,\n helperManager,\n reactHotLoaderTransformer,\n enableLegacyBabel5ModuleInterop,\n enableLegacyTypeScriptModuleInterop,\n isTypeScriptTransformEnabled,\n isFlowTransformEnabled,\n preserveDynamicImport,\n keepUnusedImports,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.importProcessor = importProcessor;this.nameManager = nameManager;this.helperManager = helperManager;this.reactHotLoaderTransformer = reactHotLoaderTransformer;this.enableLegacyBabel5ModuleInterop = enableLegacyBabel5ModuleInterop;this.enableLegacyTypeScriptModuleInterop = enableLegacyTypeScriptModuleInterop;this.isTypeScriptTransformEnabled = isTypeScriptTransformEnabled;this.isFlowTransformEnabled = isFlowTransformEnabled;this.preserveDynamicImport = preserveDynamicImport;this.keepUnusedImports = keepUnusedImports;CJSImportTransformer.prototype.__init.call(this);CJSImportTransformer.prototype.__init2.call(this);CJSImportTransformer.prototype.__init3.call(this);;\n this.declarationInfo = isTypeScriptTransformEnabled\n ? getDeclarationInfo(tokens)\n : EMPTY_DECLARATION_INFO;\n }\n\n getPrefixCode() {\n let prefix = \"\";\n if (this.hadExport) {\n prefix += 'Object.defineProperty(exports, \"__esModule\", {value: true});';\n }\n return prefix;\n }\n\n getSuffixCode() {\n if (this.enableLegacyBabel5ModuleInterop && this.hadDefaultExport && !this.hadNamedExport) {\n return \"\\nmodule.exports = exports.default;\\n\";\n }\n return \"\";\n }\n\n process() {\n // TypeScript `import foo = require('foo');` should always just be translated to plain require.\n if (this.tokens.matches3(tt._import, tt.name, tt.eq)) {\n return this.processImportEquals();\n }\n if (this.tokens.matches1(tt._import)) {\n this.processImport();\n return true;\n }\n if (this.tokens.matches2(tt._export, tt.eq)) {\n this.tokens.replaceToken(\"module.exports\");\n return true;\n }\n if (this.tokens.matches1(tt._export) && !this.tokens.currentToken().isType) {\n this.hadExport = true;\n return this.processExport();\n }\n if (this.tokens.matches2(tt.name, tt.postIncDec)) {\n // Fall through to normal identifier matching if this doesn't apply.\n if (this.processPostIncDec()) {\n return true;\n }\n }\n if (this.tokens.matches1(tt.name) || this.tokens.matches1(tt.jsxName)) {\n return this.processIdentifier();\n }\n if (this.tokens.matches1(tt.eq)) {\n return this.processAssignment();\n }\n if (this.tokens.matches1(tt.assign)) {\n return this.processComplexAssignment();\n }\n if (this.tokens.matches1(tt.preIncDec)) {\n return this.processPreIncDec();\n }\n return false;\n }\n\n processImportEquals() {\n const importName = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n if (this.importProcessor.shouldAutomaticallyElideImportedName(importName)) {\n // If this name is only used as a type, elide the whole import.\n elideImportEquals(this.tokens);\n } else {\n // Otherwise, switch `import` to `const`.\n this.tokens.replaceToken(\"const\");\n }\n return true;\n }\n\n /**\n * Transform this:\n * import foo, {bar} from 'baz';\n * into\n * var _baz = require('baz'); var _baz2 = _interopRequireDefault(_baz);\n *\n * The import code was already generated in the import preprocessing step, so\n * we just need to look it up.\n */\n processImport() {\n if (this.tokens.matches2(tt._import, tt.parenL)) {\n if (this.preserveDynamicImport) {\n // Bail out, only making progress for this one token.\n this.tokens.copyToken();\n return;\n }\n const requireWrapper = this.enableLegacyTypeScriptModuleInterop\n ? \"\"\n : `${this.helperManager.getHelperName(\"interopRequireWildcard\")}(`;\n this.tokens.replaceToken(`Promise.resolve().then(() => ${requireWrapper}require`);\n const contextId = this.tokens.currentToken().contextId;\n if (contextId == null) {\n throw new Error(\"Expected context ID on dynamic import invocation.\");\n }\n this.tokens.copyToken();\n while (!this.tokens.matchesContextIdAndLabel(tt.parenR, contextId)) {\n this.rootTransformer.processToken();\n }\n this.tokens.replaceToken(requireWrapper ? \")))\" : \"))\");\n return;\n }\n\n const shouldElideImport = this.removeImportAndDetectIfShouldElide();\n if (shouldElideImport) {\n this.tokens.removeToken();\n } else {\n const path = this.tokens.stringValue();\n this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(path));\n this.tokens.appendCode(this.importProcessor.claimImportCode(path));\n }\n removeMaybeImportAttributes(this.tokens);\n if (this.tokens.matches1(tt.semi)) {\n this.tokens.removeToken();\n }\n }\n\n /**\n * Erase this import (since any CJS output would be completely different), and\n * return true if this import is should be elided due to being a type-only\n * import. Such imports will not be emitted at all to avoid side effects.\n *\n * Import elision only happens with the TypeScript or Flow transforms enabled.\n *\n * TODO: This function has some awkward overlap with\n * CJSImportProcessor.pruneTypeOnlyImports , and the two should be unified.\n * That function handles TypeScript implicit import name elision, and removes\n * an import if all typical imported names (without `type`) are removed due\n * to being type-only imports. This function handles Flow import removal and\n * properly distinguishes `import 'foo'` from `import {} from 'foo'` for TS\n * purposes.\n *\n * The position should end at the import string.\n */\n removeImportAndDetectIfShouldElide() {\n this.tokens.removeInitialToken();\n if (\n this.tokens.matchesContextual(ContextualKeyword._type) &&\n !this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, tt.comma) &&\n !this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._from)\n ) {\n // This is an \"import type\" statement, so exit early.\n this.removeRemainingImport();\n return true;\n }\n\n if (this.tokens.matches1(tt.name) || this.tokens.matches1(tt.star)) {\n // We have a default import or namespace import, so there must be some\n // non-type import.\n this.removeRemainingImport();\n return false;\n }\n\n if (this.tokens.matches1(tt.string)) {\n // This is a bare import, so we should proceed with the import.\n return false;\n }\n\n let foundNonTypeImport = false;\n let foundAnyNamedImport = false;\n while (!this.tokens.matches1(tt.string)) {\n // Check if any named imports are of the form \"foo\" or \"foo as bar\", with\n // no leading \"type\".\n if (\n (!foundNonTypeImport && this.tokens.matches1(tt.braceL)) ||\n this.tokens.matches1(tt.comma)\n ) {\n this.tokens.removeToken();\n if (!this.tokens.matches1(tt.braceR)) {\n foundAnyNamedImport = true;\n }\n if (\n this.tokens.matches2(tt.name, tt.comma) ||\n this.tokens.matches2(tt.name, tt.braceR) ||\n this.tokens.matches4(tt.name, tt.name, tt.name, tt.comma) ||\n this.tokens.matches4(tt.name, tt.name, tt.name, tt.braceR)\n ) {\n foundNonTypeImport = true;\n }\n }\n this.tokens.removeToken();\n }\n if (this.keepUnusedImports) {\n return false;\n }\n if (this.isTypeScriptTransformEnabled) {\n return !foundNonTypeImport;\n } else if (this.isFlowTransformEnabled) {\n // In Flow, unlike TS, `import {} from 'foo';` preserves the import.\n return foundAnyNamedImport && !foundNonTypeImport;\n } else {\n return false;\n }\n }\n\n removeRemainingImport() {\n while (!this.tokens.matches1(tt.string)) {\n this.tokens.removeToken();\n }\n }\n\n processIdentifier() {\n const token = this.tokens.currentToken();\n if (token.shadowsGlobal) {\n return false;\n }\n\n if (token.identifierRole === IdentifierRole.ObjectShorthand) {\n return this.processObjectShorthand();\n }\n\n if (token.identifierRole !== IdentifierRole.Access) {\n return false;\n }\n const replacement = this.importProcessor.getIdentifierReplacement(\n this.tokens.identifierNameForToken(token),\n );\n if (!replacement) {\n return false;\n }\n // Tolerate any number of closing parens while looking for an opening paren\n // that indicates a function call.\n let possibleOpenParenIndex = this.tokens.currentIndex() + 1;\n while (\n possibleOpenParenIndex < this.tokens.tokens.length &&\n this.tokens.tokens[possibleOpenParenIndex].type === tt.parenR\n ) {\n possibleOpenParenIndex++;\n }\n // Avoid treating imported functions as methods of their `exports` object\n // by using `(0, f)` when the identifier is in a paren expression. Else\n // use `Function.prototype.call` when the identifier is a guaranteed\n // function call. When using `call`, pass undefined as the context.\n if (this.tokens.tokens[possibleOpenParenIndex].type === tt.parenL) {\n if (\n this.tokens.tokenAtRelativeIndex(1).type === tt.parenL &&\n this.tokens.tokenAtRelativeIndex(-1).type !== tt._new\n ) {\n this.tokens.replaceToken(`${replacement}.call(void 0, `);\n // Remove the old paren.\n this.tokens.removeToken();\n // Balance out the new paren.\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n } else {\n // See here: http://2ality.com/2015/12/references.html\n this.tokens.replaceToken(`(0, ${replacement})`);\n }\n } else {\n this.tokens.replaceToken(replacement);\n }\n return true;\n }\n\n processObjectShorthand() {\n const identifier = this.tokens.identifierName();\n const replacement = this.importProcessor.getIdentifierReplacement(identifier);\n if (!replacement) {\n return false;\n }\n this.tokens.replaceToken(`${identifier}: ${replacement}`);\n return true;\n }\n\n processExport() {\n if (\n this.tokens.matches2(tt._export, tt._enum) ||\n this.tokens.matches3(tt._export, tt._const, tt._enum)\n ) {\n this.hadNamedExport = true;\n // Let the TypeScript transform handle it.\n return false;\n }\n if (this.tokens.matches2(tt._export, tt._default)) {\n if (this.tokens.matches3(tt._export, tt._default, tt._enum)) {\n this.hadDefaultExport = true;\n // Flow export default enums need some special handling, so handle them\n // in that tranform rather than this one.\n return false;\n }\n this.processExportDefault();\n return true;\n } else if (this.tokens.matches2(tt._export, tt.braceL)) {\n this.processExportBindings();\n return true;\n } else if (\n this.tokens.matches2(tt._export, tt.name) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._type)\n ) {\n // export type {a};\n // export type {a as b};\n // export type {a} from './b';\n // export type * from './b';\n // export type * as ns from './b';\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n if (this.tokens.matches1(tt.braceL)) {\n while (!this.tokens.matches1(tt.braceR)) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n } else {\n // *\n this.tokens.removeToken();\n if (this.tokens.matches1(tt._as)) {\n // as\n this.tokens.removeToken();\n // ns\n this.tokens.removeToken();\n }\n }\n // Remove type re-export `... } from './T'`\n if (\n this.tokens.matchesContextual(ContextualKeyword._from) &&\n this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, tt.string)\n ) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n removeMaybeImportAttributes(this.tokens);\n }\n return true;\n }\n this.hadNamedExport = true;\n if (\n this.tokens.matches2(tt._export, tt._var) ||\n this.tokens.matches2(tt._export, tt._let) ||\n this.tokens.matches2(tt._export, tt._const)\n ) {\n this.processExportVar();\n return true;\n } else if (\n this.tokens.matches2(tt._export, tt._function) ||\n // export async function\n this.tokens.matches3(tt._export, tt.name, tt._function)\n ) {\n this.processExportFunction();\n return true;\n } else if (\n this.tokens.matches2(tt._export, tt._class) ||\n this.tokens.matches3(tt._export, tt._abstract, tt._class) ||\n this.tokens.matches2(tt._export, tt.at)\n ) {\n this.processExportClass();\n return true;\n } else if (this.tokens.matches2(tt._export, tt.star)) {\n this.processExportStar();\n return true;\n } else {\n throw new Error(\"Unrecognized export syntax.\");\n }\n }\n\n processAssignment() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index - 1];\n // If the LHS is a type identifier, this must be a declaration like `let a: b = c;`,\n // with `b` as the identifier, so nothing needs to be done in that case.\n if (identifierToken.isType || identifierToken.type !== tt.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n if (index >= 2 && this.tokens.matches1AtIndex(index - 2, tt.dot)) {\n return false;\n }\n if (index >= 2 && [tt._var, tt._let, tt._const].includes(this.tokens.tokens[index - 2].type)) {\n // Declarations don't need an extra assignment. This doesn't avoid the\n // assignment for comma-separated declarations, but it's still correct\n // since the assignment is just redundant.\n return false;\n }\n const assignmentSnippet = this.importProcessor.resolveExportBinding(\n this.tokens.identifierNameForToken(identifierToken),\n );\n if (!assignmentSnippet) {\n return false;\n }\n this.tokens.copyToken();\n this.tokens.appendCode(` ${assignmentSnippet} =`);\n return true;\n }\n\n /**\n * Process something like `a += 3`, where `a` might be an exported value.\n */\n processComplexAssignment() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index - 1];\n if (identifierToken.type !== tt.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n if (index >= 2 && this.tokens.matches1AtIndex(index - 2, tt.dot)) {\n return false;\n }\n const assignmentSnippet = this.importProcessor.resolveExportBinding(\n this.tokens.identifierNameForToken(identifierToken),\n );\n if (!assignmentSnippet) {\n return false;\n }\n this.tokens.appendCode(` = ${assignmentSnippet}`);\n this.tokens.copyToken();\n return true;\n }\n\n /**\n * Process something like `++a`, where `a` might be an exported value.\n */\n processPreIncDec() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index + 1];\n if (identifierToken.type !== tt.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n // Ignore things like ++a.b and ++a[b] and ++a().b.\n if (\n index + 2 < this.tokens.tokens.length &&\n (this.tokens.matches1AtIndex(index + 2, tt.dot) ||\n this.tokens.matches1AtIndex(index + 2, tt.bracketL) ||\n this.tokens.matches1AtIndex(index + 2, tt.parenL))\n ) {\n return false;\n }\n const identifierName = this.tokens.identifierNameForToken(identifierToken);\n const assignmentSnippet = this.importProcessor.resolveExportBinding(identifierName);\n if (!assignmentSnippet) {\n return false;\n }\n this.tokens.appendCode(`${assignmentSnippet} = `);\n this.tokens.copyToken();\n return true;\n }\n\n /**\n * Process something like `a++`, where `a` might be an exported value.\n * This starts at the `a`, not at the `++`.\n */\n processPostIncDec() {\n const index = this.tokens.currentIndex();\n const identifierToken = this.tokens.tokens[index];\n const operatorToken = this.tokens.tokens[index + 1];\n if (identifierToken.type !== tt.name) {\n return false;\n }\n if (identifierToken.shadowsGlobal) {\n return false;\n }\n if (index >= 1 && this.tokens.matches1AtIndex(index - 1, tt.dot)) {\n return false;\n }\n const identifierName = this.tokens.identifierNameForToken(identifierToken);\n const assignmentSnippet = this.importProcessor.resolveExportBinding(identifierName);\n if (!assignmentSnippet) {\n return false;\n }\n const operatorCode = this.tokens.rawCodeForToken(operatorToken);\n // We might also replace the identifier with something like exports.x, so\n // do that replacement here as well.\n const base = this.importProcessor.getIdentifierReplacement(identifierName) || identifierName;\n if (operatorCode === \"++\") {\n this.tokens.replaceToken(`(${base} = ${assignmentSnippet} = ${base} + 1, ${base} - 1)`);\n } else if (operatorCode === \"--\") {\n this.tokens.replaceToken(`(${base} = ${assignmentSnippet} = ${base} - 1, ${base} + 1)`);\n } else {\n throw new Error(`Unexpected operator: ${operatorCode}`);\n }\n this.tokens.removeToken();\n return true;\n }\n\n processExportDefault() {\n let exportedRuntimeValue = true;\n if (\n this.tokens.matches4(tt._export, tt._default, tt._function, tt.name) ||\n // export default async function\n (this.tokens.matches5(tt._export, tt._default, tt.name, tt._function, tt.name) &&\n this.tokens.matchesContextualAtIndex(\n this.tokens.currentIndex() + 2,\n ContextualKeyword._async,\n ))\n ) {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n // Named function export case: change it to a top-level function\n // declaration followed by exports statement.\n const name = this.processNamedFunction();\n this.tokens.appendCode(` exports.default = ${name};`);\n } else if (\n this.tokens.matches4(tt._export, tt._default, tt._class, tt.name) ||\n this.tokens.matches5(tt._export, tt._default, tt._abstract, tt._class, tt.name) ||\n this.tokens.matches3(tt._export, tt._default, tt.at)\n ) {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n this.copyDecorators();\n if (this.tokens.matches1(tt._abstract)) {\n this.tokens.removeToken();\n }\n const name = this.rootTransformer.processNamedClass();\n this.tokens.appendCode(` exports.default = ${name};`);\n // After this point, this is a plain \"export default E\" statement.\n } else if (\n shouldElideDefaultExport(\n this.isTypeScriptTransformEnabled,\n this.keepUnusedImports,\n this.tokens,\n this.declarationInfo,\n )\n ) {\n // If the exported value is just an identifier and should be elided by TypeScript\n // rules, then remove it entirely. It will always have the form `export default e`,\n // where `e` is an identifier.\n exportedRuntimeValue = false;\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n } else if (this.reactHotLoaderTransformer) {\n // We need to assign E to a variable. Change \"export default E\" to\n // \"let _default; exports.default = _default = E\"\n const defaultVarName = this.nameManager.claimFreeName(\"_default\");\n this.tokens.replaceToken(`let ${defaultVarName}; exports.`);\n this.tokens.copyToken();\n this.tokens.appendCode(` = ${defaultVarName} =`);\n this.reactHotLoaderTransformer.setExtractedDefaultExportName(defaultVarName);\n } else {\n // Change \"export default E\" to \"exports.default = E\"\n this.tokens.replaceToken(\"exports.\");\n this.tokens.copyToken();\n this.tokens.appendCode(\" =\");\n }\n if (exportedRuntimeValue) {\n this.hadDefaultExport = true;\n }\n }\n\n copyDecorators() {\n while (this.tokens.matches1(tt.at)) {\n this.tokens.copyToken();\n if (this.tokens.matches1(tt.parenL)) {\n this.tokens.copyExpectedToken(tt.parenL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n } else {\n this.tokens.copyExpectedToken(tt.name);\n while (this.tokens.matches1(tt.dot)) {\n this.tokens.copyExpectedToken(tt.dot);\n this.tokens.copyExpectedToken(tt.name);\n }\n if (this.tokens.matches1(tt.parenL)) {\n this.tokens.copyExpectedToken(tt.parenL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n }\n }\n }\n }\n\n /**\n * Transform a declaration like `export var`, `export let`, or `export const`.\n */\n processExportVar() {\n if (this.isSimpleExportVar()) {\n this.processSimpleExportVar();\n } else {\n this.processComplexExportVar();\n }\n }\n\n /**\n * Determine if the export is of the form:\n * export var/let/const [varName] = [expr];\n * In other words, determine if function name inference might apply.\n */\n isSimpleExportVar() {\n let tokenIndex = this.tokens.currentIndex();\n // export\n tokenIndex++;\n // var/let/const\n tokenIndex++;\n if (!this.tokens.matches1AtIndex(tokenIndex, tt.name)) {\n return false;\n }\n tokenIndex++;\n while (tokenIndex < this.tokens.tokens.length && this.tokens.tokens[tokenIndex].isType) {\n tokenIndex++;\n }\n if (!this.tokens.matches1AtIndex(tokenIndex, tt.eq)) {\n return false;\n }\n return true;\n }\n\n /**\n * Transform an `export var` declaration initializing a single variable.\n *\n * For example, this:\n * export const f = () => {};\n * becomes this:\n * const f = () => {}; exports.f = f;\n *\n * The variable is unused (e.g. exports.f has the true value of the export).\n * We need to produce an assignment of this form so that the function will\n * have an inferred name of \"f\", which wouldn't happen in the more general\n * case below.\n */\n processSimpleExportVar() {\n // export\n this.tokens.removeInitialToken();\n // var/let/const\n this.tokens.copyToken();\n const varName = this.tokens.identifierName();\n // x: number -> x\n while (!this.tokens.matches1(tt.eq)) {\n this.rootTransformer.processToken();\n }\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n while (this.tokens.currentIndex() < endIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(`; exports.${varName} = ${varName}`);\n }\n\n /**\n * Transform normal declaration exports, including handling destructuring.\n * For example, this:\n * export const {x: [a = 2, b], c} = d;\n * becomes this:\n * ({x: [exports.a = 2, exports.b], c: exports.c} = d;)\n */\n processComplexExportVar() {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n const needsParens = this.tokens.matches1(tt.braceL);\n if (needsParens) {\n this.tokens.appendCode(\"(\");\n }\n\n let depth = 0;\n while (true) {\n if (\n this.tokens.matches1(tt.braceL) ||\n this.tokens.matches1(tt.dollarBraceL) ||\n this.tokens.matches1(tt.bracketL)\n ) {\n depth++;\n this.tokens.copyToken();\n } else if (this.tokens.matches1(tt.braceR) || this.tokens.matches1(tt.bracketR)) {\n depth--;\n this.tokens.copyToken();\n } else if (\n depth === 0 &&\n !this.tokens.matches1(tt.name) &&\n !this.tokens.currentToken().isType\n ) {\n break;\n } else if (this.tokens.matches1(tt.eq)) {\n // Default values might have assignments in the RHS that we want to ignore, so skip past\n // them.\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n while (this.tokens.currentIndex() < endIndex) {\n this.rootTransformer.processToken();\n }\n } else {\n const token = this.tokens.currentToken();\n if (isDeclaration(token)) {\n const name = this.tokens.identifierName();\n let replacement = this.importProcessor.getIdentifierReplacement(name);\n if (replacement === null) {\n throw new Error(`Expected a replacement for ${name} in \\`export var\\` syntax.`);\n }\n if (isObjectShorthandDeclaration(token)) {\n replacement = `${name}: ${replacement}`;\n }\n this.tokens.replaceToken(replacement);\n } else {\n this.rootTransformer.processToken();\n }\n }\n }\n\n if (needsParens) {\n // Seek to the end of the RHS.\n const endIndex = this.tokens.currentToken().rhsEndIndex;\n if (endIndex == null) {\n throw new Error(\"Expected = token with an end index.\");\n }\n while (this.tokens.currentIndex() < endIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(\")\");\n }\n }\n\n /**\n * Transform this:\n * export function foo() {}\n * into this:\n * function foo() {} exports.foo = foo;\n */\n processExportFunction() {\n this.tokens.replaceToken(\"\");\n const name = this.processNamedFunction();\n this.tokens.appendCode(` exports.${name} = ${name};`);\n }\n\n /**\n * Skip past a function with a name and return that name.\n */\n processNamedFunction() {\n if (this.tokens.matches1(tt._function)) {\n this.tokens.copyToken();\n } else if (this.tokens.matches2(tt.name, tt._function)) {\n if (!this.tokens.matchesContextual(ContextualKeyword._async)) {\n throw new Error(\"Expected async keyword in function export.\");\n }\n this.tokens.copyToken();\n this.tokens.copyToken();\n }\n if (this.tokens.matches1(tt.star)) {\n this.tokens.copyToken();\n }\n if (!this.tokens.matches1(tt.name)) {\n throw new Error(\"Expected identifier for exported function name.\");\n }\n const name = this.tokens.identifierName();\n this.tokens.copyToken();\n if (this.tokens.currentToken().isType) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentToken().isType) {\n this.tokens.removeToken();\n }\n }\n this.tokens.copyExpectedToken(tt.parenL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n this.rootTransformer.processPossibleTypeRange();\n this.tokens.copyExpectedToken(tt.braceL);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.braceR);\n return name;\n }\n\n /**\n * Transform this:\n * export class A {}\n * into this:\n * class A {} exports.A = A;\n */\n processExportClass() {\n this.tokens.removeInitialToken();\n this.copyDecorators();\n if (this.tokens.matches1(tt._abstract)) {\n this.tokens.removeToken();\n }\n const name = this.rootTransformer.processNamedClass();\n this.tokens.appendCode(` exports.${name} = ${name};`);\n }\n\n /**\n * Transform this:\n * export {a, b as c};\n * into this:\n * exports.a = a; exports.c = b;\n *\n * OR\n *\n * Transform this:\n * export {a, b as c} from './foo';\n * into the pre-generated Object.defineProperty code from the ImportProcessor.\n *\n * For the first case, if the TypeScript transform is enabled, we need to skip\n * exports that are only defined as types.\n */\n processExportBindings() {\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n\n const isReExport = isExportFrom(this.tokens);\n\n const exportStatements = [];\n while (true) {\n if (this.tokens.matches1(tt.braceR)) {\n this.tokens.removeToken();\n break;\n }\n\n const specifierInfo = getImportExportSpecifierInfo(this.tokens);\n\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.removeToken();\n }\n\n const shouldRemoveExport =\n specifierInfo.isType ||\n (!isReExport && this.shouldElideExportedIdentifier(specifierInfo.leftName));\n if (!shouldRemoveExport) {\n const exportedName = specifierInfo.rightName;\n if (exportedName === \"default\") {\n this.hadDefaultExport = true;\n } else {\n this.hadNamedExport = true;\n }\n const localName = specifierInfo.leftName;\n const newLocalName = this.importProcessor.getIdentifierReplacement(localName);\n exportStatements.push(`exports.${exportedName} = ${newLocalName || localName};`);\n }\n\n if (this.tokens.matches1(tt.braceR)) {\n this.tokens.removeToken();\n break;\n }\n if (this.tokens.matches2(tt.comma, tt.braceR)) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n break;\n } else if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n } else {\n throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.currentToken())}`);\n }\n }\n\n if (this.tokens.matchesContextual(ContextualKeyword._from)) {\n // This is an export...from, so throw away the normal named export code\n // and use the Object.defineProperty code from ImportProcessor.\n this.tokens.removeToken();\n const path = this.tokens.stringValue();\n this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(path));\n removeMaybeImportAttributes(this.tokens);\n } else {\n // This is a normal named export, so use that.\n this.tokens.appendCode(exportStatements.join(\" \"));\n }\n\n if (this.tokens.matches1(tt.semi)) {\n this.tokens.removeToken();\n }\n }\n\n processExportStar() {\n this.tokens.removeInitialToken();\n while (!this.tokens.matches1(tt.string)) {\n this.tokens.removeToken();\n }\n const path = this.tokens.stringValue();\n this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(path));\n removeMaybeImportAttributes(this.tokens);\n if (this.tokens.matches1(tt.semi)) {\n this.tokens.removeToken();\n }\n }\n\n shouldElideExportedIdentifier(name) {\n return (\n this.isTypeScriptTransformEnabled &&\n !this.keepUnusedImports &&\n !this.declarationInfo.valueDeclarations.has(name)\n );\n }\n}\n", "\n\n\nimport {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport elideImportEquals from \"../util/elideImportEquals\";\nimport getDeclarationInfo, {\n\n EMPTY_DECLARATION_INFO,\n} from \"../util/getDeclarationInfo\";\nimport getImportExportSpecifierInfo from \"../util/getImportExportSpecifierInfo\";\nimport {getNonTypeIdentifiers} from \"../util/getNonTypeIdentifiers\";\nimport isExportFrom from \"../util/isExportFrom\";\nimport {removeMaybeImportAttributes} from \"../util/removeMaybeImportAttributes\";\nimport shouldElideDefaultExport from \"../util/shouldElideDefaultExport\";\n\nimport Transformer from \"./Transformer\";\n\n/**\n * Class for editing import statements when we are keeping the code as ESM. We still need to remove\n * type-only imports in TypeScript and Flow.\n */\nexport default class ESMImportTransformer extends Transformer {\n \n \n \n\n constructor(\n tokens,\n nameManager,\n helperManager,\n reactHotLoaderTransformer,\n isTypeScriptTransformEnabled,\n isFlowTransformEnabled,\n keepUnusedImports,\n options,\n ) {\n super();this.tokens = tokens;this.nameManager = nameManager;this.helperManager = helperManager;this.reactHotLoaderTransformer = reactHotLoaderTransformer;this.isTypeScriptTransformEnabled = isTypeScriptTransformEnabled;this.isFlowTransformEnabled = isFlowTransformEnabled;this.keepUnusedImports = keepUnusedImports;;\n this.nonTypeIdentifiers =\n isTypeScriptTransformEnabled && !keepUnusedImports\n ? getNonTypeIdentifiers(tokens, options)\n : new Set();\n this.declarationInfo =\n isTypeScriptTransformEnabled && !keepUnusedImports\n ? getDeclarationInfo(tokens)\n : EMPTY_DECLARATION_INFO;\n this.injectCreateRequireForImportRequire = Boolean(options.injectCreateRequireForImportRequire);\n }\n\n process() {\n // TypeScript `import foo = require('foo');` should always just be translated to plain require.\n if (this.tokens.matches3(tt._import, tt.name, tt.eq)) {\n return this.processImportEquals();\n }\n if (\n this.tokens.matches4(tt._import, tt.name, tt.name, tt.eq) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._type)\n ) {\n // import type T = require('T')\n this.tokens.removeInitialToken();\n // This construct is always exactly 8 tokens long, so remove the 7 remaining tokens.\n for (let i = 0; i < 7; i++) {\n this.tokens.removeToken();\n }\n return true;\n }\n if (this.tokens.matches2(tt._export, tt.eq)) {\n this.tokens.replaceToken(\"module.exports\");\n return true;\n }\n if (\n this.tokens.matches5(tt._export, tt._import, tt.name, tt.name, tt.eq) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 2, ContextualKeyword._type)\n ) {\n // export import type T = require('T')\n this.tokens.removeInitialToken();\n // This construct is always exactly 9 tokens long, so remove the 8 remaining tokens.\n for (let i = 0; i < 8; i++) {\n this.tokens.removeToken();\n }\n return true;\n }\n if (this.tokens.matches1(tt._import)) {\n return this.processImport();\n }\n if (this.tokens.matches2(tt._export, tt._default)) {\n return this.processExportDefault();\n }\n if (this.tokens.matches2(tt._export, tt.braceL)) {\n return this.processNamedExports();\n }\n if (\n this.tokens.matches2(tt._export, tt.name) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._type)\n ) {\n // export type {a};\n // export type {a as b};\n // export type {a} from './b';\n // export type * from './b';\n // export type * as ns from './b';\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n if (this.tokens.matches1(tt.braceL)) {\n while (!this.tokens.matches1(tt.braceR)) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n } else {\n // *\n this.tokens.removeToken();\n if (this.tokens.matches1(tt._as)) {\n // as\n this.tokens.removeToken();\n // ns\n this.tokens.removeToken();\n }\n }\n // Remove type re-export `... } from './T'`\n if (\n this.tokens.matchesContextual(ContextualKeyword._from) &&\n this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, tt.string)\n ) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n removeMaybeImportAttributes(this.tokens);\n }\n return true;\n }\n return false;\n }\n\n processImportEquals() {\n const importName = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n if (this.shouldAutomaticallyElideImportedName(importName)) {\n // If this name is only used as a type, elide the whole import.\n elideImportEquals(this.tokens);\n } else if (this.injectCreateRequireForImportRequire) {\n // We're using require in an environment (Node ESM) that doesn't provide\n // it as a global, so generate a helper to import it.\n // import -> const\n this.tokens.replaceToken(\"const\");\n // Foo\n this.tokens.copyToken();\n // =\n this.tokens.copyToken();\n // require\n this.tokens.replaceToken(this.helperManager.getHelperName(\"require\"));\n } else {\n // Otherwise, just switch `import` to `const`.\n this.tokens.replaceToken(\"const\");\n }\n return true;\n }\n\n processImport() {\n if (this.tokens.matches2(tt._import, tt.parenL)) {\n // Dynamic imports don't need to be transformed.\n return false;\n }\n\n const snapshot = this.tokens.snapshot();\n const allImportsRemoved = this.removeImportTypeBindings();\n if (allImportsRemoved) {\n this.tokens.restoreToSnapshot(snapshot);\n while (!this.tokens.matches1(tt.string)) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n removeMaybeImportAttributes(this.tokens);\n if (this.tokens.matches1(tt.semi)) {\n this.tokens.removeToken();\n }\n }\n return true;\n }\n\n /**\n * Remove type bindings from this import, leaving the rest of the import intact.\n *\n * Return true if this import was ONLY types, and thus is eligible for removal. This will bail out\n * of the replacement operation, so we can return early here.\n */\n removeImportTypeBindings() {\n this.tokens.copyExpectedToken(tt._import);\n if (\n this.tokens.matchesContextual(ContextualKeyword._type) &&\n !this.tokens.matches1AtIndex(this.tokens.currentIndex() + 1, tt.comma) &&\n !this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 1, ContextualKeyword._from)\n ) {\n // This is an \"import type\" statement, so exit early.\n return true;\n }\n\n if (this.tokens.matches1(tt.string)) {\n // This is a bare import, so we should proceed with the import.\n this.tokens.copyToken();\n return false;\n }\n\n // Skip the \"module\" token in import reflection.\n if (\n this.tokens.matchesContextual(ContextualKeyword._module) &&\n this.tokens.matchesContextualAtIndex(this.tokens.currentIndex() + 2, ContextualKeyword._from)\n ) {\n this.tokens.copyToken();\n }\n\n let foundNonTypeImport = false;\n let foundAnyNamedImport = false;\n let needsComma = false;\n\n // Handle default import.\n if (this.tokens.matches1(tt.name)) {\n if (this.shouldAutomaticallyElideImportedName(this.tokens.identifierName())) {\n this.tokens.removeToken();\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n }\n } else {\n foundNonTypeImport = true;\n this.tokens.copyToken();\n if (this.tokens.matches1(tt.comma)) {\n // We're in a statement like:\n // import A, * as B from './A';\n // or\n // import A, {foo} from './A';\n // where the `A` is being kept. The comma should be removed if an only\n // if the next part of the import statement is elided, but that's hard\n // to determine at this point in the code. Instead, always remove it\n // and set a flag to add it back if necessary.\n needsComma = true;\n this.tokens.removeToken();\n }\n }\n }\n\n if (this.tokens.matches1(tt.star)) {\n if (this.shouldAutomaticallyElideImportedName(this.tokens.identifierNameAtRelativeIndex(2))) {\n this.tokens.removeToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n } else {\n if (needsComma) {\n this.tokens.appendCode(\",\");\n }\n foundNonTypeImport = true;\n this.tokens.copyExpectedToken(tt.star);\n this.tokens.copyExpectedToken(tt.name);\n this.tokens.copyExpectedToken(tt.name);\n }\n } else if (this.tokens.matches1(tt.braceL)) {\n if (needsComma) {\n this.tokens.appendCode(\",\");\n }\n this.tokens.copyToken();\n while (!this.tokens.matches1(tt.braceR)) {\n foundAnyNamedImport = true;\n const specifierInfo = getImportExportSpecifierInfo(this.tokens);\n if (\n specifierInfo.isType ||\n this.shouldAutomaticallyElideImportedName(specifierInfo.rightName)\n ) {\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.removeToken();\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n }\n } else {\n foundNonTypeImport = true;\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.copyToken();\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.copyToken();\n }\n }\n }\n this.tokens.copyExpectedToken(tt.braceR);\n }\n\n if (this.keepUnusedImports) {\n return false;\n }\n if (this.isTypeScriptTransformEnabled) {\n return !foundNonTypeImport;\n } else if (this.isFlowTransformEnabled) {\n // In Flow, unlike TS, `import {} from 'foo';` preserves the import.\n return foundAnyNamedImport && !foundNonTypeImport;\n } else {\n return false;\n }\n }\n\n shouldAutomaticallyElideImportedName(name) {\n return (\n this.isTypeScriptTransformEnabled &&\n !this.keepUnusedImports &&\n !this.nonTypeIdentifiers.has(name)\n );\n }\n\n processExportDefault() {\n if (\n shouldElideDefaultExport(\n this.isTypeScriptTransformEnabled,\n this.keepUnusedImports,\n this.tokens,\n this.declarationInfo,\n )\n ) {\n // If the exported value is just an identifier and should be elided by TypeScript\n // rules, then remove it entirely. It will always have the form `export default e`,\n // where `e` is an identifier.\n this.tokens.removeInitialToken();\n this.tokens.removeToken();\n this.tokens.removeToken();\n return true;\n }\n\n const alreadyHasName =\n this.tokens.matches4(tt._export, tt._default, tt._function, tt.name) ||\n // export default async function\n (this.tokens.matches5(tt._export, tt._default, tt.name, tt._function, tt.name) &&\n this.tokens.matchesContextualAtIndex(\n this.tokens.currentIndex() + 2,\n ContextualKeyword._async,\n )) ||\n this.tokens.matches4(tt._export, tt._default, tt._class, tt.name) ||\n this.tokens.matches5(tt._export, tt._default, tt._abstract, tt._class, tt.name);\n\n if (!alreadyHasName && this.reactHotLoaderTransformer) {\n // This is a plain \"export default E\" statement and we need to assign E to a variable.\n // Change \"export default E\" to \"let _default; export default _default = E\"\n const defaultVarName = this.nameManager.claimFreeName(\"_default\");\n this.tokens.replaceToken(`let ${defaultVarName}; export`);\n this.tokens.copyToken();\n this.tokens.appendCode(` ${defaultVarName} =`);\n this.reactHotLoaderTransformer.setExtractedDefaultExportName(defaultVarName);\n return true;\n }\n return false;\n }\n\n /**\n * Handle a statement with one of these forms:\n * export {a, type b};\n * export {c, type d} from 'foo';\n *\n * In both cases, any explicit type exports should be removed. In the first\n * case, we also need to handle implicit export elision for names declared as\n * types. In the second case, we must NOT do implicit named export elision,\n * but we must remove the runtime import if all exports are type exports.\n */\n processNamedExports() {\n if (!this.isTypeScriptTransformEnabled) {\n return false;\n }\n this.tokens.copyExpectedToken(tt._export);\n this.tokens.copyExpectedToken(tt.braceL);\n\n const isReExport = isExportFrom(this.tokens);\n let foundNonTypeExport = false;\n while (!this.tokens.matches1(tt.braceR)) {\n const specifierInfo = getImportExportSpecifierInfo(this.tokens);\n if (\n specifierInfo.isType ||\n (!isReExport && this.shouldElideExportedName(specifierInfo.leftName))\n ) {\n // Type export, so remove all tokens, including any comma.\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.removeToken();\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n }\n } else {\n // Non-type export, so copy all tokens, including any comma.\n foundNonTypeExport = true;\n while (this.tokens.currentIndex() < specifierInfo.endIndex) {\n this.tokens.copyToken();\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.copyToken();\n }\n }\n }\n this.tokens.copyExpectedToken(tt.braceR);\n\n if (!this.keepUnusedImports && isReExport && !foundNonTypeExport) {\n // This is a type-only re-export, so skip evaluating the other module. Technically this\n // leaves the statement as `export {}`, but that's ok since that's a no-op.\n this.tokens.removeToken();\n this.tokens.removeToken();\n removeMaybeImportAttributes(this.tokens);\n }\n\n return true;\n }\n\n /**\n * ESM elides all imports with the rule that we only elide if we see that it's\n * a type and never see it as a value. This is in contrast to CJS, which\n * elides imports that are completely unknown.\n */\n shouldElideExportedName(name) {\n return (\n this.isTypeScriptTransformEnabled &&\n !this.keepUnusedImports &&\n this.declarationInfo.typeDeclarations.has(name) &&\n !this.declarationInfo.valueDeclarations.has(name)\n );\n }\n}\n", "import {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\nimport Transformer from \"./Transformer\";\n\nexport default class FlowTransformer extends Transformer {\n constructor(\n rootTransformer,\n tokens,\n isImportsTransformEnabled,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.isImportsTransformEnabled = isImportsTransformEnabled;;\n }\n\n process() {\n if (\n this.rootTransformer.processPossibleArrowParamEnd() ||\n this.rootTransformer.processPossibleAsyncArrowWithTypeParams() ||\n this.rootTransformer.processPossibleTypeRange()\n ) {\n return true;\n }\n if (this.tokens.matches1(tt._enum)) {\n this.processEnum();\n return true;\n }\n if (this.tokens.matches2(tt._export, tt._enum)) {\n this.processNamedExportEnum();\n return true;\n }\n if (this.tokens.matches3(tt._export, tt._default, tt._enum)) {\n this.processDefaultExportEnum();\n return true;\n }\n return false;\n }\n\n /**\n * Handle a declaration like:\n * export enum E ...\n *\n * With this imports transform, this becomes:\n * const E = [[enum]]; exports.E = E;\n *\n * otherwise, it becomes:\n * export const E = [[enum]];\n */\n processNamedExportEnum() {\n if (this.isImportsTransformEnabled) {\n // export\n this.tokens.removeInitialToken();\n const enumName = this.tokens.identifierNameAtRelativeIndex(1);\n this.processEnum();\n this.tokens.appendCode(` exports.${enumName} = ${enumName};`);\n } else {\n this.tokens.copyToken();\n this.processEnum();\n }\n }\n\n /**\n * Handle a declaration like:\n * export default enum E\n *\n * With the imports transform, this becomes:\n * const E = [[enum]]; exports.default = E;\n *\n * otherwise, it becomes:\n * const E = [[enum]]; export default E;\n */\n processDefaultExportEnum() {\n // export\n this.tokens.removeInitialToken();\n // default\n this.tokens.removeToken();\n const enumName = this.tokens.identifierNameAtRelativeIndex(1);\n this.processEnum();\n if (this.isImportsTransformEnabled) {\n this.tokens.appendCode(` exports.default = ${enumName};`);\n } else {\n this.tokens.appendCode(` export default ${enumName};`);\n }\n }\n\n /**\n * Transpile flow enums to invoke the \"flow-enums-runtime\" library.\n *\n * Currently, the transpiled code always uses `require(\"flow-enums-runtime\")`,\n * but if future flexibility is needed, we could expose a config option for\n * this string (similar to configurable JSX). Even when targeting ESM, the\n * default behavior of babel-plugin-transform-flow-enums is to use require\n * rather than injecting an import.\n *\n * Flow enums are quite a bit simpler than TS enums and have some convenient\n * constraints:\n * - Element initializers must be either always present or always absent. That\n * means that we can use fixed lookahead on the first element (if any) and\n * assume that all elements are like that.\n * - The right-hand side of an element initializer must be a literal value,\n * not a complex expression and not referencing other elements. That means\n * we can simply copy a single token.\n *\n * Enums can be broken up into three basic cases:\n *\n * Mirrored enums:\n * enum E {A, B}\n * ->\n * const E = require(\"flow-enums-runtime\").Mirrored([\"A\", \"B\"]);\n *\n * Initializer enums:\n * enum E {A = 1, B = 2}\n * ->\n * const E = require(\"flow-enums-runtime\")({A: 1, B: 2});\n *\n * Symbol enums:\n * enum E of symbol {A, B}\n * ->\n * const E = require(\"flow-enums-runtime\")({A: Symbol(\"A\"), B: Symbol(\"B\")});\n *\n * We can statically detect which of the three cases this is by looking at the\n * \"of\" declaration (if any) and seeing if the first element has an initializer.\n * Since the other transform details are so similar between the three cases, we\n * use a single implementation and vary the transform within processEnumElement\n * based on case.\n */\n processEnum() {\n // enum E -> const E\n this.tokens.replaceToken(\"const\");\n this.tokens.copyExpectedToken(tt.name);\n\n let isSymbolEnum = false;\n if (this.tokens.matchesContextual(ContextualKeyword._of)) {\n this.tokens.removeToken();\n isSymbolEnum = this.tokens.matchesContextual(ContextualKeyword._symbol);\n this.tokens.removeToken();\n }\n const hasInitializers = this.tokens.matches3(tt.braceL, tt.name, tt.eq);\n this.tokens.appendCode(' = require(\"flow-enums-runtime\")');\n\n const isMirrored = !isSymbolEnum && !hasInitializers;\n this.tokens.replaceTokenTrimmingLeftWhitespace(isMirrored ? \".Mirrored([\" : \"({\");\n\n while (!this.tokens.matches1(tt.braceR)) {\n // ... is allowed at the end and has no runtime behavior.\n if (this.tokens.matches1(tt.ellipsis)) {\n this.tokens.removeToken();\n break;\n }\n this.processEnumElement(isSymbolEnum, hasInitializers);\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.copyToken();\n }\n }\n\n this.tokens.replaceToken(isMirrored ? \"]);\" : \"});\");\n }\n\n /**\n * Process an individual enum element, producing either an array element or an\n * object element based on what type of enum this is.\n */\n processEnumElement(isSymbolEnum, hasInitializers) {\n if (isSymbolEnum) {\n // Symbol enums never have initializers and are expanded to object elements.\n // A, -> A: Symbol(\"A\"),\n const elementName = this.tokens.identifierName();\n this.tokens.copyToken();\n this.tokens.appendCode(`: Symbol(\"${elementName}\")`);\n } else if (hasInitializers) {\n // Initializers are expanded to object elements.\n // A = 1, -> A: 1,\n this.tokens.copyToken();\n this.tokens.replaceTokenTrimmingLeftWhitespace(\":\");\n this.tokens.copyToken();\n } else {\n // Enum elements without initializers become string literal array elements.\n // A, -> \"A\",\n this.tokens.replaceToken(`\"${this.tokens.identifierName()}\"`);\n }\n }\n}\n", " function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\n\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\nimport Transformer from \"./Transformer\";\n\nconst JEST_GLOBAL_NAME = \"jest\";\nconst HOISTED_METHODS = [\"mock\", \"unmock\", \"enableAutomock\", \"disableAutomock\"];\n\n/**\n * Implementation of babel-plugin-jest-hoist, which hoists up some jest method\n * calls above the imports to allow them to override other imports.\n *\n * To preserve line numbers, rather than directly moving the jest.mock code, we\n * wrap each invocation in a function statement and then call the function from\n * the top of the file.\n */\nexport default class JestHoistTransformer extends Transformer {\n __init() {this.hoistedFunctionNames = []}\n\n constructor(\n rootTransformer,\n tokens,\n nameManager,\n importProcessor,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.nameManager = nameManager;this.importProcessor = importProcessor;JestHoistTransformer.prototype.__init.call(this);;\n }\n\n process() {\n if (\n this.tokens.currentToken().scopeDepth === 0 &&\n this.tokens.matches4(tt.name, tt.dot, tt.name, tt.parenL) &&\n this.tokens.identifierName() === JEST_GLOBAL_NAME\n ) {\n // TODO: This only works if imports transform is active, which it will be for jest.\n // But if jest adds module support and we no longer need the import transform, this needs fixing.\n if (_optionalChain([this, 'access', _ => _.importProcessor, 'optionalAccess', _2 => _2.getGlobalNames, 'call', _3 => _3(), 'optionalAccess', _4 => _4.has, 'call', _5 => _5(JEST_GLOBAL_NAME)])) {\n return false;\n }\n return this.extractHoistedCalls();\n }\n\n return false;\n }\n\n getHoistedCode() {\n if (this.hoistedFunctionNames.length > 0) {\n // This will be placed before module interop code, but that's fine since\n // imports aren't allowed in module mock factories.\n return this.hoistedFunctionNames.map((name) => `${name}();`).join(\"\");\n }\n return \"\";\n }\n\n /**\n * Extracts any methods calls on the jest-object that should be hoisted.\n *\n * According to the jest docs, https://jestjs.io/docs/en/jest-object#jestmockmodulename-factory-options,\n * mock, unmock, enableAutomock, disableAutomock, are the methods that should be hoisted.\n *\n * We do not apply the same checks of the arguments as babel-plugin-jest-hoist does.\n */\n extractHoistedCalls() {\n // We're handling a chain of calls where `jest` may or may not need to be inserted for each call\n // in the chain, so remove the initial `jest` to make the loop implementation cleaner.\n this.tokens.removeToken();\n // Track some state so that multiple non-hoisted chained calls in a row keep their chaining\n // syntax.\n let followsNonHoistedJestCall = false;\n\n // Iterate through all chained calls on the jest object.\n while (this.tokens.matches3(tt.dot, tt.name, tt.parenL)) {\n const methodName = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n const shouldHoist = HOISTED_METHODS.includes(methodName);\n if (shouldHoist) {\n // We've matched e.g. `.mock(...)` or similar call.\n // Replace the initial `.` with `function __jestHoist(){jest.`\n const hoistedFunctionName = this.nameManager.claimFreeName(\"__jestHoist\");\n this.hoistedFunctionNames.push(hoistedFunctionName);\n this.tokens.replaceToken(`function ${hoistedFunctionName}(){${JEST_GLOBAL_NAME}.`);\n this.tokens.copyToken();\n this.tokens.copyToken();\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n this.tokens.appendCode(\";}\");\n followsNonHoistedJestCall = false;\n } else {\n // This is a non-hoisted method, so just transform the code as usual.\n if (followsNonHoistedJestCall) {\n // If we didn't hoist the previous call, we can leave the code as-is to chain off of the\n // previous method call. It's important to preserve the code here because we don't know\n // for sure that the method actually returned the jest object for chaining.\n this.tokens.copyToken();\n } else {\n // If we hoisted the previous call, we know it returns the jest object back, so we insert\n // the identifier `jest` to continue the chain.\n this.tokens.replaceToken(`${JEST_GLOBAL_NAME}.`);\n }\n this.tokens.copyToken();\n this.tokens.copyToken();\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.parenR);\n followsNonHoistedJestCall = true;\n }\n }\n\n return true;\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class NumericSeparatorTransformer extends Transformer {\n constructor( tokens) {\n super();this.tokens = tokens;;\n }\n\n process() {\n if (this.tokens.matches1(tt.num)) {\n const code = this.tokens.currentTokenCode();\n if (code.includes(\"_\")) {\n this.tokens.replaceToken(code.replace(/_/g, \"\"));\n return true;\n }\n }\n return false;\n }\n}\n", "\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class OptionalCatchBindingTransformer extends Transformer {\n constructor( tokens, nameManager) {\n super();this.tokens = tokens;this.nameManager = nameManager;;\n }\n\n process() {\n if (this.tokens.matches2(tt._catch, tt.braceL)) {\n this.tokens.copyToken();\n this.tokens.appendCode(` (${this.nameManager.claimFreeName(\"e\")})`);\n return true;\n }\n return false;\n }\n}\n", "\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport Transformer from \"./Transformer\";\n\n/**\n * Transformer supporting the optional chaining and nullish coalescing operators.\n *\n * Tech plan here:\n * https://github.com/alangpierce/sucrase/wiki/Sucrase-Optional-Chaining-and-Nullish-Coalescing-Technical-Plan\n *\n * The prefix and suffix code snippets are handled by TokenProcessor, and this transformer handles\n * the operators themselves.\n */\nexport default class OptionalChainingNullishTransformer extends Transformer {\n constructor( tokens, nameManager) {\n super();this.tokens = tokens;this.nameManager = nameManager;;\n }\n\n process() {\n if (this.tokens.matches1(tt.nullishCoalescing)) {\n const token = this.tokens.currentToken();\n if (this.tokens.tokens[token.nullishStartIndex].isAsyncOperation) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(\", async () => (\");\n } else {\n this.tokens.replaceTokenTrimmingLeftWhitespace(\", () => (\");\n }\n return true;\n }\n if (this.tokens.matches1(tt._delete)) {\n const nextToken = this.tokens.tokenAtRelativeIndex(1);\n if (nextToken.isOptionalChainStart) {\n this.tokens.removeInitialToken();\n return true;\n }\n }\n const token = this.tokens.currentToken();\n const chainStart = token.subscriptStartIndex;\n if (\n chainStart != null &&\n this.tokens.tokens[chainStart].isOptionalChainStart &&\n // Super subscripts can't be optional (since super is never null/undefined), and the syntax\n // relies on the subscript being intact, so leave this token alone.\n this.tokens.tokenAtRelativeIndex(-1).type !== tt._super\n ) {\n const param = this.nameManager.claimFreeName(\"_\");\n let arrowStartSnippet;\n if (\n chainStart > 0 &&\n this.tokens.matches1AtIndex(chainStart - 1, tt._delete) &&\n this.isLastSubscriptInChain()\n ) {\n // Delete operations are special: we already removed the delete keyword, and to still\n // perform a delete, we need to insert a delete in the very last part of the chain, which\n // in correct code will always be a property access.\n arrowStartSnippet = `${param} => delete ${param}`;\n } else {\n arrowStartSnippet = `${param} => ${param}`;\n }\n if (this.tokens.tokens[chainStart].isAsyncOperation) {\n arrowStartSnippet = `async ${arrowStartSnippet}`;\n }\n if (\n this.tokens.matches2(tt.questionDot, tt.parenL) ||\n this.tokens.matches2(tt.questionDot, tt.lessThan)\n ) {\n if (this.justSkippedSuper()) {\n this.tokens.appendCode(\".bind(this)\");\n }\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalCall', ${arrowStartSnippet}`);\n } else if (this.tokens.matches2(tt.questionDot, tt.bracketL)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${arrowStartSnippet}`);\n } else if (this.tokens.matches1(tt.questionDot)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${arrowStartSnippet}.`);\n } else if (this.tokens.matches1(tt.dot)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${arrowStartSnippet}.`);\n } else if (this.tokens.matches1(tt.bracketL)) {\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${arrowStartSnippet}[`);\n } else if (this.tokens.matches1(tt.parenL)) {\n if (this.justSkippedSuper()) {\n this.tokens.appendCode(\".bind(this)\");\n }\n this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'call', ${arrowStartSnippet}(`);\n } else {\n throw new Error(\"Unexpected subscript operator in optional chain.\");\n }\n return true;\n }\n return false;\n }\n\n /**\n * Determine if the current token is the last of its chain, so that we know whether it's eligible\n * to have a delete op inserted.\n *\n * We can do this by walking forward until we determine one way or another. Each\n * isOptionalChainStart token must be paired with exactly one isOptionalChainEnd token after it in\n * a nesting way, so we can track depth and walk to the end of the chain (the point where the\n * depth goes negative) and see if any other subscript token is after us in the chain.\n */\n isLastSubscriptInChain() {\n let depth = 0;\n for (let i = this.tokens.currentIndex() + 1; ; i++) {\n if (i >= this.tokens.tokens.length) {\n throw new Error(\"Reached the end of the code while finding the end of the access chain.\");\n }\n if (this.tokens.tokens[i].isOptionalChainStart) {\n depth++;\n } else if (this.tokens.tokens[i].isOptionalChainEnd) {\n depth--;\n }\n if (depth < 0) {\n return true;\n }\n\n // This subscript token is a later one in the same chain.\n if (depth === 0 && this.tokens.tokens[i].subscriptStartIndex != null) {\n return false;\n }\n }\n }\n\n /**\n * Determine if we are the open-paren in an expression like super.a()?.b.\n *\n * We can do this by walking backward to find the previous subscript. If that subscript was\n * preceded by a super, then we must be the subscript after it, so if this is a call expression,\n * we'll need to attach the right context.\n */\n justSkippedSuper() {\n let depth = 0;\n let index = this.tokens.currentIndex() - 1;\n while (true) {\n if (index < 0) {\n throw new Error(\n \"Reached the start of the code while finding the start of the access chain.\",\n );\n }\n if (this.tokens.tokens[index].isOptionalChainStart) {\n depth--;\n } else if (this.tokens.tokens[index].isOptionalChainEnd) {\n depth++;\n }\n if (depth < 0) {\n return false;\n }\n\n // This subscript token is a later one in the same chain.\n if (depth === 0 && this.tokens.tokens[index].subscriptStartIndex != null) {\n return this.tokens.tokens[index - 1].type === tt._super;\n }\n index--;\n }\n }\n}\n", "\n\nimport {IdentifierRole} from \"../parser/tokenizer\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\n\nimport Transformer from \"./Transformer\";\n\n/**\n * Implementation of babel-plugin-transform-react-display-name, which adds a\n * display name to usages of React.createClass and createReactClass.\n */\nexport default class ReactDisplayNameTransformer extends Transformer {\n constructor(\n rootTransformer,\n tokens,\n importProcessor,\n options,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.importProcessor = importProcessor;this.options = options;;\n }\n\n process() {\n const startIndex = this.tokens.currentIndex();\n if (this.tokens.identifierName() === \"createReactClass\") {\n const newName =\n this.importProcessor && this.importProcessor.getIdentifierReplacement(\"createReactClass\");\n if (newName) {\n this.tokens.replaceToken(`(0, ${newName})`);\n } else {\n this.tokens.copyToken();\n }\n this.tryProcessCreateClassCall(startIndex);\n return true;\n }\n if (\n this.tokens.matches3(tt.name, tt.dot, tt.name) &&\n this.tokens.identifierName() === \"React\" &&\n this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 2) === \"createClass\"\n ) {\n const newName = this.importProcessor\n ? this.importProcessor.getIdentifierReplacement(\"React\") || \"React\"\n : \"React\";\n if (newName) {\n this.tokens.replaceToken(newName);\n this.tokens.copyToken();\n this.tokens.copyToken();\n } else {\n this.tokens.copyToken();\n this.tokens.copyToken();\n this.tokens.copyToken();\n }\n this.tryProcessCreateClassCall(startIndex);\n return true;\n }\n return false;\n }\n\n /**\n * This is called with the token position at the open-paren.\n */\n tryProcessCreateClassCall(startIndex) {\n const displayName = this.findDisplayName(startIndex);\n if (!displayName) {\n return;\n }\n\n if (this.classNeedsDisplayName()) {\n this.tokens.copyExpectedToken(tt.parenL);\n this.tokens.copyExpectedToken(tt.braceL);\n this.tokens.appendCode(`displayName: '${displayName}',`);\n this.rootTransformer.processBalancedCode();\n this.tokens.copyExpectedToken(tt.braceR);\n this.tokens.copyExpectedToken(tt.parenR);\n }\n }\n\n findDisplayName(startIndex) {\n if (startIndex < 2) {\n return null;\n }\n if (this.tokens.matches2AtIndex(startIndex - 2, tt.name, tt.eq)) {\n // This is an assignment (or declaration) and the LHS is either an identifier or a member\n // expression ending in an identifier, so use that identifier name.\n return this.tokens.identifierNameAtIndex(startIndex - 2);\n }\n if (\n startIndex >= 2 &&\n this.tokens.tokens[startIndex - 2].identifierRole === IdentifierRole.ObjectKey\n ) {\n // This is an object literal value.\n return this.tokens.identifierNameAtIndex(startIndex - 2);\n }\n if (this.tokens.matches2AtIndex(startIndex - 2, tt._export, tt._default)) {\n return this.getDisplayNameFromFilename();\n }\n return null;\n }\n\n getDisplayNameFromFilename() {\n const filePath = this.options.filePath || \"unknown\";\n const pathSegments = filePath.split(\"/\");\n const filename = pathSegments[pathSegments.length - 1];\n const dotIndex = filename.lastIndexOf(\".\");\n const baseFilename = dotIndex === -1 ? filename : filename.slice(0, dotIndex);\n if (baseFilename === \"index\" && pathSegments[pathSegments.length - 2]) {\n return pathSegments[pathSegments.length - 2];\n } else {\n return baseFilename;\n }\n }\n\n /**\n * We only want to add a display name when this is a function call containing\n * one argument, which is an object literal without `displayName` as an\n * existing key.\n */\n classNeedsDisplayName() {\n let index = this.tokens.currentIndex();\n if (!this.tokens.matches2(tt.parenL, tt.braceL)) {\n return false;\n }\n // The block starts on the {, and we expect any displayName key to be in\n // that context. We need to ignore other other contexts to avoid matching\n // nested displayName keys.\n const objectStartIndex = index + 1;\n const objectContextId = this.tokens.tokens[objectStartIndex].contextId;\n if (objectContextId == null) {\n throw new Error(\"Expected non-null context ID on object open-brace.\");\n }\n\n for (; index < this.tokens.tokens.length; index++) {\n const token = this.tokens.tokens[index];\n if (token.type === tt.braceR && token.contextId === objectContextId) {\n index++;\n break;\n }\n\n if (\n this.tokens.identifierNameAtIndex(index) === \"displayName\" &&\n this.tokens.tokens[index].identifierRole === IdentifierRole.ObjectKey &&\n token.contextId === objectContextId\n ) {\n // We found a displayName key, so bail out.\n return false;\n }\n }\n\n if (index === this.tokens.tokens.length) {\n throw new Error(\"Unexpected end of input when processing React class.\");\n }\n\n // If we got this far, we know we have createClass with an object with no\n // display name, so we want to proceed as long as that was the only argument.\n return (\n this.tokens.matches1AtIndex(index, tt.parenR) ||\n this.tokens.matches2AtIndex(index, tt.comma, tt.parenR)\n );\n }\n}\n", "import {IdentifierRole, isTopLevelDeclaration} from \"../parser/tokenizer\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class ReactHotLoaderTransformer extends Transformer {\n __init() {this.extractedDefaultExportName = null}\n\n constructor( tokens, filePath) {\n super();this.tokens = tokens;this.filePath = filePath;ReactHotLoaderTransformer.prototype.__init.call(this);;\n }\n\n setExtractedDefaultExportName(extractedDefaultExportName) {\n this.extractedDefaultExportName = extractedDefaultExportName;\n }\n\n getPrefixCode() {\n return `\n (function () {\n var enterModule = require('react-hot-loader').enterModule;\n enterModule && enterModule(module);\n })();`\n .replace(/\\s+/g, \" \")\n .trim();\n }\n\n getSuffixCode() {\n const topLevelNames = new Set();\n for (const token of this.tokens.tokens) {\n if (\n !token.isType &&\n isTopLevelDeclaration(token) &&\n token.identifierRole !== IdentifierRole.ImportDeclaration\n ) {\n topLevelNames.add(this.tokens.identifierNameForToken(token));\n }\n }\n const namesToRegister = Array.from(topLevelNames).map((name) => ({\n variableName: name,\n uniqueLocalName: name,\n }));\n if (this.extractedDefaultExportName) {\n namesToRegister.push({\n variableName: this.extractedDefaultExportName,\n uniqueLocalName: \"default\",\n });\n }\n return `\n;(function () {\n var reactHotLoader = require('react-hot-loader').default;\n var leaveModule = require('react-hot-loader').leaveModule;\n if (!reactHotLoader) {\n return;\n }\n${namesToRegister\n .map(\n ({variableName, uniqueLocalName}) =>\n ` reactHotLoader.register(${variableName}, \"${uniqueLocalName}\", ${JSON.stringify(\n this.filePath || \"\",\n )});`,\n )\n .join(\"\\n\")}\n leaveModule(module);\n})();`;\n }\n\n process() {\n return false;\n }\n}\n", "import {IS_IDENTIFIER_CHAR, IS_IDENTIFIER_START} from \"../parser/util/identifier\";\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar\n// Hard-code a list of reserved words rather than trying to use keywords or contextual keywords\n// from the parser, since currently there are various exceptions, like `package` being reserved\n// but unused and various contextual keywords being reserved. Note that we assume that all code\n// compiled by Sucrase is in a module, so strict mode words and await are all considered reserved\n// here.\nconst RESERVED_WORDS = new Set([\n // Reserved keywords as of ECMAScript 2015\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"const\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"export\",\n \"extends\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"new\",\n \"return\",\n \"super\",\n \"switch\",\n \"this\",\n \"throw\",\n \"try\",\n \"typeof\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n // Future reserved keywords\n \"enum\",\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"await\",\n // Literals that cannot be used as identifiers\n \"false\",\n \"null\",\n \"true\",\n]);\n\n/**\n * Determine if the given name is a legal variable name.\n *\n * This is needed when transforming TypeScript enums; if an enum key is a valid\n * variable name, it might be referenced later in the enum, so we need to\n * declare a variable.\n */\nexport default function isIdentifier(name) {\n if (name.length === 0) {\n return false;\n }\n if (!IS_IDENTIFIER_START[name.charCodeAt(0)]) {\n return false;\n }\n for (let i = 1; i < name.length; i++) {\n if (!IS_IDENTIFIER_CHAR[name.charCodeAt(i)]) {\n return false;\n }\n }\n return !RESERVED_WORDS.has(name);\n}\n", "\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport isIdentifier from \"../util/isIdentifier\";\n\nimport Transformer from \"./Transformer\";\n\nexport default class TypeScriptTransformer extends Transformer {\n constructor(\n rootTransformer,\n tokens,\n isImportsTransformEnabled,\n ) {\n super();this.rootTransformer = rootTransformer;this.tokens = tokens;this.isImportsTransformEnabled = isImportsTransformEnabled;;\n }\n\n process() {\n if (\n this.rootTransformer.processPossibleArrowParamEnd() ||\n this.rootTransformer.processPossibleAsyncArrowWithTypeParams() ||\n this.rootTransformer.processPossibleTypeRange()\n ) {\n return true;\n }\n if (\n this.tokens.matches1(tt._public) ||\n this.tokens.matches1(tt._protected) ||\n this.tokens.matches1(tt._private) ||\n this.tokens.matches1(tt._abstract) ||\n this.tokens.matches1(tt._readonly) ||\n this.tokens.matches1(tt._override) ||\n this.tokens.matches1(tt.nonNullAssertion)\n ) {\n this.tokens.removeInitialToken();\n return true;\n }\n if (this.tokens.matches1(tt._enum) || this.tokens.matches2(tt._const, tt._enum)) {\n this.processEnum();\n return true;\n }\n if (\n this.tokens.matches2(tt._export, tt._enum) ||\n this.tokens.matches3(tt._export, tt._const, tt._enum)\n ) {\n this.processEnum(true);\n return true;\n }\n return false;\n }\n\n processEnum(isExport = false) {\n // We might have \"export const enum\", so just remove all relevant tokens.\n this.tokens.removeInitialToken();\n while (this.tokens.matches1(tt._const) || this.tokens.matches1(tt._enum)) {\n this.tokens.removeToken();\n }\n const enumName = this.tokens.identifierName();\n this.tokens.removeToken();\n if (isExport && !this.isImportsTransformEnabled) {\n this.tokens.appendCode(\"export \");\n }\n this.tokens.appendCode(`var ${enumName}; (function (${enumName})`);\n this.tokens.copyExpectedToken(tt.braceL);\n this.processEnumBody(enumName);\n this.tokens.copyExpectedToken(tt.braceR);\n if (isExport && this.isImportsTransformEnabled) {\n this.tokens.appendCode(`)(${enumName} || (exports.${enumName} = ${enumName} = {}));`);\n } else {\n this.tokens.appendCode(`)(${enumName} || (${enumName} = {}));`);\n }\n }\n\n /**\n * Transform an enum into equivalent JS. This has complexity in a few places:\n * - TS allows string enums, numeric enums, and a mix of the two styles within an enum.\n * - Enum keys are allowed to be referenced in later enum values.\n * - Enum keys are allowed to be strings.\n * - When enum values are omitted, they should follow an auto-increment behavior.\n */\n processEnumBody(enumName) {\n // Code that can be used to reference the previous enum member, or null if this is the first\n // enum member.\n let previousValueCode = null;\n while (true) {\n if (this.tokens.matches1(tt.braceR)) {\n break;\n }\n const {nameStringCode, variableName} = this.extractEnumKeyInfo(this.tokens.currentToken());\n this.tokens.removeInitialToken();\n\n if (\n this.tokens.matches3(tt.eq, tt.string, tt.comma) ||\n this.tokens.matches3(tt.eq, tt.string, tt.braceR)\n ) {\n this.processStringLiteralEnumMember(enumName, nameStringCode, variableName);\n } else if (this.tokens.matches1(tt.eq)) {\n this.processExplicitValueEnumMember(enumName, nameStringCode, variableName);\n } else {\n this.processImplicitValueEnumMember(\n enumName,\n nameStringCode,\n variableName,\n previousValueCode,\n );\n }\n if (this.tokens.matches1(tt.comma)) {\n this.tokens.removeToken();\n }\n\n if (variableName != null) {\n previousValueCode = variableName;\n } else {\n previousValueCode = `${enumName}[${nameStringCode}]`;\n }\n }\n }\n\n /**\n * Detect name information about this enum key, which will be used to determine which code to emit\n * and whether we should declare a variable as part of this declaration.\n *\n * Some cases to keep in mind:\n * - Enum keys can be implicitly referenced later, e.g. `X = 1, Y = X`. In Sucrase, we implement\n * this by declaring a variable `X` so that later expressions can use it.\n * - In addition to the usual identifier key syntax, enum keys are allowed to be string literals,\n * e.g. `\"hello world\" = 3,`. Template literal syntax is NOT allowed.\n * - Even if the enum key is defined as a string literal, it may still be referenced by identifier\n * later, e.g. `\"X\" = 1, Y = X`. That means that we need to detect whether or not a string\n * literal is identifier-like and emit a variable if so, even if the declaration did not use an\n * identifier.\n * - Reserved keywords like `break` are valid enum keys, but are not valid to be referenced later\n * and would be a syntax error if we emitted a variable, so we need to skip the variable\n * declaration in those cases.\n *\n * The variableName return value captures these nuances: if non-null, we can and must emit a\n * variable declaration, and if null, we can't and shouldn't.\n */\n extractEnumKeyInfo(nameToken) {\n if (nameToken.type === tt.name) {\n const name = this.tokens.identifierNameForToken(nameToken);\n return {\n nameStringCode: `\"${name}\"`,\n variableName: isIdentifier(name) ? name : null,\n };\n } else if (nameToken.type === tt.string) {\n const name = this.tokens.stringValueForToken(nameToken);\n return {\n nameStringCode: this.tokens.code.slice(nameToken.start, nameToken.end),\n variableName: isIdentifier(name) ? name : null,\n };\n } else {\n throw new Error(\"Expected name or string at beginning of enum element.\");\n }\n }\n\n /**\n * Handle an enum member where the RHS is just a string literal (not omitted, not a number, and\n * not a complex expression). This is the typical form for TS string enums, and in this case, we\n * do *not* create a reverse mapping.\n *\n * This is called after deleting the key token, when the token processor is at the equals sign.\n *\n * Example 1:\n * someKey = \"some value\"\n * ->\n * const someKey = \"some value\"; MyEnum[\"someKey\"] = someKey;\n *\n * Example 2:\n * \"some key\" = \"some value\"\n * ->\n * MyEnum[\"some key\"] = \"some value\";\n */\n processStringLiteralEnumMember(\n enumName,\n nameStringCode,\n variableName,\n ) {\n if (variableName != null) {\n this.tokens.appendCode(`const ${variableName}`);\n // =\n this.tokens.copyToken();\n // value string\n this.tokens.copyToken();\n this.tokens.appendCode(`; ${enumName}[${nameStringCode}] = ${variableName};`);\n } else {\n this.tokens.appendCode(`${enumName}[${nameStringCode}]`);\n // =\n this.tokens.copyToken();\n // value string\n this.tokens.copyToken();\n this.tokens.appendCode(\";\");\n }\n }\n\n /**\n * Handle an enum member initialized with an expression on the right-hand side (other than a\n * string literal). In these cases, we should transform the expression and emit code that sets up\n * a reverse mapping.\n *\n * The TypeScript implementation of this operation distinguishes between expressions that can be\n * \"constant folded\" at compile time (i.e. consist of number literals and simple math operations\n * on those numbers) and ones that are dynamic. For constant expressions, it emits the resolved\n * numeric value, and auto-incrementing is only allowed in that case. Evaluating expressions at\n * compile time would add significant complexity to Sucrase, so Sucrase instead leaves the\n * expression as-is, and will later emit something like `MyEnum[\"previousKey\"] + 1` to implement\n * auto-incrementing.\n *\n * This is called after deleting the key token, when the token processor is at the equals sign.\n *\n * Example 1:\n * someKey = 1 + 1\n * ->\n * const someKey = 1 + 1; MyEnum[MyEnum[\"someKey\"] = someKey] = \"someKey\";\n *\n * Example 2:\n * \"some key\" = 1 + 1\n * ->\n * MyEnum[MyEnum[\"some key\"] = 1 + 1] = \"some key\";\n */\n processExplicitValueEnumMember(\n enumName,\n nameStringCode,\n variableName,\n ) {\n const rhsEndIndex = this.tokens.currentToken().rhsEndIndex;\n if (rhsEndIndex == null) {\n throw new Error(\"Expected rhsEndIndex on enum assign.\");\n }\n\n if (variableName != null) {\n this.tokens.appendCode(`const ${variableName}`);\n this.tokens.copyToken();\n while (this.tokens.currentIndex() < rhsEndIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(\n `; ${enumName}[${enumName}[${nameStringCode}] = ${variableName}] = ${nameStringCode};`,\n );\n } else {\n this.tokens.appendCode(`${enumName}[${enumName}[${nameStringCode}]`);\n this.tokens.copyToken();\n while (this.tokens.currentIndex() < rhsEndIndex) {\n this.rootTransformer.processToken();\n }\n this.tokens.appendCode(`] = ${nameStringCode};`);\n }\n }\n\n /**\n * Handle an enum member with no right-hand side expression. In this case, the value is the\n * previous value plus 1, or 0 if there was no previous value. We should also always emit a\n * reverse mapping.\n *\n * Example 1:\n * someKey2\n * ->\n * const someKey2 = someKey1 + 1; MyEnum[MyEnum[\"someKey2\"] = someKey2] = \"someKey2\";\n *\n * Example 2:\n * \"some key 2\"\n * ->\n * MyEnum[MyEnum[\"some key 2\"] = someKey1 + 1] = \"some key 2\";\n */\n processImplicitValueEnumMember(\n enumName,\n nameStringCode,\n variableName,\n previousValueCode,\n ) {\n let valueCode = previousValueCode != null ? `${previousValueCode} + 1` : \"0\";\n if (variableName != null) {\n this.tokens.appendCode(`const ${variableName} = ${valueCode}; `);\n valueCode = variableName;\n }\n this.tokens.appendCode(\n `${enumName}[${enumName}[${nameStringCode}] = ${valueCode}] = ${nameStringCode};`,\n );\n }\n}\n", "\n\n\nimport {ContextualKeyword} from \"../parser/tokenizer/keywords\";\nimport {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport getClassInfo, {} from \"../util/getClassInfo\";\nimport CJSImportTransformer from \"./CJSImportTransformer\";\nimport ESMImportTransformer from \"./ESMImportTransformer\";\nimport FlowTransformer from \"./FlowTransformer\";\nimport JestHoistTransformer from \"./JestHoistTransformer\";\nimport JSXTransformer from \"./JSXTransformer\";\nimport NumericSeparatorTransformer from \"./NumericSeparatorTransformer\";\nimport OptionalCatchBindingTransformer from \"./OptionalCatchBindingTransformer\";\nimport OptionalChainingNullishTransformer from \"./OptionalChainingNullishTransformer\";\nimport ReactDisplayNameTransformer from \"./ReactDisplayNameTransformer\";\nimport ReactHotLoaderTransformer from \"./ReactHotLoaderTransformer\";\n\nimport TypeScriptTransformer from \"./TypeScriptTransformer\";\n\n\n\n\n\n\n\n\nexport default class RootTransformer {\n __init() {this.transformers = []}\n \n \n __init2() {this.generatedVariables = []}\n \n \n \n \n\n constructor(\n sucraseContext,\n transforms,\n enableLegacyBabel5ModuleInterop,\n options,\n ) {;RootTransformer.prototype.__init.call(this);RootTransformer.prototype.__init2.call(this);\n this.nameManager = sucraseContext.nameManager;\n this.helperManager = sucraseContext.helperManager;\n const {tokenProcessor, importProcessor} = sucraseContext;\n this.tokens = tokenProcessor;\n this.isImportsTransformEnabled = transforms.includes(\"imports\");\n this.isReactHotLoaderTransformEnabled = transforms.includes(\"react-hot-loader\");\n this.disableESTransforms = Boolean(options.disableESTransforms);\n\n if (!options.disableESTransforms) {\n this.transformers.push(\n new OptionalChainingNullishTransformer(tokenProcessor, this.nameManager),\n );\n this.transformers.push(new NumericSeparatorTransformer(tokenProcessor));\n this.transformers.push(new OptionalCatchBindingTransformer(tokenProcessor, this.nameManager));\n }\n\n if (transforms.includes(\"jsx\")) {\n if (options.jsxRuntime !== \"preserve\") {\n this.transformers.push(\n new JSXTransformer(this, tokenProcessor, importProcessor, this.nameManager, options),\n );\n }\n this.transformers.push(\n new ReactDisplayNameTransformer(this, tokenProcessor, importProcessor, options),\n );\n }\n\n let reactHotLoaderTransformer = null;\n if (transforms.includes(\"react-hot-loader\")) {\n if (!options.filePath) {\n throw new Error(\"filePath is required when using the react-hot-loader transform.\");\n }\n reactHotLoaderTransformer = new ReactHotLoaderTransformer(tokenProcessor, options.filePath);\n this.transformers.push(reactHotLoaderTransformer);\n }\n\n // Note that we always want to enable the imports transformer, even when the import transform\n // itself isn't enabled, since we need to do type-only import pruning for both Flow and\n // TypeScript.\n if (transforms.includes(\"imports\")) {\n if (importProcessor === null) {\n throw new Error(\"Expected non-null importProcessor with imports transform enabled.\");\n }\n this.transformers.push(\n new CJSImportTransformer(\n this,\n tokenProcessor,\n importProcessor,\n this.nameManager,\n this.helperManager,\n reactHotLoaderTransformer,\n enableLegacyBabel5ModuleInterop,\n Boolean(options.enableLegacyTypeScriptModuleInterop),\n transforms.includes(\"typescript\"),\n transforms.includes(\"flow\"),\n Boolean(options.preserveDynamicImport),\n Boolean(options.keepUnusedImports),\n ),\n );\n } else {\n this.transformers.push(\n new ESMImportTransformer(\n tokenProcessor,\n this.nameManager,\n this.helperManager,\n reactHotLoaderTransformer,\n transforms.includes(\"typescript\"),\n transforms.includes(\"flow\"),\n Boolean(options.keepUnusedImports),\n options,\n ),\n );\n }\n\n if (transforms.includes(\"flow\")) {\n this.transformers.push(\n new FlowTransformer(this, tokenProcessor, transforms.includes(\"imports\")),\n );\n }\n if (transforms.includes(\"typescript\")) {\n this.transformers.push(\n new TypeScriptTransformer(this, tokenProcessor, transforms.includes(\"imports\")),\n );\n }\n if (transforms.includes(\"jest\")) {\n this.transformers.push(\n new JestHoistTransformer(this, tokenProcessor, this.nameManager, importProcessor),\n );\n }\n }\n\n transform() {\n this.tokens.reset();\n this.processBalancedCode();\n const shouldAddUseStrict = this.isImportsTransformEnabled;\n // \"use strict\" always needs to be first, so override the normal transformer order.\n let prefix = shouldAddUseStrict ? '\"use strict\";' : \"\";\n for (const transformer of this.transformers) {\n prefix += transformer.getPrefixCode();\n }\n prefix += this.helperManager.emitHelpers();\n prefix += this.generatedVariables.map((v) => ` var ${v};`).join(\"\");\n for (const transformer of this.transformers) {\n prefix += transformer.getHoistedCode();\n }\n let suffix = \"\";\n for (const transformer of this.transformers) {\n suffix += transformer.getSuffixCode();\n }\n const result = this.tokens.finish();\n let {code} = result;\n if (code.startsWith(\"#!\")) {\n let newlineIndex = code.indexOf(\"\\n\");\n if (newlineIndex === -1) {\n newlineIndex = code.length;\n code += \"\\n\";\n }\n return {\n code: code.slice(0, newlineIndex + 1) + prefix + code.slice(newlineIndex + 1) + suffix,\n // The hashbang line has no tokens, so shifting the tokens to account\n // for prefix can happen normally.\n mappings: this.shiftMappings(result.mappings, prefix.length),\n };\n } else {\n return {\n code: prefix + code + suffix,\n mappings: this.shiftMappings(result.mappings, prefix.length),\n };\n }\n }\n\n processBalancedCode() {\n let braceDepth = 0;\n let parenDepth = 0;\n while (!this.tokens.isAtEnd()) {\n if (this.tokens.matches1(tt.braceL) || this.tokens.matches1(tt.dollarBraceL)) {\n braceDepth++;\n } else if (this.tokens.matches1(tt.braceR)) {\n if (braceDepth === 0) {\n return;\n }\n braceDepth--;\n }\n if (this.tokens.matches1(tt.parenL)) {\n parenDepth++;\n } else if (this.tokens.matches1(tt.parenR)) {\n if (parenDepth === 0) {\n return;\n }\n parenDepth--;\n }\n this.processToken();\n }\n }\n\n processToken() {\n if (this.tokens.matches1(tt._class)) {\n this.processClass();\n return;\n }\n for (const transformer of this.transformers) {\n const wasProcessed = transformer.process();\n if (wasProcessed) {\n return;\n }\n }\n this.tokens.copyToken();\n }\n\n /**\n * Skip past a class with a name and return that name.\n */\n processNamedClass() {\n if (!this.tokens.matches2(tt._class, tt.name)) {\n throw new Error(\"Expected identifier for exported class name.\");\n }\n const name = this.tokens.identifierNameAtIndex(this.tokens.currentIndex() + 1);\n this.processClass();\n return name;\n }\n\n processClass() {\n const classInfo = getClassInfo(this, this.tokens, this.nameManager, this.disableESTransforms);\n\n // Both static and instance initializers need a class name to use to invoke the initializer, so\n // assign to one if necessary.\n const needsCommaExpression =\n (classInfo.headerInfo.isExpression || !classInfo.headerInfo.className) &&\n classInfo.staticInitializerNames.length + classInfo.instanceInitializerNames.length > 0;\n\n let className = classInfo.headerInfo.className;\n if (needsCommaExpression) {\n className = this.nameManager.claimFreeName(\"_class\");\n this.generatedVariables.push(className);\n this.tokens.appendCode(` (${className} =`);\n }\n\n const classToken = this.tokens.currentToken();\n const contextId = classToken.contextId;\n if (contextId == null) {\n throw new Error(\"Expected class to have a context ID.\");\n }\n this.tokens.copyExpectedToken(tt._class);\n while (!this.tokens.matchesContextIdAndLabel(tt.braceL, contextId)) {\n this.processToken();\n }\n\n this.processClassBody(classInfo, className);\n\n const staticInitializerStatements = classInfo.staticInitializerNames.map(\n (name) => `${className}.${name}()`,\n );\n if (needsCommaExpression) {\n this.tokens.appendCode(\n `, ${staticInitializerStatements.map((s) => `${s}, `).join(\"\")}${className})`,\n );\n } else if (classInfo.staticInitializerNames.length > 0) {\n this.tokens.appendCode(` ${staticInitializerStatements.map((s) => `${s};`).join(\" \")}`);\n }\n }\n\n /**\n * We want to just handle class fields in all contexts, since TypeScript supports them. Later,\n * when some JS implementations support class fields, this should be made optional.\n */\n processClassBody(classInfo, className) {\n const {\n headerInfo,\n constructorInsertPos,\n constructorInitializerStatements,\n fields,\n instanceInitializerNames,\n rangesToRemove,\n } = classInfo;\n let fieldIndex = 0;\n let rangeToRemoveIndex = 0;\n const classContextId = this.tokens.currentToken().contextId;\n if (classContextId == null) {\n throw new Error(\"Expected non-null context ID on class.\");\n }\n this.tokens.copyExpectedToken(tt.braceL);\n if (this.isReactHotLoaderTransformEnabled) {\n this.tokens.appendCode(\n \"__reactstandin__regenerateByEval(key, code) {this[key] = eval(code);}\",\n );\n }\n\n const needsConstructorInit =\n constructorInitializerStatements.length + instanceInitializerNames.length > 0;\n\n if (constructorInsertPos === null && needsConstructorInit) {\n const constructorInitializersCode = this.makeConstructorInitCode(\n constructorInitializerStatements,\n instanceInitializerNames,\n className,\n );\n if (headerInfo.hasSuperclass) {\n const argsName = this.nameManager.claimFreeName(\"args\");\n this.tokens.appendCode(\n `constructor(...${argsName}) { super(...${argsName}); ${constructorInitializersCode}; }`,\n );\n } else {\n this.tokens.appendCode(`constructor() { ${constructorInitializersCode}; }`);\n }\n }\n\n while (!this.tokens.matchesContextIdAndLabel(tt.braceR, classContextId)) {\n if (fieldIndex < fields.length && this.tokens.currentIndex() === fields[fieldIndex].start) {\n let needsCloseBrace = false;\n if (this.tokens.matches1(tt.bracketL)) {\n this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this`);\n } else if (this.tokens.matches1(tt.string) || this.tokens.matches1(tt.num)) {\n this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this[`);\n needsCloseBrace = true;\n } else {\n this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this.`);\n }\n while (this.tokens.currentIndex() < fields[fieldIndex].end) {\n if (needsCloseBrace && this.tokens.currentIndex() === fields[fieldIndex].equalsIndex) {\n this.tokens.appendCode(\"]\");\n }\n this.processToken();\n }\n this.tokens.appendCode(\"}\");\n fieldIndex++;\n } else if (\n rangeToRemoveIndex < rangesToRemove.length &&\n this.tokens.currentIndex() >= rangesToRemove[rangeToRemoveIndex].start\n ) {\n if (this.tokens.currentIndex() < rangesToRemove[rangeToRemoveIndex].end) {\n this.tokens.removeInitialToken();\n }\n while (this.tokens.currentIndex() < rangesToRemove[rangeToRemoveIndex].end) {\n this.tokens.removeToken();\n }\n rangeToRemoveIndex++;\n } else if (this.tokens.currentIndex() === constructorInsertPos) {\n this.tokens.copyToken();\n if (needsConstructorInit) {\n this.tokens.appendCode(\n `;${this.makeConstructorInitCode(\n constructorInitializerStatements,\n instanceInitializerNames,\n className,\n )};`,\n );\n }\n this.processToken();\n } else {\n this.processToken();\n }\n }\n this.tokens.copyExpectedToken(tt.braceR);\n }\n\n makeConstructorInitCode(\n constructorInitializerStatements,\n instanceInitializerNames,\n className,\n ) {\n return [\n ...constructorInitializerStatements,\n ...instanceInitializerNames.map((name) => `${className}.prototype.${name}.call(this)`),\n ].join(\";\");\n }\n\n /**\n * Normally it's ok to simply remove type tokens, but we need to be more careful when dealing with\n * arrow function return types since they can confuse the parser. In that case, we want to move\n * the close-paren to the same line as the arrow.\n *\n * See https://github.com/alangpierce/sucrase/issues/391 for more details.\n */\n processPossibleArrowParamEnd() {\n if (this.tokens.matches2(tt.parenR, tt.colon) && this.tokens.tokenAtRelativeIndex(1).isType) {\n let nextNonTypeIndex = this.tokens.currentIndex() + 1;\n // Look ahead to see if this is an arrow function or something else.\n while (this.tokens.tokens[nextNonTypeIndex].isType) {\n nextNonTypeIndex++;\n }\n if (this.tokens.matches1AtIndex(nextNonTypeIndex, tt.arrow)) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentIndex() < nextNonTypeIndex) {\n this.tokens.removeToken();\n }\n this.tokens.replaceTokenTrimmingLeftWhitespace(\") =>\");\n return true;\n }\n }\n return false;\n }\n\n /**\n * An async arrow function might be of the form:\n *\n * async <\n * T\n * >() => {}\n *\n * in which case, removing the type parameters will cause a syntax error. Detect this case and\n * move the open-paren earlier.\n */\n processPossibleAsyncArrowWithTypeParams() {\n if (\n !this.tokens.matchesContextual(ContextualKeyword._async) &&\n !this.tokens.matches1(tt._async)\n ) {\n return false;\n }\n const nextToken = this.tokens.tokenAtRelativeIndex(1);\n if (nextToken.type !== tt.lessThan || !nextToken.isType) {\n return false;\n }\n\n let nextNonTypeIndex = this.tokens.currentIndex() + 1;\n // Look ahead to see if this is an arrow function or something else.\n while (this.tokens.tokens[nextNonTypeIndex].isType) {\n nextNonTypeIndex++;\n }\n if (this.tokens.matches1AtIndex(nextNonTypeIndex, tt.parenL)) {\n this.tokens.replaceToken(\"async (\");\n this.tokens.removeInitialToken();\n while (this.tokens.currentIndex() < nextNonTypeIndex) {\n this.tokens.removeToken();\n }\n this.tokens.removeToken();\n // We ate a ( token, so we need to process the tokens in between and then the ) token so that\n // we remain balanced.\n this.processBalancedCode();\n this.processToken();\n return true;\n }\n return false;\n }\n\n processPossibleTypeRange() {\n if (this.tokens.currentToken().isType) {\n this.tokens.removeInitialToken();\n while (this.tokens.currentToken().isType) {\n this.tokens.removeToken();\n }\n return true;\n }\n return false;\n }\n\n shiftMappings(\n mappings,\n prefixLength,\n ) {\n for (let i = 0; i < mappings.length; i++) {\n const mapping = mappings[i];\n if (mapping !== undefined) {\n mappings[i] = mapping + prefixLength;\n }\n }\n return mappings;\n }\n}\n", "\"use strict\";\nexports.__esModule = true;\nexports.LinesAndColumns = void 0;\nvar LF = '\\n';\nvar CR = '\\r';\nvar LinesAndColumns = /** @class */ (function () {\n function LinesAndColumns(string) {\n this.string = string;\n var offsets = [0];\n for (var offset = 0; offset < string.length;) {\n switch (string[offset]) {\n case LF:\n offset += LF.length;\n offsets.push(offset);\n break;\n case CR:\n offset += CR.length;\n if (string[offset] === LF) {\n offset += LF.length;\n }\n offsets.push(offset);\n break;\n default:\n offset++;\n break;\n }\n }\n this.offsets = offsets;\n }\n LinesAndColumns.prototype.locationForIndex = function (index) {\n if (index < 0 || index > this.string.length) {\n return null;\n }\n var line = 0;\n var offsets = this.offsets;\n while (offsets[line + 1] <= index) {\n line++;\n }\n var column = index - offsets[line];\n return { line: line, column: column };\n };\n LinesAndColumns.prototype.indexForLocation = function (location) {\n var line = location.line, column = location.column;\n if (line < 0 || line >= this.offsets.length) {\n return null;\n }\n if (column < 0 || column > this.lengthOfLine(line)) {\n return null;\n }\n return this.offsets[line] + column;\n };\n LinesAndColumns.prototype.lengthOfLine = function (line) {\n var offset = this.offsets[line];\n var nextOffset = line === this.offsets.length - 1\n ? this.string.length\n : this.offsets[line + 1];\n return nextOffset - offset;\n };\n return LinesAndColumns;\n}());\nexports.LinesAndColumns = LinesAndColumns;\nexports[\"default\"] = LinesAndColumns;\n", "import LinesAndColumns from \"lines-and-columns\";\n\n\nimport {formatTokenType} from \"../parser/tokenizer/types\";\n\nexport default function formatTokens(code, tokens) {\n if (tokens.length === 0) {\n return \"\";\n }\n\n const tokenKeys = Object.keys(tokens[0]).filter(\n (k) => k !== \"type\" && k !== \"value\" && k !== \"start\" && k !== \"end\" && k !== \"loc\",\n );\n const typeKeys = Object.keys(tokens[0].type).filter((k) => k !== \"label\" && k !== \"keyword\");\n\n const headings = [\"Location\", \"Label\", \"Raw\", ...tokenKeys, ...typeKeys];\n\n const lines = new LinesAndColumns(code);\n const rows = [headings, ...tokens.map(getTokenComponents)];\n const padding = headings.map(() => 0);\n for (const components of rows) {\n for (let i = 0; i < components.length; i++) {\n padding[i] = Math.max(padding[i], components[i].length);\n }\n }\n return rows\n .map((components) => components.map((component, i) => component.padEnd(padding[i])).join(\" \"))\n .join(\"\\n\");\n\n function getTokenComponents(token) {\n const raw = code.slice(token.start, token.end);\n return [\n formatRange(token.start, token.end),\n formatTokenType(token.type),\n truncate(String(raw), 14),\n // @ts-ignore: Intentional dynamic access by key.\n ...tokenKeys.map((key) => formatValue(token[key], key)),\n // @ts-ignore: Intentional dynamic access by key.\n ...typeKeys.map((key) => formatValue(token.type[key], key)),\n ];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function formatValue(value, key) {\n if (value === true) {\n return key;\n } else if (value === false || value === null) {\n return \"\";\n } else {\n return String(value);\n }\n }\n\n function formatRange(start, end) {\n return `${formatPos(start)}-${formatPos(end)}`;\n }\n\n function formatPos(pos) {\n const location = lines.locationForIndex(pos);\n if (!location) {\n return \"Unknown\";\n } else {\n return `${location.line + 1}:${location.column + 1}`;\n }\n }\n}\n\nfunction truncate(s, length) {\n if (s.length > length) {\n return `${s.slice(0, length - 3)}...`;\n } else {\n return s;\n }\n}\n", "import {TokenType as tt} from \"../parser/tokenizer/types\";\n\nimport getImportExportSpecifierInfo from \"./getImportExportSpecifierInfo\";\n\n/**\n * Special case code to scan for imported names in ESM TypeScript. We need to do this so we can\n * properly get globals so we can compute shadowed globals.\n *\n * This is similar to logic in CJSImportProcessor, but trimmed down to avoid logic with CJS\n * replacement and flow type imports.\n */\nexport default function getTSImportedNames(tokens) {\n const importedNames = new Set();\n for (let i = 0; i < tokens.tokens.length; i++) {\n if (\n tokens.matches1AtIndex(i, tt._import) &&\n !tokens.matches3AtIndex(i, tt._import, tt.name, tt.eq)\n ) {\n collectNamesForImport(tokens, i, importedNames);\n }\n }\n return importedNames;\n}\n\nfunction collectNamesForImport(\n tokens,\n index,\n importedNames,\n) {\n index++;\n\n if (tokens.matches1AtIndex(index, tt.parenL)) {\n // Dynamic import, so nothing to do\n return;\n }\n\n if (tokens.matches1AtIndex(index, tt.name)) {\n importedNames.add(tokens.identifierNameAtIndex(index));\n index++;\n if (tokens.matches1AtIndex(index, tt.comma)) {\n index++;\n }\n }\n\n if (tokens.matches1AtIndex(index, tt.star)) {\n // * as\n index += 2;\n importedNames.add(tokens.identifierNameAtIndex(index));\n index++;\n }\n\n if (tokens.matches1AtIndex(index, tt.braceL)) {\n index++;\n collectNamesForNamedImport(tokens, index, importedNames);\n }\n}\n\nfunction collectNamesForNamedImport(\n tokens,\n index,\n importedNames,\n) {\n while (true) {\n if (tokens.matches1AtIndex(index, tt.braceR)) {\n return;\n }\n\n const specifierInfo = getImportExportSpecifierInfo(tokens, index);\n index = specifierInfo.endIndex;\n if (!specifierInfo.isType) {\n importedNames.add(specifierInfo.rightName);\n }\n\n if (tokens.matches2AtIndex(index, tt.comma, tt.braceR)) {\n return;\n } else if (tokens.matches1AtIndex(index, tt.braceR)) {\n return;\n } else if (tokens.matches1AtIndex(index, tt.comma)) {\n index++;\n } else {\n throw new Error(`Unexpected token: ${JSON.stringify(tokens.tokens[index])}`);\n }\n }\n}\n", "import CJSImportProcessor from \"./CJSImportProcessor\";\nimport computeSourceMap, {} from \"./computeSourceMap\";\nimport {HelperManager} from \"./HelperManager\";\nimport identifyShadowedGlobals from \"./identifyShadowedGlobals\";\nimport NameManager from \"./NameManager\";\nimport {validateOptions} from \"./Options\";\n\nimport {parse} from \"./parser\";\n\nimport TokenProcessor from \"./TokenProcessor\";\nimport RootTransformer from \"./transformers/RootTransformer\";\nimport formatTokens from \"./util/formatTokens\";\nimport getTSImportedNames from \"./util/getTSImportedNames\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n;\n\nexport function getVersion() {\n /* istanbul ignore next */\n return \"3.35.1\";\n}\n\nexport function transform(code, options) {\n validateOptions(options);\n try {\n const sucraseContext = getSucraseContext(code, options);\n const transformer = new RootTransformer(\n sucraseContext,\n options.transforms,\n Boolean(options.enableLegacyBabel5ModuleInterop),\n options,\n );\n const transformerResult = transformer.transform();\n let result = {code: transformerResult.code};\n if (options.sourceMapOptions) {\n if (!options.filePath) {\n throw new Error(\"filePath must be specified when generating a source map.\");\n }\n result = {\n ...result,\n sourceMap: computeSourceMap(\n transformerResult,\n options.filePath,\n options.sourceMapOptions,\n code,\n sucraseContext.tokenProcessor.tokens,\n ),\n };\n }\n return result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e) {\n if (options.filePath) {\n e.message = `Error transforming ${options.filePath}: ${e.message}`;\n }\n throw e;\n }\n}\n\n/**\n * Return a string representation of the sucrase tokens, mostly useful for\n * diagnostic purposes.\n */\nexport function getFormattedTokens(code, options) {\n const tokens = getSucraseContext(code, options).tokenProcessor.tokens;\n return formatTokens(code, tokens);\n}\n\n/**\n * Call into the parser/tokenizer and do some further preprocessing:\n * - Come up with a set of used names so that we can assign new names.\n * - Preprocess all import/export statements so we know which globals we are interested in.\n * - Compute situations where any of those globals are shadowed.\n *\n * In the future, some of these preprocessing steps can be skipped based on what actual work is\n * being done.\n */\nfunction getSucraseContext(code, options) {\n const isJSXEnabled = options.transforms.includes(\"jsx\");\n const isTypeScriptEnabled = options.transforms.includes(\"typescript\");\n const isFlowEnabled = options.transforms.includes(\"flow\");\n const disableESTransforms = options.disableESTransforms === true;\n const file = parse(code, isJSXEnabled, isTypeScriptEnabled, isFlowEnabled);\n const tokens = file.tokens;\n const scopes = file.scopes;\n\n const nameManager = new NameManager(code, tokens);\n const helperManager = new HelperManager(nameManager);\n const tokenProcessor = new TokenProcessor(\n code,\n tokens,\n isFlowEnabled,\n disableESTransforms,\n helperManager,\n );\n const enableLegacyTypeScriptModuleInterop = Boolean(options.enableLegacyTypeScriptModuleInterop);\n\n let importProcessor = null;\n if (options.transforms.includes(\"imports\")) {\n importProcessor = new CJSImportProcessor(\n nameManager,\n tokenProcessor,\n enableLegacyTypeScriptModuleInterop,\n options,\n options.transforms.includes(\"typescript\"),\n Boolean(options.keepUnusedImports),\n helperManager,\n );\n importProcessor.preprocessTokens();\n // We need to mark shadowed globals after processing imports so we know that the globals are,\n // but before type-only import pruning, since that relies on shadowing information.\n identifyShadowedGlobals(tokenProcessor, scopes, importProcessor.getGlobalNames());\n if (options.transforms.includes(\"typescript\") && !options.keepUnusedImports) {\n importProcessor.pruneTypeOnlyImports();\n }\n } else if (options.transforms.includes(\"typescript\") && !options.keepUnusedImports) {\n // Shadowed global detection is needed for TS implicit elision of imported names.\n identifyShadowedGlobals(tokenProcessor, scopes, getTSImportedNames(tokenProcessor));\n }\n return {tokenProcessor, scopes, nameManager, importProcessor, helperManager};\n}\n", "// A type stripper in plain JavaScript, for a kernel host that can't run\n// esbuild's native binary or WebAssembly (#234). sucrase is an optional\n// dependency, imported only when a kernel picks it (see loadTypeStripper).\n//\n// sucrase removes types without parsing them fully or lowering anything,\n// and keeps every line where it was. What it leaves alone, a cell can't\n// use: decorators and `accessor` fields (which acorn and V8 don't parse\n// yet, #142) and namespaces with values (which it drops), so those are\n// rejected here with a clear error.\n\nimport { parse } from \"acorn\";\nimport { type Options, transform } from \"sucrase\";\nimport { CellSyntaxError, type CellTransformOptions, type TypeStripper } from \"./transform.ts\";\n\nconst FILE = \"cell.tsx\";\n\nfunction jsxSettings(options: CellTransformOptions): Omit<Options, \"transforms\"> {\n const jsx = options.jsx;\n if (jsx?.mode === \"automatic\") {\n return { jsxRuntime: \"automatic\", jsxImportSource: jsx.importSource, production: !jsx.development };\n }\n return {\n jsxRuntime: \"classic\",\n jsxPragma: jsx?.factory ?? \"React.createElement\",\n jsxFragmentPragma: jsx?.fragment ?? \"React.Fragment\",\n production: true,\n };\n}\n\n// A namespace that isn't `declare`d: sucrase drops it, values and all.\nconst NAMESPACE = /^[ \\t]*(?:export\\s+)?(?:namespace|module)\\s+[\\w$.]+\\s*\\{/m;\n\n/** A clearer error than acorn's for syntax sucrase leaves in the output. */\nfunction unsupported(js: string): string | null {\n if (!js.includes(\"@\") && !js.includes(\"accessor\")) return null;\n try {\n parse(js, { ecmaVersion: \"latest\", sourceType: \"module\", allowAwaitOutsideFunction: true });\n return null;\n } catch (err) {\n const pos = (err as { pos?: unknown }).pos;\n if (typeof pos !== \"number\") return null;\n if (js[pos] === \"@\") return \"decorators are not supported with the sucrase type stripper\";\n if (/\\baccessor\\s*$/.test(js.slice(0, pos))) return \"accessor fields are not supported with the sucrase type stripper\";\n return null;\n }\n}\n\nexport const stripTypes: TypeStripper = (code, options, sourcemap) => {\n if (NAMESPACE.test(code)) {\n throw new CellSyntaxError(\n \"namespaces are not supported with the sucrase type stripper; use declare namespace for types only\",\n );\n }\n // Like the esbuild stripper: prefer TSX, fall back to TS for `<T>x`\n // assertions.\n let firstError: unknown;\n for (const transforms of [[\"typescript\", \"jsx\"], [\"typescript\"]] as const) {\n try {\n const result = transform(code, {\n transforms: [...transforms],\n ...jsxSettings(options),\n // As verbatimModuleSyntax: only `import type` goes.\n keepUnusedImports: true,\n disableESTransforms: true,\n filePath: FILE,\n ...(sourcemap ? { sourceMapOptions: { compiledFilename: FILE } } : {}),\n });\n const reason = unsupported(result.code);\n if (reason !== null) throw new CellSyntaxError(reason);\n return { code: result.code, mappings: result.sourceMap?.mappings ?? \"\" };\n } catch (err) {\n if (err instanceof CellSyntaxError) throw err;\n firstError ??= err;\n }\n }\n const message = firstError instanceof Error ? firstError.message : String(firstError);\n throw new CellSyntaxError(message.replace(`Error transforming ${FILE}: `, \"\"));\n};\n", "export function transformSync() { throw new Error(\"esbuild can't strip types in a browser; use typeStrip: \\\"sucrase\\\"\"); }", "// The default type stripper: esbuild. Loaded by loadTypeStripper (see\n// src/transform.ts) only when a kernel uses it, so a host that can't run\n// esbuild's native binary never imports it (#238).\n\nimport { type TransformOptions, transformSync } from \"esbuild\";\nimport { CellSyntaxError, type JsxOptions, type TypeStripper } from \"./transform.ts\";\n\nfunction jsxSettings(jsx: JsxOptions | undefined): TransformOptions {\n if (jsx?.mode === \"automatic\") {\n return { jsx: \"automatic\", jsxImportSource: jsx.importSource, jsxDev: jsx.development };\n }\n return { jsx: \"transform\", jsxFactory: jsx?.factory, jsxFragment: jsx?.fragment };\n}\n\nexport const stripTypes: TypeStripper = (code, options, sourcemap) => {\n const compilerOptions = {\n verbatimModuleSyntax: true,\n ...(options.experimentalDecorators ? { experimentalDecorators: true } : {}),\n };\n // Like Deno: prefer TSX, fall back to TS for `<T>x` assertions.\n let firstError: unknown;\n for (const loader of [\"tsx\", \"ts\"] as const) {\n try {\n const result = transformSync(code, {\n loader,\n target: \"esnext\",\n // Neither acorn nor V8 parses standard (TC39) decorators or\n // `accessor` yet, so esbuild lowers them (#142).\n supported: { decorators: false },\n ...jsxSettings(options.jsx),\n tsconfigRaw: { compilerOptions },\n logLevel: \"silent\",\n ...(sourcemap ? { sourcemap: \"external\" as const } : {}),\n });\n const map: unknown = sourcemap ? JSON.parse(result.map) : null;\n const mappings = typeof (map as { mappings?: unknown } | null)?.mappings === \"string\"\n ? (map as { mappings: string }).mappings\n : \"\";\n return { code: result.code, mappings };\n } catch (err) {\n firstError ??= err;\n }\n }\n const message = firstError instanceof Error ? firstError.message : String(firstError);\n throw new CellSyntaxError(message.replace(/^Transform failed with \\d+ errors?:\\n/, \"\"));\n};\n", "// Turns a notebook cell (TypeScript/TSX, ES module syntax) into a script that\n// CDP's Runtime.evaluate can run with replMode: true.\n//\n// Deno does this with deno_ast (swc) and `var_decl_imports: true`\n// (cli/tools/repl/session.rs, evaluate_ts_expression). Here a type stripper\n// (esbuild by default) does the TypeScript/JSX part and acorn finds the\n// module syntax that a script can't contain:\n// import x, { y as z } from \"m\" -> var __cdpk_m0 = await __cdpk.import(\"m\");\n// var x = __cdpk_m0[\"default\"], z = __cdpk_m0[\"y\"];\n// import(\"m\") -> __cdpk.import(\"m\")\n// import.meta -> __cdpk.meta\n// export const a = 1 -> const a = 1\n// `__cdpk` is installed in the target by runtime/bootstrap.mjs. Routing\n// import() through it matters: code evaluated over the inspector has no\n// module referrer, so Node rejects a bare import() (\"A dynamic import\n// callback was not specified\").\n\nimport { type Node, parse, type Pattern, type Program, type VariableDeclaration } from \"acorn\";\nimport { full, recursive } from \"acorn-walk\";\nimport { LineMap } from \"./sourcemap.ts\";\n\nexport const SHIM = \"__cdpk\";\n\n// Each cell first yields one macrotask. User code then runs as an ordinary\n// task instead of nested inside the inspector's dispatch of Runtime.evaluate,\n// which is what lets a Runtime.terminateExecution from the control session\n// interrupt a busy loop. (Within that dispatch the inspector processes no\n// other messages, so an interrupt would never be seen.)\n//\n// An expression that throws before its first await rejects the replMode\n// result promise at once, inside that dispatch, and a GC before the\n// inspector's then-callback runs fails the evaluate with \"Promise was\n// collected\" (#329). Yielding first moves the throw into a task, where\n// SETTLE's reasoning applies. The debug console uses YIELD for this.\nexport const YIELD = `await ${SHIM}.tick();\\n`;\nconst PRELUDE = `'use strict'; ${YIELD}`;\n\n/**\n * Each replMode cell also ends by yielding one macrotask, so the script\n * settles with no other microtasks queued ahead of the inspector's\n * then-callback. Until that callback runs, the inspector holds the result\n * promise only weakly, and a GC in between fails the evaluate with \"Promise\n * was collected\" (#55). A declaration has no completion value, so the\n * cell's value is unchanged; replMode lets `let` be declared again.\n */\nexport const SETTLE = `\\n;let ${SHIM}_settled = await ${SHIM}.tick();`;\n\nexport class CellSyntaxError extends Error {\n override name: string = \"SyntaxError\";\n}\n\nexport type JsxOptions =\n | { mode: \"automatic\"; importSource?: string; development: boolean }\n | { mode: \"classic\"; factory?: string; fragment?: string };\n\n/**\n * Compiler options for cells, e.g. from a Deno project's compilerOptions\n * (see src/deno-config.ts). Without any, JSX compiles to classic\n * React.createElement calls, Deno's own default.\n */\nexport interface CellTransformOptions {\n jsx?: JsxOptions;\n experimentalDecorators?: boolean;\n /** What removes a cell's types and compiles its JSX; esbuild by default (#238, #234). */\n typeStrip?: TypeStripperName | TypeStripper;\n}\n\n/**\n * Turns a TypeScript/TSX cell into JavaScript with ES module syntax left in\n * place, and with `mappings` (a source map's field, lines are enough) when\n * `sourcemap` is set, for the debugger. Throws CellSyntaxError for code it\n * rejects.\n */\nexport type TypeStripper = (\n code: string,\n options: CellTransformOptions,\n sourcemap: boolean,\n) => { code: string; mappings: string };\n\nexport type TypeStripperName = \"esbuild\" | \"sucrase\";\n\nexport function isTypeStripperName(value: unknown): value is TypeStripperName {\n return value === \"esbuild\" || value === \"sucrase\";\n}\n\nconst strippers = new Map<TypeStripperName, TypeStripper>();\n\n/**\n * Loads a built-in type stripper. Transforms are synchronous, so a kernel\n * loads the one it uses before its first cell; only that one's module is\n * imported (#238).\n */\nexport async function loadTypeStripper(name: TypeStripperName): Promise<TypeStripper> {\n let stripper = strippers.get(name);\n if (stripper === undefined) {\n try {\n stripper = name === \"sucrase\"\n ? (await import(\"./strip-sucrase.ts\")).stripTypes\n : (await import(\"./strip-esbuild.ts\")).stripTypes;\n } catch (err) {\n const reason = err instanceof Error ? err.message : String(err);\n throw new Error(`cannot load the ${name} type stripper (is the ${name} package installed?): ${reason}`);\n }\n strippers.set(name, stripper);\n }\n return stripper;\n}\n\nfunction typeStripper(choice: TypeStripperName | TypeStripper = \"esbuild\"): TypeStripper {\n if (typeof choice === \"function\") return choice;\n const stripper = strippers.get(choice);\n if (stripper === undefined) throw new Error(`the ${choice} type stripper isn't loaded (see loadTypeStripper)`);\n return stripper;\n}\n\n// esbuild compiles `import x = require(\"m\")` to a `require` call, which a\n// cell doesn't have (#143); `import type x = require(\"m\")` is erased.\nconst IMPORT_REQUIRE = /^\\s*(?:export\\s+)?import\\s+(?!type\\s)[\\w$]+\\s*=\\s*require\\s*\\(/m;\n\n/** The stripper's output, with its source map's `mappings` when asked for. */\nfunction stripTypesMapped(code: string, options: CellTransformOptions, sourcemap: boolean): { code: string; mappings: string } {\n if (IMPORT_REQUIRE.test(code)) {\n throw new CellSyntaxError('import x = require(\"m\") is not supported in a cell; use import x from \"m\"');\n }\n return typeStripper(options.typeStrip)(code, options, sourcemap);\n}\n\nfunction stripTypes(code: string, options: CellTransformOptions): string {\n return stripTypesMapped(code, options, false).code;\n}\n\ninterface Edit {\n start: number;\n end: number;\n text: string;\n}\n\ninterface Named {\n type: string;\n name?: string;\n value?: unknown;\n}\n\ninterface ImportSpecifierNode {\n type: \"ImportSpecifier\" | \"ImportDefaultSpecifier\" | \"ImportNamespaceSpecifier\";\n local: Named;\n imported?: Named;\n}\n\ninterface ImportDeclarationNode extends Node {\n source: { value: unknown; raw?: string };\n specifiers: ImportSpecifierNode[];\n attributes?: Node[];\n}\n\ninterface ExportNamedNode extends Node {\n declaration: Node | null;\n source: Node | null;\n}\n\ninterface ExportDefaultNode extends Node {\n declaration: Node;\n}\n\nfunction importedName(spec: ImportSpecifierNode): string {\n const imported = spec.imported;\n if (!imported) return \"default\";\n return imported.type === \"Literal\" ? String(imported.value) : String(imported.name);\n}\n\nfunction rewriteImport(code: string, node: ImportDeclarationNode, index: number): string {\n const source = JSON.stringify(node.source.value);\n const attrs = node.attributes && node.attributes.length > 0\n ? `, { with: { ${node.attributes.map((a) => code.slice(a.start, a.end)).join(\", \")} } }`\n : \"\";\n const load = `await ${SHIM}.import(${source}${attrs})`;\n // `void`: as a cell's last statement, the import isn't its result (#139).\n if (node.specifiers.length === 0) return `void ${load};`;\n const ns = `${SHIM}_m${index}`;\n const bindings = node.specifiers.map((spec) => {\n const local = String(spec.local.name);\n if (spec.type === \"ImportNamespaceSpecifier\") return `${local} = ${ns}`;\n return `${local} = ${ns}[${JSON.stringify(importedName(spec))}]`;\n });\n return `var ${ns} = ${load}; var ${bindings.join(\", \")};`;\n}\n\nfunction parseCell(js: string): Program {\n try {\n return parse(js, {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n allowAwaitOutsideFunction: true,\n allowReturnOutsideFunction: false,\n });\n } catch (err) {\n throw new CellSyntaxError(err instanceof Error ? err.message : String(err));\n }\n}\n\n/** Rewrites module-only syntax in plain JavaScript into script syntax. */\nexport function rewriteModuleSyntax(js: string): string {\n const program = parseCell(js);\n\n const edits: Edit[] = [];\n let importIndex = 0;\n full(program, (node) => {\n switch (node.type) {\n case \"ImportDeclaration\": {\n const decl = node as ImportDeclarationNode;\n edits.push({ start: decl.start, end: decl.end, text: rewriteImport(js, decl, importIndex++) });\n break;\n }\n case \"ImportExpression\":\n // Replace just the `import` keyword; arguments stay as written.\n edits.push({ start: node.start, end: node.start + \"import\".length, text: `${SHIM}.import` });\n break;\n case \"MetaProperty\":\n if (js.slice(node.start, node.end).startsWith(\"import\")) {\n edits.push({ start: node.start, end: node.end, text: `${SHIM}.meta` });\n }\n break;\n case \"ExportNamedDeclaration\": {\n const decl = node as ExportNamedNode;\n if (decl.declaration) {\n edits.push({ start: decl.start, end: decl.declaration.start, text: \"\" });\n } else if (!decl.source) {\n edits.push({ start: decl.start, end: decl.end, text: \"\" }); // export { a, b }\n } else {\n throw new CellSyntaxError(\"re-exports (export ... from) are not supported in a cell\");\n }\n break;\n }\n case \"ExportDefaultDeclaration\": {\n const decl = node as ExportDefaultNode;\n const anonymous = (decl.declaration.type === \"FunctionDeclaration\" || decl.declaration.type === \"ClassDeclaration\") &&\n (decl.declaration as Node & { id: unknown }).id === null;\n // An anonymous `function () {}` or `class {}` isn't a statement on\n // its own; parenthesized, it's an expression and the cell's result (#143).\n edits.push({ start: decl.start, end: decl.declaration.start, text: anonymous ? \"(\" : \"\" });\n if (anonymous) edits.push({ start: decl.declaration.end, end: decl.declaration.end, text: \");\" });\n break;\n }\n case \"ExportAllDeclaration\":\n throw new CellSyntaxError(\"re-exports (export * from) are not supported in a cell\");\n }\n });\n\n // Nested edits can't occur (imports/exports are top level, import()'s\n // keyword edit doesn't overlap its arguments), so apply back to front.\n return applyEdits(js, edits);\n}\n\nfunction newlines(text: string): number {\n let count = 0;\n for (const char of text) if (char === \"\\n\") count++;\n return count;\n}\n\nfunction applyEdits(js: string, edits: Edit[]): string {\n // Back to front; at a shared start, a replacement goes before an insertion.\n edits.sort((a, b) => b.start - a.start || b.end - a.end);\n let out = js;\n for (const edit of edits) {\n // Keep every later line where it was, so a cell's lines still map to\n // esbuild's (the debugger relies on it, #18): a multi-line import\n // rewritten to one line is padded with the newlines it replaced.\n const lost = newlines(js.slice(edit.start, edit.end)) - newlines(edit.text);\n const text = lost > 0 ? edit.text + \"\\n\".repeat(lost) : edit.text;\n out = out.slice(0, edit.start) + text + out.slice(edit.end);\n }\n return out;\n}\n\n/** Adds the names a binding pattern declares. */\nfunction patternNames(pattern: Pattern, names: Set<string>): void {\n switch (pattern.type) {\n case \"Identifier\":\n names.add(pattern.name);\n break;\n case \"ObjectPattern\":\n for (const prop of pattern.properties) patternNames(prop.type === \"Property\" ? prop.value : prop, names);\n break;\n case \"ArrayPattern\":\n for (const element of pattern.elements) if (element) patternNames(element, names);\n break;\n case \"RestElement\":\n patternNames(pattern.argument, names);\n break;\n case \"AssignmentPattern\":\n patternNames(pattern.left, names);\n break;\n }\n}\n\n/**\n * Makes a cell's declarations global without replMode, the tslab/IJavascript\n * technique: the cell runs inside an async function (for top-level await),\n * and every name it declares at the top level is declared with `var` in the\n * surrounding script, which a global-code eval turns into a property of\n * globalThis. Inside the function the declarations become assignments to\n * those globals:\n * const { a } = o; class K {} -> var a, K; (async () => {\n * ({ a } = o); K = class K {}; })()\n * So later cells, and closures from this one, all see one binding. A `var`\n * in a top-level block or loop head is global too, as in a script; block\n * scoped and function-local declarations stay where they are. Functions\n * keep their in-cell hoisting and are copied to globalThis on entry.\n *\n * A trailing expression statement becomes `return [value]`; the box keeps a\n * promise from being awaited, so the cell's result is the promise itself, as\n * in Deno.\n */\nfunction hoistForEval(js: string): string {\n const program = parseCell(js);\n const names = new Set<string>();\n const functions: string[] = [];\n const edits: Edit[] = [];\n const src = (node: Node) => js.slice(node.start, node.end);\n const replace = (node: Node, text: string) => edits.push({ start: node.start, end: node.end, text });\n\n // A declarator without an initializer resets the name, except under var,\n // where redeclaring keeps the value.\n const assignments = (decl: VariableDeclaration): string[] =>\n decl.declarations.flatMap((d) => {\n patternNames(d.id, names);\n if (d.init) return [`${src(d.id)} = ${src(d.init)}`];\n return decl.kind === \"var\" ? [] : [`${src(d.id)} = undefined`];\n });\n const statement = (decl: VariableDeclaration) => {\n const parts = assignments(decl);\n replace(decl, parts.length > 0 ? `(${parts.join(\", \")});` : \";\");\n };\n const isVar = (node: Node | null | undefined): node is VariableDeclaration =>\n node?.type === \"VariableDeclaration\" && (node as VariableDeclaration).kind === \"var\";\n const loopHead = (left: Node) => {\n if (!isVar(left)) return;\n const id = left.declarations[0].id;\n patternNames(id, names);\n replace(left, src(id));\n };\n // Expressions can't hold statements outside a function or class, so only\n // statement bodies are walked.\n const nestedVars = (node: Node) =>\n recursive(node, null, {\n Function() {},\n Class() {},\n VariableDeclaration(decl) {\n if (decl.kind === \"var\") statement(decl);\n },\n ForStatement(loop, state, walk) {\n if (isVar(loop.init)) replace(loop.init, assignments(loop.init).join(\", \"));\n walk(loop.body, state);\n },\n ForInStatement(loop, state, walk) {\n loopHead(loop.left);\n walk(loop.body, state);\n },\n ForOfStatement(loop, state, walk) {\n loopHead(loop.left);\n walk(loop.body, state);\n },\n });\n\n program.body.forEach((stmt, i) => {\n if (stmt.type === \"VariableDeclaration\" && (stmt.kind === \"var\" || stmt.kind === \"let\" || stmt.kind === \"const\")) {\n statement(stmt);\n } else if (stmt.type === \"FunctionDeclaration\") {\n names.add(stmt.id.name);\n functions.push(stmt.id.name);\n } else if (stmt.type === \"ClassDeclaration\") {\n names.add(stmt.id.name);\n edits.push({ start: stmt.start, end: stmt.start, text: `${stmt.id.name} = ` });\n edits.push({ start: stmt.end, end: stmt.end, text: \";\" });\n } else if (stmt.type === \"ExpressionStatement\" && i === program.body.length - 1) {\n // Parenthesized, so `1, 2` returns [2] rather than [1, 2] (#140).\n replace(stmt, `return [(${src(stmt.expression)})];`);\n } else {\n nestedVars(stmt);\n }\n });\n\n // All on the first line, so the cell always starts on line 2, as after\n // transformCell's one-line prelude (#150).\n const declare = names.size > 0 ? `var ${[...names].join(\", \")}; ` : \"\";\n const publish = functions.map((name) => ` globalThis.${name} = ${name};`).join(\"\");\n return `${declare}(async () => { 'use strict';${publish}\\n${applyEdits(js, edits)}\\n})()`;\n}\n\nexport function transformCell(code: string, options: CellTransformOptions = {}): string {\n return PRELUDE + rewriteModuleSyntax(stripTypes(code, options)) + SETTLE;\n}\n\n/**\n * transformCell, plus the map between the cell's lines and the script's,\n * for the debugger (#18). The rewrite keeps lines (see applyEdits), so the\n * script's lines are the stripper's, after the prelude's one.\n */\nexport function transformCellWithLines(code: string, options: CellTransformOptions = {}): { script: string; lines: LineMap } {\n const stripped = stripTypesMapped(code, options, true);\n return { script: PRELUDE + rewriteModuleSyntax(stripped.code) + SETTLE, lines: new LineMap(stripped.mappings, newlines(PRELUDE), stripped.code) };\n}\n\n/**\n * Like transformCell, for a target that evaluates cells itself, as global\n * code (an indirect eval), instead of through the inspector's replMode: see\n * hoistForEval. The script's value is a promise of the boxed result.\n */\nexport function transformCellForEval(code: string, options: CellTransformOptions = {}): string {\n return hoistForEval(rewriteModuleSyntax(stripTypes(code, options)));\n}\n\n/**\n * Deno treats a cell like `{ \"a\": 1 }` as an object literal rather than a\n * block, as browser consoles do. Returns the wrapped form to try first, or\n * null when no wrapping applies.\n */\nexport function objectLiteralCandidate(code: string): string | null {\n return code.trimStart().startsWith(\"{\") && !code.trimEnd().endsWith(\";\") ? `(${code})` : null;\n}\n", "// Jupyter message shapes and headers, without the wire format: what the\n// kernel's message handling (src/kernel-core.ts) builds and reads. The\n// framing and HMAC signing that ZeroMQ peers need are in src/wire.ts.\n\nexport const PROTOCOL_VERSION = \"5.3\";\n\nexport type JsonObject = { [key: string]: unknown };\n\nexport interface Header extends JsonObject {\n msg_id: string;\n session: string;\n date: string;\n username: string;\n msg_type: string;\n version: string;\n}\n\n/** A header as received: the fields the kernel relies on, plus whatever else came. */\nexport interface ReceivedHeader extends JsonObject {\n msg_id: string;\n msg_type: string;\n}\n\n/** A message from a frontend, decoded (and on ZeroMQ, verified). */\nexport interface KernelMessage {\n header: ReceivedHeader;\n parentHeader: JsonObject;\n metadata: JsonObject;\n content: JsonObject;\n buffers: Uint8Array[];\n}\n\n/** A message the kernel sends. */\nexport interface OutgoingMessage {\n header: Header;\n parentHeader: JsonObject;\n metadata: JsonObject;\n content: JsonObject;\n buffers: Uint8Array[];\n}\n\nexport function makeHeader(session: string, msgType: string): Header {\n return {\n msg_id: crypto.randomUUID(),\n session,\n date: new Date().toISOString(),\n username: \"kernel\",\n msg_type: msgType,\n version: PROTOCOL_VERSION,\n };\n}\n", "// What the kernel needs from a target runtime, and what a target sends\n// back: the part of src/target.ts with no Node imports, so the kernel's\n// message handling (src/kernel-core.ts) also loads in a browser.\n\nimport type { CdpParams, EvaluateResult, RemoteObject } from \"./cdp.ts\";\nimport type { DebugChannel } from \"./debugger.ts\";\nimport type { CellTransformOptions } from \"./transform.ts\";\n\n/** Targets driven over CDP. */\nexport type CdpRuntime = \"node\" | \"deno\";\n/** Bun, workerd and celld have their own backends: src/bun-target.ts, src/workerd-target.ts, src/celld-target.ts. */\nexport type RuntimeName = CdpRuntime | \"bun\" | \"workerd\" | \"celld\";\n\n/** Every target: the runtimes a kernelspec names, and the browser's Worker (src/browser/). */\nexport type TargetRuntime = RuntimeName | \"browser\";\n\n/** What the kernel needs from a target runtime. */\nexport interface KernelTarget {\n readonly runtime: TargetRuntime;\n readonly versions: { runtime: string; engine: string };\n /** Shown once, in the first cell: e.g. which project's bindings loaded. */\n readonly notice?: string;\n /** Turns a cell into the script evaluate() takes. */\n transform(code: string, options: CellTransformOptions): string;\n /** Runs a transformed cell. Rejects with Interrupted after interrupt(). */\n evaluate(script: string): Promise<EvaluateResult>;\n interrupt(): Promise<void>;\n /** Resolves once all output and messages sent so far have been delivered. */\n flush(): Promise<void>;\n broadcastResult(executionCount: number, result: RemoteObject): Promise<void>;\n dispatchComm(\n msgType: string,\n content: CdpParams,\n metadata: CdpParams,\n buffers: Uint8Array[],\n ): Promise<{ handled: boolean } | { error: { name: string; message: string; stack: string } }>;\n describeError(exception: RemoteObject): Promise<{ name: string; message: string; stack: string }>;\n propertyNames(expression: string): Promise<string[]>;\n lexicalNames(): Promise<string[]>;\n /** inspect_request (#10): text describing a dotted path's value, without running anything. */\n inspect(path: string, detail: number): Promise<string | null>;\n /** The Debugger domain, on targets driven over CDP (#18). */\n readonly debug?: DebugChannel;\n /** Answers the target's pending prompt; `interrupted` makes it throw instead (#121). */\n replyInput(value: string | null, interrupted?: boolean): void;\n /** What the host waits on, for a kernel that has stopped answering (#237). */\n diagnose?(): Promise<CdpParams>;\n /** Lets go of the last cell's result and error, once they are shown (#286). */\n releaseResults?(): Promise<void>;\n kill(): void;\n}\n\n/** Messages the bootstrap sends: message records on stdout, or Bun's channel. */\nexport type TargetMessage =\n | { kind: \"iopub\"; msg_type: string; content: CdpParams; metadata: CdpParams; buffers: string[]; barrier: number }\n | { kind: \"input_request\"; prompt: string; password: boolean; barrier: number };\n\n/** The parsed value, or undefined for text that isn't JSON. */\nexport function parseJson(text: string): unknown {\n try {\n return JSON.parse(text);\n } catch {\n return undefined;\n }\n}\n\nexport function isTargetMessage(value: unknown): value is TargetMessage {\n if (typeof value !== \"object\" || value === null) return false;\n const kind = (value as { kind?: unknown }).kind;\n return (kind === \"iopub\" || kind === \"input_request\") &&\n typeof (value as { barrier?: unknown }).barrier === \"number\";\n}\n\nexport interface TargetEvents {\n stream(name: \"stdout\" | \"stderr\", text: string): void;\n message(msg: TargetMessage): void;\n /** `note` says why, when the target was stopped on purpose. */\n exit(code: number | null, note?: string): void;\n}\n\nexport class Interrupted extends Error {\n override name = \"Interrupted\";\n}\n", "// Jupyter message handling: shell, control, stdin and iopub, over any\n// transport (KernelChannels) and any target (KernelTarget).\n//\n// Ported from startJupyterKernel in Deno's cli/js/jupyter_kernel.js\n// (v2.9.6), which is Copyright 2018-2026 the Deno authors, MIT license.\n// The thirteen op_jupyter_* calls into Deno's REPL isolate are replaced by\n// a KernelTarget (src/target-api.ts).\n//\n// Nothing here imports Node: src/kernel.ts wires it to ZeroMQ, the target\n// runtimes and the language service, and src/browser/ to a Web Worker.\n\nimport { type Header, type JsonObject, type KernelMessage, makeHeader, type OutgoingMessage, PROTOCOL_VERSION } from \"./message.ts\";\nimport { Interrupted, type KernelTarget, type TargetEvents, type TargetMessage } from \"./target-api.ts\";\nimport type { Debugger } from \"./debugger.ts\";\nimport type { CompletionResult } from \"./notebook-types.ts\";\nimport {\n type CellTransformOptions,\n CellSyntaxError,\n loadTypeStripper,\n objectLiteralCandidate,\n type TypeStripper,\n type TypeStripperName,\n transformCellWithLines,\n} from \"./transform.ts\";\nimport { checkIsComplete, codePointToUtf16Index, exprAtCursor, inspectTarget, utf16ToCodePointIndex } from \"./text.ts\";\nimport { type HistoryEntry, queryHistory } from \"./history.ts\";\nimport type { EvaluateResult } from \"./cdp.ts\";\nimport { buildTraceback, type CallFrame, type CellRecord, cellName, TRACEBACK_MIME } from \"./traceback.ts\";\n\n/** The channels a frontend sends requests on. */\nexport type ChannelName = \"shell\" | \"control\" | \"stdin\";\n\n/** A request, and which of the frontend's connections it came on. */\nexport interface Received {\n peer: string;\n msg: KernelMessage;\n}\n\n/** How messages reach the kernel and leave it: ZeroMQ (src/zmq-channels.ts), or a page (src/browser/). */\nexport interface KernelChannels {\n /** Settles once every channel can carry messages. */\n readonly ready: Promise<unknown>;\n /** The next message on a channel; null for one that is dropped (malformed, or unsigned). */\n recv(channel: ChannelName): Promise<Received | null>;\n /** Shell messages received but not yet taken by recv. */\n shellQueued(): number;\n reply(channel: ChannelName, peer: string, msg: OutgoingMessage): void;\n publish(msg: OutgoingMessage): void;\n /** How many frontends listen on stdin. */\n stdinPeers(): number;\n /** To every frontend listening on stdin. */\n sendStdin(msg: OutgoingMessage): void;\n}\n\n/** Typed completion and tooltips (src/language-service.ts). */\nexport interface TypeService {\n reset(): void;\n addCell(code: string): void;\n complete(code: string, cursor: number): Promise<CompletionResult | null>;\n quickInfo(code: string, cursor: number): Promise<string | null>;\n}\n\n/** What a KernelCore gets from the process it runs in. */\nexport interface KernelHost {\n /** The target's name, for the banner and messages. */\n readonly runtime: string;\n readonly version: string;\n readonly channels: KernelChannels;\n launchTarget(events: TargetEvents): Promise<KernelTarget>;\n /** What strips cells' types; esbuild by default (#238). */\n readonly typeStrip?: TypeStripperName | TypeStripper;\n /** A project's transform settings, e.g. a deno.json's JSX options (#13). */\n readonly transform?: CellTransformOptions;\n /** Shown once, in the first cell: e.g. why a project config wasn't used. */\n readonly warning?: string | null;\n readonly types?: TypeService | null;\n /** JupyterLab's visual debugger, for targets driven over CDP (#18). */\n createDebugger?(publish: (event: JsonObject) => void, transformOptions: () => CellTransformOptions): Debugger;\n /** A file's source, for the lines around a traceback frame (#322). */\n readSource?(file: string): string | undefined;\n /** Path or URL prefixes of the kernel's own runtime files, whose frames a traceback marks as library code. */\n readonly kernelFiles?: readonly string[];\n log(text: string): void;\n /** After shutdown_reply has gone out. */\n exit(): void;\n}\n\nfunction fromBase64(text: string): Uint8Array {\n return Uint8Array.from(atob(text), (c) => c.charCodeAt(0));\n}\n\n/**\n * How long interrupt_request may wait on the target before it's answered\n * anyway (#121). Under the 5 s clients allow control requests (#253).\n */\nconst INTERRUPT_REPLY_WAIT_MS = 1_000;\n\n/** The answer to a target's prompt: a value, or \"unwind the cell\" (#121). */\ninterface InputAnswer {\n value: string | null;\n interrupted: boolean;\n}\n\nconst NO_INPUT: InputAnswer = { value: null, interrupted: false };\n\n/** Cells remembered for tracebacks: a frame can be in a function any earlier cell defined. */\nconst MAX_CELLS = 1000;\n\ninterface ErrorContent extends JsonObject {\n ename: string;\n evalue: string;\n traceback: string[];\n}\n\n/** Shell requests other than execute_request, and their reply types. */\nconst SHELL_REPLIES: Record<string, string> = {\n kernel_info_request: \"kernel_info_reply\",\n complete_request: \"complete_reply\",\n is_complete_request: \"is_complete_reply\",\n inspect_request: \"inspect_reply\",\n history_request: \"history_reply\",\n comm_info_request: \"comm_info_reply\",\n};\n\n/** Runtime inspection text without its Type and Signature lines, which the declared type replaces. */\nfunction withoutSignature(text: string): string {\n return text.split(\"\\n\").filter((line) => !/^(?:Type|Signature): /.test(line)).join(\"\\n\");\n}\n\n/** A TypeScript completion kind as a Jupyter completion type (JupyterLab picks its icon by these). */\nfunction jupyterType(kind: string | undefined): string {\n switch (kind) {\n case undefined:\n return \"<unknown>\";\n case \"var\":\n case \"let\":\n case \"const\":\n case \"local var\":\n case \"parameter\":\n return \"variable\";\n case \"local function\":\n return \"function\";\n case \"type\":\n case \"alias\":\n return \"type\";\n default:\n return kind;\n }\n}\n\nexport class KernelCore {\n readonly #host: KernelHost;\n readonly #channels: KernelChannels;\n readonly #runtime: string;\n readonly #typeStrip: TypeStripperName | TypeStripper;\n #projectWarning: string | null;\n #noticeShownFor: KernelTarget | null = null;\n /** JupyterLab's visual debugger, for targets driven over CDP (#18). */\n readonly #debugger: Debugger | null;\n /** Typed completion from TypeScript's language service (#273). */\n readonly #types: TypeService | null;\n /** Cells run with store_history, for history_request (#10). */\n readonly #history: HistoryEntry[] = [];\n /** Cells that ran, by the name their script ran under, for tracebacks (#322). */\n readonly #cells = new Map<string, CellRecord>();\n readonly #session = crypto.randomUUID();\n #target: KernelTarget | null = null;\n #targetStarting: Promise<KernelTarget> | null = null;\n #executionCount = 0;\n #parent: JsonObject = {};\n #allowStdin = false;\n #executing = false;\n /**\n * stop_on_error (#123): how many of the shell messages queued when a cell\n * failed are still to come, and whether the one being handled is one.\n */\n #abortQueued = 0;\n #aborting = false;\n /** The input_request waiting for its input_reply, if any. */\n #input: { msgId: string; settle: (answer: InputAnswer) => void } | null = null;\n /** An interrupt is waiting on the target. */\n #interrupting = false;\n /** The shell message being handled, and since when. */\n #handling: { msgType: string; msgId: string; since: number } | null = null;\n // Open comms, for comm_info_request: comm_id -> target_name (#9).\n readonly #comms = new Map<string, string>();\n #shuttingDown = false;\n\n constructor(host: KernelHost) {\n this.#host = host;\n this.#channels = host.channels;\n this.#runtime = host.runtime;\n this.#typeStrip = host.typeStrip ?? \"esbuild\";\n this.#projectWarning = host.warning ?? null;\n this.#types = host.types ?? null;\n this.#debugger = host.createDebugger?.((event) => this.#publish(\"debug_event\", event), () => this.#transformOptions()) ?? null;\n }\n\n async run(): Promise<void> {\n // Start the runtime eagerly so the first cell doesn't pay for it.\n this.#ensureTarget().catch((err) => this.#log(`target failed to start: ${err}`));\n // Transforms are synchronous, so the stripper loads before any cell.\n if (typeof this.#typeStrip === \"string\") await loadTypeStripper(this.#typeStrip);\n await Promise.all([this.#loop(\"shell\", (m, p) => this.#handleShell(m, p)),\n this.#loop(\"control\", (m, p) => this.#handleControl(m, p)),\n this.#loop(\"stdin\", (m) => this.#handleStdin(m))]);\n }\n\n /** What SIGINT does: interrupt the cell, or the prompt it waits on. */\n interrupt(): Promise<void> {\n return this.#interrupt();\n }\n\n /** The process is exiting: a target that exits now isn't reported. */\n stopping(): void {\n this.#shuttingDown = true;\n }\n\n #log(text: string): void {\n this.#host.log(text);\n }\n\n /** A state dump, for a kernel that has stopped answering (#237). */\n async logState(): Promise<void> {\n const handling = this.#handling;\n const target = this.#target;\n let targetState: unknown = target === null ? (this.#targetStarting === null ? null : \"starting\") : target.runtime;\n if (target?.diagnose) targetState = await target.diagnose().catch((err) => `diagnose failed: ${err}`);\n this.#log(`state: ${JSON.stringify({\n shell: handling && { msgType: handling.msgType, msgId: handling.msgId, ms: Date.now() - handling.since },\n queued: this.#channels.shellQueued(),\n executing: this.#executing,\n interrupting: this.#interrupting,\n awaitingInput: this.#input !== null,\n target: targetState,\n })}`);\n }\n\n #transformOptions(): CellTransformOptions {\n return { ...this.#host.transform, typeStrip: this.#typeStrip };\n }\n\n // --- comms (#9) ------------------------------------------------------------\n\n #trackComm(msgType: string, content: JsonObject): void {\n const commId = typeof content.comm_id === \"string\" ? content.comm_id : null;\n if (commId === null) return;\n if (msgType === \"comm_open\" && typeof content.target_name === \"string\") this.#comms.set(commId, content.target_name);\n else if (msgType === \"comm_close\") this.#comms.delete(commId);\n }\n\n #commInfo(content: JsonObject): JsonObject {\n const filter = typeof content.target_name === \"string\" ? content.target_name : null;\n const comms: JsonObject = {};\n for (const [commId, targetName] of this.#comms) {\n if (filter === null || filter === targetName) comms[commId] = { target_name: targetName };\n }\n return comms;\n }\n\n /** A frontend comm message. The busy/idle status around it is the caller's. */\n async #handleComm(msg: KernelMessage): Promise<void> {\n const type = msg.header.msg_type;\n const commId = String(msg.content.comm_id ?? \"\");\n const target = await this.#ensureTarget();\n // Kernel messages the handlers send are replies to this message.\n this.#parent = msg.header;\n this.#allowStdin = false;\n this.#executing = true;\n let handled = false;\n try {\n const result = await target.dispatchComm(type, msg.content, msg.metadata, msg.buffers);\n if (\"error\" in result) {\n const { name, message, stack } = result.error;\n this.#publish(\"stream\", { name: \"stderr\", text: `Error in ${type} handler: ${stack || `${name}: ${message}`}\\n` });\n } else {\n handled = result.handled;\n }\n } catch (err) {\n if (!(err instanceof Interrupted)) throw err;\n this.#publish(\"stream\", { name: \"stderr\", text: `${type} handler interrupted\\n` });\n } finally {\n this.#executing = false;\n }\n await target.flush().catch(() => {});\n if (type === \"comm_open\") {\n if (handled) {\n this.#comms.set(commId, String(msg.content.target_name ?? \"\"));\n } else {\n // An unknown target, or a handler that failed: the protocol asks the\n // kernel to close the comm so the frontend doesn't wait on it.\n this.#publish(\"comm_close\", { comm_id: commId, data: {} });\n }\n } else if (type === \"comm_close\") {\n this.#comms.delete(commId);\n }\n }\n\n // --- target lifecycle -----------------------------------------------------\n\n #ensureTarget(): Promise<KernelTarget> {\n if (this.#target) return Promise.resolve(this.#target);\n // Not before the kernel's own ports are bound: a Deno runtime binds its\n // inspector to port 0 within milliseconds of starting and can take a\n // connection-file port the kernel is still binding (#257).\n this.#targetStarting ??= this.#channels.ready.then(() => this.#host.launchTarget(this.#targetEvents())).then(async (target) => {\n // Before any cell runs on it, so breakpoints already apply.\n await this.#debugger?.attachTarget(target.debug ?? null);\n this.#target = target;\n this.#targetStarting = null;\n return target;\n }, (err) => {\n this.#targetStarting = null;\n throw err;\n });\n return this.#targetStarting;\n }\n\n #targetEvents(): TargetEvents {\n return {\n stream: (name, text) => this.#publish(\"stream\", { name, text }),\n message: (msg) => void this.#onTargetMessage(msg).catch((err) => this.#log(`error handling target message: ${err}`)),\n exit: (code, note) => {\n this.#target = null;\n // What its cells declared died with it.\n this.#types?.reset();\n // Its prompt, if any, died with it; a late reply is dropped.\n this.#input = null;\n void this.#debugger?.attachTarget(null);\n if (!this.#shuttingDown) {\n const text = note ?? `[cdp-kernel] ${this.#runtime} exited (${code}); restarting on next cell`;\n this.#publish(\"stream\", { name: \"stderr\", text: `\\n${text}\\n` });\n }\n },\n };\n }\n\n async #onTargetMessage(msg: TargetMessage): Promise<void> {\n if (msg.kind === \"iopub\") {\n this.#trackComm(msg.msg_type, msg.content);\n this.#publish(msg.msg_type, msg.content, {\n metadata: msg.metadata,\n buffers: msg.buffers.map(fromBase64),\n });\n return;\n }\n // The answer goes to the target that asked, not one started since.\n const target = this.#target;\n let answer = NO_INPUT;\n try {\n answer = await this.#requestInput(msg.prompt, msg.password);\n } finally {\n // Always answer exactly once so the target's blocking read returns.\n if (target !== null && target === this.#target) target.replyInput(answer.value, answer.interrupted);\n }\n }\n\n async #interrupt(): Promise<void> {\n // A target blocked reading its prompt's answer can't run\n // terminateExecution, and would never answer it. Make the prompt throw\n // instead, which ends the cell (#121).\n const input = this.#input;\n if (input !== null) {\n this.#input = null;\n input.settle({ value: null, interrupted: true });\n return;\n }\n if (!this.#target || !this.#executing) return;\n this.#interrupting = true;\n try {\n await this.#target.interrupt();\n } finally {\n this.#interrupting = false;\n }\n }\n\n // --- messaging --------------------------------------------------------------\n\n #message(\n msgType: string,\n content: JsonObject,\n parentHeader: JsonObject,\n extra: { header?: Header; metadata?: JsonObject; buffers?: Uint8Array[] } = {},\n ): OutgoingMessage {\n return {\n header: extra.header ?? makeHeader(this.#session, msgType),\n parentHeader,\n metadata: extra.metadata ?? {},\n content,\n buffers: extra.buffers ?? [],\n };\n }\n\n #publish(msgType: string, content: JsonObject, extra: { metadata?: JsonObject; buffers?: Uint8Array[]; parent?: JsonObject } = {}): void {\n this.#channels.publish(this.#message(msgType, content, extra.parent ?? this.#parent, extra));\n }\n\n #status(state: \"busy\" | \"idle\", parent: JsonObject): void {\n this.#publish(\"status\", { execution_state: state }, { parent });\n }\n\n #reply(channel: ChannelName, peer: string, request: KernelMessage, msgType: string, content: JsonObject): void {\n this.#channels.reply(channel, peer, this.#message(msgType, content, request.header));\n }\n\n async #loop(channel: ChannelName, handle: (msg: KernelMessage, peer: string) => Promise<void>): Promise<void> {\n while (!this.#shuttingDown) {\n const received = await this.#channels.recv(channel);\n if (channel === \"shell\") {\n this.#aborting = this.#abortQueued > 0;\n if (this.#aborting) this.#abortQueued--;\n }\n // Malformed, or on ZeroMQ unsigned or forged: dropped, as in Deno.\n if (received === null) continue;\n const { peer, msg } = received;\n try {\n if (channel === \"shell\") this.#handling = { msgType: msg.header.msg_type, msgId: msg.header.msg_id, since: Date.now() };\n await handle(msg, peer);\n } catch (err) {\n this.#log(`error handling message: ${err instanceof Error ? err.stack : err}`);\n } finally {\n if (channel === \"shell\") this.#handling = null;\n }\n }\n }\n\n #kernelInfo(): JsonObject {\n const versions = this.#target?.versions;\n return {\n status: \"ok\",\n protocol_version: PROTOCOL_VERSION,\n implementation: \"cdp-kernel\",\n implementation_version: this.#host.version,\n language_info: {\n name: \"typescript\",\n version: \"5\",\n mimetype: \"text/x.typescript\",\n file_extension: \".ts\",\n pygments_lexer: \"typescript\",\n codemirror_mode: \"typescript\",\n nbconvert_exporter: \"script\",\n },\n // The runtime's versions are known once it is up.\n banner: versions ? `cdp-kernel on ${this.#runtime} ${versions.runtime} (${versions.engine || \"?\"})` : `cdp-kernel on ${this.#runtime}`,\n help_links: [],\n debugger: this.#debugger !== null,\n // What current ipykernel advertises; JupyterLab itself goes by the\n // kernelspec's metadata.debugger.\n supported_features: this.#debugger !== null ? [\"debugger\"] : [],\n };\n }\n\n // --- control channel ------------------------------------------------------\n\n async #handleControl(msg: KernelMessage, peer: string): Promise<void> {\n // Every request is wrapped in busy/idle, as on shell (#124). JupyterLab\n // treats a debug request as done only once the kernel reports idle for\n // it. (Jupyter Server leaves debug_request out of the kernel's status.)\n this.#status(\"busy\", msg.header);\n try {\n await this.#controlRequest(\"control\", msg, peer);\n } finally {\n this.#status(\"idle\", msg.header);\n }\n }\n\n /** Control requests; shutdown and interrupt may also arrive on shell (#124). */\n async #controlRequest(channel: ChannelName, msg: KernelMessage, peer: string): Promise<void> {\n switch (msg.header.msg_type) {\n case \"kernel_info_request\":\n this.#reply(channel, peer, msg, \"kernel_info_reply\", this.#kernelInfo());\n break;\n case \"interrupt_request\":\n // Answer even if the target doesn't (#121); the interrupt goes on.\n await Promise.race([\n this.#interrupt().catch((err) => this.#log(`interrupt failed: ${err}`)),\n new Promise((r) => setTimeout(r, INTERRUPT_REPLY_WAIT_MS)),\n ]);\n this.#reply(channel, peer, msg, \"interrupt_reply\", { status: \"ok\" });\n break;\n case \"debug_request\": {\n let reply: JsonObject;\n if (this.#debugger === null) {\n reply = { type: \"response\", request_seq: msg.content.seq, command: msg.content.command, success: false, message: `${this.#runtime} targets have no debugger`, body: {} };\n } else {\n // Everything but debugInfo talks to the target, so make sure there is one.\n if (msg.content.command !== \"debugInfo\") await this.#ensureTarget().catch(() => null);\n reply = await this.#debugger.handle(msg.content) as JsonObject;\n }\n this.#reply(channel, peer, msg, \"debug_reply\", reply);\n break;\n }\n case \"shutdown_request\": {\n const restart = msg.content.restart === true;\n this.#reply(channel, peer, msg, \"shutdown_reply\", { status: \"ok\", restart });\n this.#shuttingDown = true;\n this.#target?.kill();\n // Frontends spawn a fresh kernel even on restart; exit after the\n // reply has had a moment to flush (denoland/deno#20556).\n setTimeout(() => this.#host.exit(), 100);\n break;\n }\n }\n }\n\n // --- shell channel ----------------------------------------------------------\n\n async #handleShell(msg: KernelMessage, peer: string): Promise<void> {\n const type = msg.header.msg_type;\n if (type === \"execute_request\") return this.#execute(msg, peer);\n this.#status(\"busy\", msg.header);\n try {\n switch (type) {\n case \"kernel_info_request\":\n // Without waiting for the runtime: clients probe with kernel_info\n // while it starts, and re-send until answered (#253).\n this.#reply(\"shell\", peer, msg, \"kernel_info_reply\", this.#kernelInfo());\n break;\n case \"complete_request\":\n this.#reply(\"shell\", peer, msg, \"complete_reply\", await this.#complete(msg));\n break;\n case \"is_complete_request\":\n this.#reply(\"shell\", peer, msg, \"is_complete_reply\", checkIsComplete(String(msg.content.code ?? \"\")));\n break;\n case \"inspect_request\":\n this.#reply(\"shell\", peer, msg, \"inspect_reply\", await this.#inspect(msg));\n break;\n case \"history_request\":\n this.#reply(\"shell\", peer, msg, \"history_reply\", { status: \"ok\", history: queryHistory(this.#history, msg.content) });\n break;\n case \"comm_info_request\":\n this.#reply(\"shell\", peer, msg, \"comm_info_reply\", { status: \"ok\", comms: this.#commInfo(msg.content) });\n break;\n case \"comm_open\":\n case \"comm_msg\":\n case \"comm_close\":\n await this.#handleComm(msg);\n break;\n case \"shutdown_request\":\n case \"interrupt_request\":\n // Deprecated on shell, but still allowed, and ipykernel takes them.\n await this.#controlRequest(\"shell\", msg, peer);\n break;\n default:\n this.#log(`ignoring unknown shell message ${type}`);\n }\n } catch (err) {\n // E.g. the runtime failed to launch. Answer anyway, so the frontend\n // doesn't wait on the request forever (#125).\n const replyType = SHELL_REPLIES[type];\n if (replyType !== undefined) {\n const name = err instanceof Error ? err.name : \"Error\";\n const message = err instanceof Error ? err.message : String(err);\n const error: ErrorContent = { ename: name, evalue: message, traceback: [`${name}: ${message}`] };\n this.#reply(\"shell\", peer, msg, replyType, { status: \"error\", ...error });\n }\n throw err;\n } finally {\n this.#status(\"idle\", msg.header);\n }\n }\n\n /**\n * The tooltip (Shift-Tab) for the name at the cursor (#10): its declared\n * type, signature and JSDoc when the language service knows them (#274),\n * then what the runtime finds.\n */\n async #inspect(msg: KernelMessage): Promise<JsonObject> {\n const code = String(msg.content.code ?? \"\");\n const cursorCp = typeof msg.content.cursor_pos === \"number\"\n ? msg.content.cursor_pos\n : utf16ToCodePointIndex(code, code.length);\n const cursor = codePointToUtf16Index(code, cursorCp);\n const path = inspectTarget(code, cursor);\n const detail = msg.content.detail_level === 1 ? 1 : 0;\n const [runtime, typed] = await Promise.all([\n path === null ? null : (async () => (await this.#ensureTarget()).inspect(path, detail))(),\n this.#types?.quickInfo(code, cursor) ?? null,\n ]);\n const text = typed === null ? runtime : runtime === null ? typed : `${typed}\\n\\n${withoutSignature(runtime)}`;\n return text === null\n ? { status: \"ok\", found: false, data: {}, metadata: {} }\n : { status: \"ok\", found: true, data: { \"text/plain\": text }, metadata: {} };\n }\n\n async #complete(msg: KernelMessage): Promise<JsonObject> {\n const code = String(msg.content.code ?? \"\");\n const cursorCp = typeof msg.content.cursor_pos === \"number\"\n ? msg.content.cursor_pos\n : utf16ToCodePointIndex(code, code.length);\n const cursor = codePointToUtf16Index(code, cursorCp);\n // Both at once: the language service may not answer within its budget.\n const [runtime, typed] = await Promise.all([\n this.#runtimeCompletions(code, cursor),\n this.#types?.complete(code, cursor) ?? null,\n ]);\n // Declared types first, then what only the runtime knows (a property\n // added at runtime, a global defined by a library).\n let matches = runtime.matches;\n let start = runtime.start;\n const kinds = new Map<string, string>();\n if (typed !== null && typed.start === runtime.start) {\n for (const entry of typed.entries) kinds.set(entry.name, entry.kind);\n matches = [...kinds.keys(), ...runtime.matches.filter((name) => !kinds.has(name))];\n } else if (typed !== null && typed.entries.length > 0 && runtime.matches.length === 0) {\n // An expression the runtime can't complete, e.g. inside a call.\n for (const entry of typed.entries) kinds.set(entry.name, entry.kind);\n matches = [...kinds.keys()];\n start = typed.start;\n }\n const cursorStart = utf16ToCodePointIndex(code, start);\n return {\n status: \"ok\",\n matches,\n cursor_start: cursorStart,\n cursor_end: cursorCp,\n metadata: kinds.size === 0 ? {} : {\n // JupyterLab shows each match's type as an icon.\n _jupyter_types_experimental: matches.map((text) => ({\n start: cursorStart,\n end: cursorCp,\n text,\n type: jupyterType(kinds.get(text)),\n })),\n },\n };\n }\n\n /** Completion from the runtime's values: property names, globals, lexical names. */\n async #runtimeCompletions(code: string, cursor: number): Promise<{ matches: string[]; start: number }> {\n const expr = exprAtCursor(code, cursor);\n const target = await this.#ensureTarget();\n const dot = expr.lastIndexOf(\".\");\n if (dot !== -1) {\n const prefix = expr.slice(dot + 1);\n const matches = (await target.propertyNames(expr.slice(0, dot)))\n .filter((name) => name.startsWith(prefix) && !name.startsWith(\"Symbol(\"));\n return { matches, start: cursor - prefix.length };\n }\n const names = new Set([...(await target.propertyNames(\"globalThis\")), ...(await target.lexicalNames())]);\n const matches = [...names].filter((name) => name.startsWith(expr) && !name.startsWith(\"__cdpk\")).sort();\n return { matches, start: cursor - expr.length };\n }\n\n async #requestInput(prompt: string, password: boolean): Promise<InputAnswer> {\n // The target asked while an interrupt was already waiting on it.\n if (this.#interrupting) return { value: null, interrupted: true };\n const parent = this.#parent;\n if (!this.#allowStdin || typeof parent.msg_id !== \"string\") return NO_INPUT;\n if (this.#channels.stdinPeers() === 0) await new Promise((r) => setTimeout(r, 100));\n if (this.#channels.stdinPeers() === 0) return NO_INPUT;\n const header = makeHeader(this.#session, \"input_request\");\n const answer = new Promise<InputAnswer>((settle) => (this.#input = { msgId: header.msg_id, settle }));\n this.#channels.sendStdin(this.#message(\"input_request\", { prompt, password }, parent, { header }));\n return answer;\n }\n\n /** stdin carries only input_replys. */\n async #handleStdin(reply: KernelMessage): Promise<void> {\n if (reply.header.msg_type !== \"input_reply\") return;\n const input = this.#input;\n // A reply with nothing waiting is late (its prompt was interrupted), and\n // one naming another request is for an earlier prompt: drop both rather\n // than answer the next prompt with them (#121). Some clients\n // (jupyter_client's input()) send no parent header, so only a present\n // one is checked.\n if (input === null) return;\n const parentId = reply.parentHeader.msg_id;\n if (typeof parentId === \"string\" && parentId !== \"\" && parentId !== input.msgId) return;\n this.#input = null;\n input.settle({ value: typeof reply.content.value === \"string\" ? reply.content.value : null, interrupted: false });\n }\n\n /**\n * The structured form of a cell's error, and the classic lines with cell\n * frames pointing at the cell's own lines. Null, with `error` as it was,\n * if it can't be built: the user must always get the traceback.\n */\n #structuredTraceback(error: ErrorContent, stack: string, callFrames: CallFrame[] | undefined, cell: CellRecord): JsonObject | null {\n try {\n const traceback = buildTraceback({ ename: error.ename, evalue: error.evalue, stack, callFrames }, {\n cell: (file) => {\n const record = this.#cells.get(file);\n if (record === undefined) return undefined;\n let lines = null;\n try {\n lines = transformCellWithLines(record.code, this.#transformOptions()).lines;\n } catch {\n // A cell that ran transforms again; if not, its lines go unmapped.\n }\n return { ...record, lines };\n },\n readFile: (file) => this.#host.readSource?.(file),\n kernelFiles: this.#host.kernelFiles,\n }, cell);\n error.traceback = traceback.lines;\n return traceback.payload as JsonObject;\n } catch (err) {\n this.#host.log(`structured traceback failed: ${err instanceof Error ? err.message : String(err)}`);\n return null;\n }\n }\n\n /** Remembers the cell under the name its script runs as. */\n #remember(name: string, cell: CellRecord): void {\n this.#cells.delete(name);\n this.#cells.set(name, cell);\n if (this.#cells.size > MAX_CELLS) this.#cells.delete(this.#cells.keys().next().value!);\n }\n\n async #evaluateCell(target: KernelTarget, cell: CellRecord): Promise<EvaluateResult> {\n const code = cell.code;\n // Object-literal wrapping (Deno's evaluate_line_with_object_wrapping):\n // try `({ ... })` first and fall back to the code as written.\n // While debugging, cells carry the path JupyterLab gave them and keep a\n // line map, so breakpoints bind and frames point at the cell (#18).\n const debugging = this.#debugger?.started === true && target.debug !== undefined;\n // Otherwise each cell's script is named for its code, so a traceback\n // can tell which cell a frame is in (#322).\n const name = debugging && this.#debugger ? this.#debugger.pathFor(code) : cellName(code);\n this.#remember(name, cell);\n const transform = (source: string) =>\n debugging && this.#debugger\n ? this.#debugger.cellScript(code, source)\n : `${target.transform(source, this.#transformOptions())}\\n//# sourceURL=${name}`;\n const wrapped = objectLiteralCandidate(code);\n if (wrapped !== null) {\n try {\n const result = await target.evaluate(transform(wrapped));\n if (!result.exceptionDetails) return result;\n } catch (err) {\n if (!(err instanceof CellSyntaxError)) throw err;\n }\n }\n return target.evaluate(transform(code));\n }\n\n async #execute(msg: KernelMessage, peer: string): Promise<void> {\n const parent = msg.header;\n if (this.#aborting) {\n // Queued behind a failed cell: not run, not counted (#123).\n this.#status(\"busy\", parent);\n this.#reply(\"shell\", peer, msg, \"execute_reply\", { status: \"aborted\" });\n this.#status(\"idle\", parent);\n return;\n }\n const code = String(msg.content.code ?? \"\");\n const silent = msg.content.silent === true;\n if (!silent && msg.content.store_history !== false) {\n this.#executionCount++;\n this.#history.push({ line: this.#executionCount, input: code });\n }\n const count = this.#executionCount;\n this.#parent = parent;\n this.#allowStdin = msg.content.allow_stdin === true;\n this.#status(\"busy\", parent);\n // Silent requests broadcast nothing on iopub but status (#124).\n if (!silent) this.#publish(\"execute_input\", { code, execution_count: count });\n if (this.#projectWarning !== null) {\n // Shown once, in the first cell, where the user will see it.\n this.#publish(\"stream\", { name: \"stderr\", text: `[cdp-kernel] ${this.#projectWarning}\\n` });\n this.#projectWarning = null;\n }\n\n let error: ErrorContent | null = null;\n // nteract's structured traceback, sent as the error message's metadata (#322).\n let structured: JsonObject | null = null;\n this.#executing = true;\n try {\n const target = await this.#ensureTarget();\n if (target.notice !== undefined && this.#noticeShownFor !== target) {\n // Once per target, in the first cell it runs.\n this.#noticeShownFor = target;\n this.#publish(\"stream\", { name: \"stderr\", text: `${target.notice}\\n` });\n }\n const cell: CellRecord = {\n code,\n executionCount: silent || msg.content.store_history === false ? null : count,\n cellId: typeof msg.metadata.cellId === \"string\" ? msg.metadata.cellId : null,\n };\n const result = await this.#evaluateCell(target, cell);\n // It ran, so its declarations exist, even if it threw part way.\n this.#types?.addCell(code);\n if (result.exceptionDetails) {\n const exception = result.exceptionDetails.exception;\n const described = exception\n ? await target.describeError(exception)\n : { name: \"Error\", message: result.exceptionDetails.text, stack: \"\" };\n error = {\n ename: described.name || \"Error\",\n evalue: described.message,\n traceback: (described.stack || `${described.name}: ${described.message}`).split(\"\\n\"),\n };\n structured = this.#structuredTraceback(error, described.stack, result.exceptionDetails.stackTrace?.callFrames, cell);\n } else if (!silent && result.result.type !== \"undefined\") {\n await target.broadcastResult(count, result.result);\n }\n await target.flush();\n } catch (err) {\n if (err instanceof CellSyntaxError) {\n // Deno reports these as an opaque \"Execution failed\".\n error = { ename: \"SyntaxError\", evalue: err.message, traceback: [`SyntaxError: ${err.message}`] };\n } else if (err instanceof Interrupted) {\n error = { ename: \"Interrupted\", evalue: \"Execution interrupted\", traceback: [\"Execution interrupted\"] };\n await this.#target?.flush().catch(() => {});\n } else {\n const message = err instanceof Error ? err.message : String(err);\n error = { ename: \"KernelError\", evalue: message, traceback: [message] };\n }\n } finally {\n this.#executing = false;\n }\n // The result and error are shown: nothing refers to them any more (#286).\n await this.#target?.releaseResults?.();\n\n if (error) {\n if (!silent && msg.content.stop_on_error !== false) {\n // Abort what was queued behind this cell (JupyterLab's Run All sends\n // every cell at once), but nothing sent after the client sees the\n // error. A macrotask first lets bytes already received be parsed.\n await new Promise((r) => setTimeout(r, 0));\n this.#abortQueued = this.#channels.shellQueued();\n }\n this.#publish(\"error\", error, structured ? { metadata: { [TRACEBACK_MIME]: structured } } : {});\n this.#reply(\"shell\", peer, msg, \"execute_reply\", { status: \"error\", execution_count: count, ...error });\n } else {\n this.#reply(\"shell\", peer, msg, \"execute_reply\", {\n status: \"ok\",\n execution_count: count,\n payload: [],\n user_expressions: {},\n });\n }\n this.#status(\"idle\", parent);\n }\n}\n", "// Text helpers for is_complete and complete requests.\n//\n// Ported from Deno's cli/js/jupyter_kernel.js (v2.9.6), which is\n// Copyright 2018-2026 the Deno authors, MIT license.\n\nexport type IsCompleteReply =\n | { status: \"complete\" }\n | { status: \"incomplete\"; indent: string }\n | { status: \"invalid\" };\n\n// Keywords after which a `/` starts a regex literal rather than dividing.\nconst REGEX_AFTER_WORD = new Set([\n \"return\", \"typeof\", \"instanceof\", \"in\", \"of\", \"new\", \"delete\", \"void\", \"throw\",\n \"case\", \"do\", \"else\", \"yield\", \"await\",\n]);\n\n/**\n * Whether a `/` at `i` (not starting a comment) begins a regex literal: the\n * usual heuristic, true unless the previous token can end an operand (a\n * name, number, closing bracket or string). It can't tell `a++ / b` or a\n * block's `} /re/` apart; those are rare enough in a console.\n */\nfunction startsRegex(code: string, i: number): boolean {\n let j = i - 1;\n while (j >= 0 && /\\s/.test(code[j])) j--;\n if (j < 0) return true;\n const prev = code[j];\n if (/[\\w$]/.test(prev)) {\n const word = /[\\w$]+$/.exec(code.slice(0, j + 1))?.[0] ?? \"\";\n return REGEX_AFTER_WORD.has(word);\n }\n return !/[)\\]}'\"`]/.test(prev);\n}\n\n/** The index just past a regex literal starting at `i`, or -1 if it doesn't end on its line. */\nfunction regexEnd(code: string, i: number): number {\n let inClass = false;\n for (let j = i + 1; j < code.length; j++) {\n const c = code[j];\n if (c === \"\\n\") return -1;\n if (c === \"\\\\\") j++;\n else if (c === \"[\") inClass = true;\n else if (c === \"]\") inClass = false;\n else if (c === \"/\" && !inClass) return j + 1;\n }\n return -1;\n}\n\n/**\n * Bracket/quote/comment scanner deciding whether a cell is finished. Regex\n * literals are recognised heuristically (see startsRegex), and a template's\n * `${...}` is skipped like the rest of the template.\n */\nexport function checkIsComplete(code: string): IsCompleteReply {\n const stack: string[] = [];\n const closers: Record<string, string> = { \")\": \"(\", \"]\": \"[\", \"}\": \"{\" };\n let i = 0;\n while (i < code.length) {\n const ch = code[i];\n if (ch === \"/\" && code[i + 1] === \"/\") {\n while (i < code.length && code[i] !== \"\\n\") i++;\n continue;\n }\n if (ch === \"/\" && code[i + 1] === \"*\") {\n const end = code.indexOf(\"*/\", i + 2);\n if (end === -1) return { status: \"incomplete\", indent: \"\" };\n i = end + 2;\n continue;\n }\n if (ch === \"/\" && startsRegex(code, i)) {\n const end = regexEnd(code, i);\n if (end !== -1) {\n i = end;\n continue;\n }\n }\n if (ch === \"'\" || ch === '\"' || ch === \"`\") {\n i++;\n let closed = false;\n while (i < code.length) {\n if (code[i] === \"\\\\\") {\n i += 2;\n continue;\n }\n if (code[i++] === ch) {\n closed = true;\n break;\n }\n }\n if (!closed) return { status: \"incomplete\", indent: \"\" };\n continue;\n }\n if (ch === \"(\" || ch === \"[\" || ch === \"{\") stack.push(ch);\n else if (ch in closers && stack.pop() !== closers[ch]) return { status: \"invalid\" };\n i++;\n }\n return stack.length === 0 ? { status: \"complete\" } : { status: \"incomplete\", indent: \" \" };\n}\n\n/** The dotted expression ending at the cursor, e.g. \"Math.fl\". */\nexport function exprAtCursor(code: string, cursor: number): string {\n const m = /[\\w$.]+$/.exec(code.slice(0, cursor));\n return m ? m[0] : \"\";\n}\n\n/**\n * The dotted name an inspect_request means (#10): the one the cursor is in\n * or just after, or, right after \"name(\" while typing a call, that callee.\n * Null when it isn't a plain path; nothing else is evaluated.\n */\nexport function inspectTarget(code: string, cursor: number): string | null {\n let end = cursor;\n // Inside a call's parentheses with nothing typed yet: \"add(|\".\n const before = code.slice(0, cursor);\n const call = /([\\w$.]+)\\(\\s*$/.exec(before);\n if (call) end = cursor - (before.length - before.lastIndexOf(\"(\", cursor));\n const head = /[\\w$.]*$/.exec(code.slice(0, end))?.[0] ?? \"\";\n const tail = call ? \"\" : (/^[\\w$]*/.exec(code.slice(end))?.[0] ?? \"\");\n const path = (head + tail).replace(/\\.$/, \"\");\n return /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*)*$/.test(path) ? path : null;\n}\n\n// Jupyter measures cursor_pos in Unicode codepoints; JS strings index UTF-16\n// code units (denoland/deno#22771).\nexport function codePointToUtf16Index(str: string, cpOffset: number): number {\n let utf16 = 0;\n for (let cp = 0; cp < cpOffset && utf16 < str.length; cp++) {\n utf16 += (str.codePointAt(utf16) ?? 0) > 0xffff ? 2 : 1;\n }\n return utf16;\n}\n\nexport function utf16ToCodePointIndex(str: string, utf16Offset: number): number {\n let cp = 0;\n for (let utf16 = 0; utf16 < utf16Offset && utf16 < str.length; cp++) {\n utf16 += (str.codePointAt(utf16) ?? 0) > 0xffff ? 2 : 1;\n }\n return cp;\n}\n", "// history_request (#10): the cells this kernel has run, for the frontend's\n// history (e.g. arrow-up recall in a console). In memory, for one kernel\n// session, which is session 1; earlier sessions aren't kept.\n\nexport interface HistoryEntry {\n line: number;\n input: string;\n}\n\n/** [session, line, input], as history_reply carries it without output. */\nexport type HistoryItem = [number, number, string];\n\nexport const SESSION = 1;\n\n/** Shell-style glob (\"*\" and \"?\") to a whole-string RegExp. */\nfunction globToRegExp(pattern: string): RegExp {\n const escaped = pattern.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\").replace(/\\*/g, \"[\\\\s\\\\S]*\").replace(/\\?/g, \"[\\\\s\\\\S]\");\n return new RegExp(`^${escaped}$`);\n}\n\n/**\n * Answers a history_request's content:\n * tail: the last `n` entries;\n * range: lines `start` to `stop` (exclusive) of `session` (1, 0 or -0\n * mean this one), all lines when `stop` is missing;\n * search: entries matching the glob `pattern`, newest `n` when `n` is\n * set, optionally `unique` by input.\n */\nexport function queryHistory(entries: readonly HistoryEntry[], content: { [key: string]: unknown }): HistoryItem[] {\n const items = entries.map((e): HistoryItem => [SESSION, e.line, e.input]);\n const n = typeof content.n === \"number\" && content.n > 0 ? content.n : undefined;\n switch (content.hist_access_type) {\n case \"tail\":\n return n === undefined ? items : items.slice(-n);\n case \"range\": {\n const session = typeof content.session === \"number\" ? content.session : SESSION;\n if (session !== SESSION && session !== 0) return [];\n const start = typeof content.start === \"number\" ? content.start : 0;\n const stop = typeof content.stop === \"number\" ? content.stop : Infinity;\n return items.filter(([, line]) => line >= start && line < stop);\n }\n case \"search\": {\n const pattern = globToRegExp(typeof content.pattern === \"string\" ? content.pattern : \"*\");\n let found = items.filter(([, , input]) => pattern.test(input));\n if (content.unique === true) {\n const seen = new Set<string>();\n // Newest occurrence of each input, in order.\n found = found.reverse().filter(([, , input]) => !seen.has(input) && seen.add(input) !== undefined).reverse();\n }\n return n === undefined ? found : found.slice(-n);\n }\n default:\n return [];\n }\n}\n", "// MurmurHash2 (32-bit), as the Jupyter debugger uses it to name a cell's\n// source (#18). JupyterLab computes a cell's path itself, as tmpFilePrefix +\n// murmur2(code, hashSeed) + tmpFileSuffix, and the kernel must name the\n// cell's script the same way, so this follows JupyterLab's\n// packages/debugger/src/hash.ts (Modified BSD License, Copyright (c) Jupyter\n// Development Team), itself adapted from Gary Court's murmurhash2_gc.js\n// (MIT License, Copyright (c) 2011 Gary Court).\n\nconst M = 0x5bd1e995;\nconst ENCODER = new TextEncoder();\n\n/** 32-bit multiply by M, without leaving the safe-integer range. */\nfunction mul(x: number): number {\n return (x & 0xffff) * M + ((((x >>> 16) * M) & 0xffff) << 16);\n}\n\n/** The hash of a string's UTF-8 bytes. */\nexport function murmur2(str: string, seed: number): number {\n const data = ENCODER.encode(str);\n let len = data.length;\n let h = seed ^ len;\n let i = 0;\n while (len >= 4) {\n let k = data[i] | (data[i + 1] << 8) | (data[i + 2] << 16) | (data[i + 3] << 24);\n k = mul(k);\n k ^= k >>> 24;\n k = mul(k);\n h = mul(h) ^ k;\n len -= 4;\n i += 4;\n }\n if (len === 3) h ^= data[i + 2] << 16;\n if (len >= 2) h ^= data[i + 1] << 8;\n if (len >= 1) {\n h ^= data[i];\n h = mul(h);\n }\n h ^= h >>> 13;\n h = mul(h);\n h ^= h >>> 15;\n return h >>> 0;\n}\n", "// Structured tracebacks (#322): an error's stack as frames a frontend can\n// render, link to cells and fold, alongside the classic `traceback` lines.\n// The payload follows nteract's application/vnd.nteract.traceback+json\n// (runtimed/runt, docs/adr/traceback-output-protocol.md): ename, evalue,\n// frames with a source window and a `library` flag, and a plain `text`\n// rendering. Building it must never cost the user their traceback: callers\n// fall back to the classic lines if it throws.\n//\n// Cells run under a //# sourceURL naming them (cellName), so a frame in a\n// cell, including one in a function an earlier cell defined, says which\n// cell. Its line goes through the cell's source map, as for the debugger\n// (src/sourcemap.ts), so it is the line the user wrote, not the line of the\n// stripped JavaScript. Only lines are mapped: a cell frame has no column.\n//\n// Nothing here imports Node; reading other files' source is the caller's.\n\nimport { murmur2 } from \"./murmur2.ts\";\nimport type { LineMap } from \"./sourcemap.ts\";\n\nexport const TRACEBACK_MIME = \"application/vnd.nteract.traceback+json\";\n\n/** Lines of source shown around a frame's line. */\nconst CONTEXT_BEFORE = 2;\nconst CONTEXT_AFTER = 2;\n/** Longer stacks keep their first and last frames. */\nconst HEAD_FRAMES = 20;\nconst TAIL_FRAMES = 10;\n\n/** The //# sourceURL a cell's script runs under while not debugging. */\nexport function cellName(code: string): string {\n return `$cdpk$cell-${murmur2(code, 0).toString(36)}.ts`;\n}\n\n/** A cell that ran: its code, and where the notebook knows it from. */\nexport interface CellRecord {\n code: string;\n executionCount: number | null;\n cellId: string | null;\n}\n\nexport interface SourceLine extends Record<string, string | number | boolean> {\n lineno: number;\n source: string;\n}\n\nexport interface TracebackFrame extends Record<string, unknown> {\n filename: string;\n lineno: number;\n colno?: number;\n name: string;\n library: boolean;\n lines: SourceLine[];\n execution_count?: number;\n cell_id?: string;\n}\n\n/** A frame of CDP's exceptionDetails.stackTrace (0-based positions). */\nexport interface CallFrame {\n url: string;\n lineNumber: number;\n columnNumber: number;\n}\n\n/** A frame as parsed from one line of a stack. */\nexport interface StackFrame {\n name: string;\n file: string;\n line: number | null;\n column: number | null;\n}\n\n// V8: \" at fn (file:1:2)\", \" at file:1:2\", \" at async fn (file:1:2)\",\n// \" at new Promise (<anonymous>)\".\nconst V8_FRAME = /^\\s*at (?:(.*?) \\((.*?)(?::(\\d+):(\\d+))?\\)|(.*?)(?::(\\d+):(\\d+))?)$/;\n// JavaScriptCore and SpiderMonkey: \"fn@file:1:2\", \"@file:1:2\", \"fn@[native code]\".\nconst AT_FRAME = /^([^\\s@]*)@(.+?)(?::(\\d+):(\\d+))?$/;\n\n/** One line of a stack as a frame, or null for a line that isn't one (the message). */\nexport function parseFrame(text: string): StackFrame | null {\n const v8 = /^\\s*at /.test(text) ? V8_FRAME.exec(text) : null;\n if (v8) {\n const named = v8[2] !== undefined;\n const line = named ? v8[3] : v8[6];\n const column = named ? v8[4] : v8[7];\n return {\n name: named ? v8[1] : \"\",\n file: named ? v8[2] : v8[5],\n line: line === undefined ? null : Number(line),\n column: column === undefined ? null : Number(column),\n };\n }\n const at = !/^\\s/.test(text) && text.includes(\"@\") ? AT_FRAME.exec(text) : null;\n if (at) {\n return {\n name: at[1],\n file: at[2],\n line: at[3] === undefined ? null : Number(at[3]),\n column: at[4] === undefined ? null : Number(at[4]),\n };\n }\n return null;\n}\n\n/**\n * Frames from packages, runtimes and the kernel itself, which a frontend\n * can dim or fold: a hint, not a boundary.\n */\nexport function isLibraryFile(file: string, kernelFiles: readonly string[] = []): boolean {\n if ([\"\", \"<anonymous>\", \"native\", \"[native code]\", \"unknown\"].includes(file)) return true;\n if (/^(?:node|ext|deno|bun|jsr|npm|internal):/.test(file)) return true;\n if (/^https?:\\/\\/(?:jsr\\.io|esm\\.sh|cdn\\.jsdelivr\\.net|unpkg\\.com|deno\\.land)\\//.test(file)) return true;\n const path = file.replaceAll(\"\\\\\", \"/\");\n if (path.includes(\"/node_modules/\") || path.includes(\"/npm/registry.npmjs.org/\")) return true;\n return kernelFiles.some((prefix) => path.startsWith(prefix));\n}\n\nexport interface TracebackSources {\n /** The cell a script name belongs to, if it is one. */\n cell(file: string): (CellRecord & { lines: LineMap | null }) | undefined;\n /** Another file's source, when it can be read. */\n readFile?(file: string): string | undefined;\n /** Path or URL prefixes of the kernel's own runtime files. */\n kernelFiles?: readonly string[];\n}\n\nexport interface Traceback {\n /** The classic traceback lines, with cell frames pointing at the cell. */\n lines: string[];\n /** The structured payload. */\n payload: Record<string, unknown>;\n}\n\nfunction window(source: string, line: number): SourceLine[] {\n const all = source.split(\"\\n\");\n if (all.length > 1 && all[all.length - 1] === \"\") all.pop();\n const out: SourceLine[] = [];\n for (let n = Math.max(1, line - CONTEXT_BEFORE); n <= Math.min(all.length, line + CONTEXT_AFTER); n++) {\n const entry: SourceLine = { lineno: n, source: all[n - 1].replace(/\\r$/, \"\") };\n if (n === line) entry.highlight = true;\n out.push(entry);\n }\n return out;\n}\n\n/** How a cell frame's location reads in the classic traceback. */\nfunction cellLabel(cell: CellRecord): string {\n return cell.executionCount === null ? \"cell\" : `In[${cell.executionCount}]`;\n}\n\n/**\n * `stack` is the error's stack as the target describes it (src/target.ts's\n * describeError), message lines included. `callFrames`, from CDP, name the\n * scripts of frames the stack shows as \"<anonymous>\": Deno formats stacks\n * itself and doesn't use a script's //# sourceURL.\n */\nexport function buildTraceback(\n error: { ename: string; evalue: string; stack: string; callFrames?: readonly CallFrame[] },\n sources: TracebackSources,\n execution: { executionCount: number | null; cellId: string | null },\n): Traceback {\n const raw = error.stack || `${error.ename}: ${error.evalue}`;\n const lines: string[] = [];\n const frames: TracebackFrame[] = [];\n const callFrames = error.callFrames ?? [];\n let next = 0;\n for (const text of raw.split(\"\\n\")) {\n const parsed = parseFrame(text);\n if (parsed === null) {\n lines.push(text);\n continue;\n }\n let file = parsed.file;\n if (parsed.line !== null) {\n // CDP lists only frames with a position, in the same order.\n const at = callFrames.findIndex((frame, i) =>\n i >= next && frame.lineNumber + 1 === parsed.line && frame.columnNumber + 1 === parsed.column\n );\n if (at !== -1) {\n next = at + 1;\n if (file === \"<anonymous>\" && callFrames[at].url) file = callFrames[at].url;\n }\n }\n const cell = sources.cell(file);\n if (cell !== undefined && parsed.line !== null) {\n // Script lines are 1-based; the map's are 0-based.\n const lineno = cell.lines ? cell.lines.toOriginal(parsed.line - 1) + 1 : parsed.line;\n const frame: TracebackFrame = {\n filename: cellLabel(cell),\n lineno,\n name: parsed.name,\n library: false,\n lines: window(cell.code, lineno),\n };\n if (cell.executionCount !== null) frame.execution_count = cell.executionCount;\n if (cell.cellId !== null) frame.cell_id = cell.cellId;\n frame.source_ref = {\n kind: \"notebook_execution\",\n ...(cell.executionCount !== null ? { execution_count: cell.executionCount } : {}),\n ...(cell.cellId !== null ? { cell_id: cell.cellId } : {}),\n };\n frames.push(frame);\n const location = `${cellLabel(cell)}:${lineno}`;\n lines.push(rewriteLocation(text, parsed, location));\n continue;\n }\n lines.push(text);\n const library = isLibraryFile(file, sources.kernelFiles);\n const frame: TracebackFrame = {\n filename: file,\n lineno: parsed.line ?? 0,\n name: parsed.name,\n library,\n lines: [],\n };\n if (parsed.column !== null) frame.colno = parsed.column;\n if (!library && parsed.line !== null) {\n const source = sources.readFile?.(file);\n if (source !== undefined) frame.lines = window(source, parsed.line);\n }\n frames.push(frame);\n }\n // What ran the cell (the kernel's evaluator, the runtime's own frames)\n // comes after the cell's last frame and is never the user's.\n const lastCell = frames.findLastIndex((frame) => frame.source_ref !== undefined);\n let end = frames.length;\n while (end > lastCell + 1 && lastCell !== -1 && frames[end - 1].library) end--;\n const kept = clip(frames.slice(0, end));\n const payload: Record<string, unknown> = {\n ename: error.ename,\n evalue: error.evalue,\n language: \"typescript\",\n frames: kept,\n syntax: null,\n text: lines.join(\"\\n\"),\n raw_text: raw,\n };\n if (execution.executionCount !== null || execution.cellId !== null) {\n payload.execution = {\n ...(execution.executionCount !== null ? { execution_count: execution.executionCount } : {}),\n ...(execution.cellId !== null ? { cell_id: execution.cellId } : {}),\n };\n }\n return { lines, payload };\n}\n\nfunction rewriteLocation(text: string, frame: StackFrame, location: string): string {\n const original = `${frame.file}:${frame.line}${frame.column === null ? \"\" : `:${frame.column}`}`;\n const at = text.lastIndexOf(original);\n return at === -1 ? text : text.slice(0, at) + location + text.slice(at + original.length);\n}\n\nfunction clip(frames: TracebackFrame[]): TracebackFrame[] {\n if (frames.length <= HEAD_FRAMES + TAIL_FRAMES) return frames;\n const omitted = frames.length - HEAD_FRAMES - TAIL_FRAMES;\n return [\n ...frames.slice(0, HEAD_FRAMES),\n { filename: \"\", lineno: 0, name: `\u2026 ${omitted} frames omitted \u2026`, library: true, lines: [] },\n ...frames.slice(-TAIL_FRAMES),\n ];\n}\n", "export const VERSION = \"0.7.0\";", "// KernelChannels inside a page: the frontend hands the kernel messages in\n// Jupyter's JSON shape (as the websocket's JSON protocol and\n// @jupyterlab/services carry them) and gets messages back the same way.\n// There is one frontend, so one peer, and no signing.\n\nimport type { ChannelName, KernelChannels, Received } from \"../kernel-core.ts\";\nimport type { JsonObject, OutgoingMessage, ReceivedHeader } from \"../message.ts\";\n\n/** Every channel a message travels on, iopub included. */\nexport type Channel = ChannelName | \"iopub\";\n\n/** A Jupyter message as JSON, the shape a frontend sends and receives. */\nexport interface JupyterMessage {\n header: JsonObject;\n parent_header: JsonObject;\n metadata: JsonObject;\n content: JsonObject;\n buffers?: (ArrayBuffer | ArrayBufferView)[];\n channel?: string;\n}\n\nexport type MessageListener = (channel: Channel, msg: JupyterMessage) => void;\n\nconst PEER = \"page\";\n\nclass Queue<T> {\n #items: T[] = [];\n #waiters: ((item: T) => void)[] = [];\n get size(): number {\n return this.#items.length;\n }\n push(item: T): void {\n const waiter = this.#waiters.shift();\n if (waiter) waiter(item);\n else this.#items.push(item);\n }\n pop(): Promise<T> {\n const item = this.#items.shift();\n if (item !== undefined) return Promise.resolve(item);\n return new Promise((resolve) => this.#waiters.push(resolve));\n }\n}\n\nfunction bytes(buffer: ArrayBuffer | ArrayBufferView): Uint8Array {\n return buffer instanceof ArrayBuffer ? new Uint8Array(buffer) : new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n}\n\nfunction isHeader(value: JsonObject): value is ReceivedHeader {\n return typeof value.msg_id === \"string\" && typeof value.msg_type === \"string\";\n}\n\nfunction isObject(value: unknown): value is JsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport class PageChannels implements KernelChannels {\n readonly ready: Promise<unknown> = Promise.resolve();\n readonly #queues: Record<ChannelName, Queue<Received | null>> = { shell: new Queue(), control: new Queue(), stdin: new Queue() };\n readonly #listeners = new Set<MessageListener>();\n\n /** A message from the frontend. One without a msg_id and msg_type is dropped. */\n deliver(channel: ChannelName, msg: JupyterMessage): void {\n const { header, parent_header: parentHeader, metadata, content } = msg;\n const valid = isObject(header) && isHeader(header) && isObject(content);\n this.#queues[channel].push(valid\n ? {\n peer: PEER,\n msg: {\n header,\n parentHeader: isObject(parentHeader) ? parentHeader : {},\n metadata: isObject(metadata) ? metadata : {},\n content,\n buffers: (msg.buffers ?? []).map(bytes),\n },\n }\n : null);\n }\n\n onMessage(listener: MessageListener): () => void {\n this.#listeners.add(listener);\n return () => this.#listeners.delete(listener);\n }\n\n #emit(channel: Channel, msg: OutgoingMessage): void {\n const out: JupyterMessage = {\n channel,\n header: msg.header,\n parent_header: msg.parentHeader,\n metadata: msg.metadata,\n content: msg.content,\n buffers: msg.buffers,\n };\n for (const listener of this.#listeners) listener(channel, out);\n }\n\n recv(channel: ChannelName): Promise<Received | null> {\n return this.#queues[channel].pop();\n }\n\n shellQueued(): number {\n return this.#queues.shell.size;\n }\n\n reply(channel: ChannelName, _peer: string, msg: OutgoingMessage): void {\n this.#emit(channel, msg);\n }\n\n publish(msg: OutgoingMessage): void {\n this.#emit(\"iopub\", msg);\n }\n\n stdinPeers(): number {\n return 1;\n }\n\n sendStdin(msg: OutgoingMessage): void {\n this.#emit(\"stdin\", msg);\n }\n}\n", "// A small Chrome DevTools Protocol client over the runtime's --inspect\n// WebSocket. Uses the global WebSocket (Node 22+, Deno, Bun).\n\nexport type CdpParams = { [key: string]: unknown };\n\nexport interface RemoteObject {\n type: string;\n subtype?: string;\n className?: string;\n value?: unknown;\n unserializableValue?: string;\n description?: string;\n objectId?: string;\n}\n\nexport interface ExceptionDetails {\n text: string;\n lineNumber: number;\n columnNumber: number;\n exception?: RemoteObject;\n /** Where it was thrown, with each script's URL (#322). */\n stackTrace?: { callFrames: { functionName: string; url: string; lineNumber: number; columnNumber: number }[] };\n}\n\nexport interface EvaluateResult {\n result: RemoteObject;\n exceptionDetails?: ExceptionDetails;\n}\n\ninterface CdpResponse {\n id: number;\n result?: CdpParams;\n error?: { code: number; message: string };\n}\n\ninterface CdpEvent {\n method: string;\n params: CdpParams;\n}\n\nexport class CdpError extends Error {\n readonly code: number;\n constructor(method: string, code: number, message: string) {\n super(`${method}: ${message} (${code})`);\n this.code = code;\n }\n}\n\n/** Thrown into a pending call when the caller abandons it (interrupt). */\nexport class CdpAbandoned extends Error {}\n\ntype Pending = {\n method: string;\n sent: number;\n resolve: (result: CdpParams) => void;\n reject: (err: Error) => void;\n};\n\nfunction isResponse(msg: unknown): msg is CdpResponse {\n return typeof msg === \"object\" && msg !== null && typeof (msg as CdpResponse).id === \"number\";\n}\n\nfunction isEvent(msg: unknown): msg is CdpEvent {\n return typeof msg === \"object\" && msg !== null && typeof (msg as CdpEvent).method === \"string\";\n}\n\nexport class CdpSession {\n #ws: WebSocket;\n #nextId = 0;\n #pending = new Map<number, Pending>();\n #listeners = new Map<string, ((params: CdpParams) => void)[]>();\n\n private constructor(ws: WebSocket) {\n this.#ws = ws;\n ws.addEventListener(\"message\", (event) => {\n const msg: unknown = JSON.parse(String(event.data));\n if (isResponse(msg)) {\n const pending = this.#pending.get(msg.id);\n if (!pending) return;\n this.#pending.delete(msg.id);\n if (msg.error) {\n pending.reject(new CdpError(pending.method, msg.error.code, msg.error.message));\n } else {\n pending.resolve(msg.result ?? {});\n }\n } else if (isEvent(msg)) {\n for (const listener of this.#listeners.get(msg.method) ?? []) listener(msg.params);\n }\n });\n ws.addEventListener(\"close\", () => {\n for (const pending of this.#pending.values()) {\n pending.reject(new Error(\"CDP connection closed\"));\n }\n this.#pending.clear();\n });\n }\n\n static async connect(url: string): Promise<CdpSession> {\n const ws = new WebSocket(url);\n await new Promise<void>((resolve, reject) => {\n ws.addEventListener(\"open\", () => resolve(), { once: true });\n ws.addEventListener(\"error\", () => reject(new Error(`cannot connect to ${url}`)), { once: true });\n });\n return new CdpSession(ws);\n }\n\n on(method: string, listener: (params: CdpParams) => void): void {\n const list = this.#listeners.get(method) ?? [];\n list.push(listener);\n this.#listeners.set(method, list);\n }\n\n send(method: string, params: CdpParams = {}): Promise<CdpParams> {\n // send() on a closing or closed socket drops the frame silently, so\n // nothing would ever settle the call (#133).\n if (this.#ws.readyState !== WebSocket.OPEN) return Promise.reject(new Error(\"CDP connection closed\"));\n const id = ++this.#nextId;\n return new Promise((resolve, reject) => {\n this.#pending.set(id, { method, sent: Date.now(), resolve, reject });\n this.#ws.send(JSON.stringify({ id, method, params }));\n });\n }\n\n /** In-flight calls, oldest first, with how long each has waited: for a state dump (#237). */\n pendingCalls(): string[] {\n const now = Date.now();\n return [...this.#pending.values()].map((p) => `${p.method} (${now - p.sent} ms)`);\n }\n\n /** Reject every in-flight call; their late responses are then ignored. */\n abandonPending(): void {\n for (const pending of this.#pending.values()) {\n pending.reject(new CdpAbandoned(`${pending.method} abandoned`));\n }\n this.#pending.clear();\n }\n\n close(): void {\n this.#ws.close();\n }\n}\n\nexport function isRecord(value: unknown): value is CdpParams {\n return typeof value === \"object\" && value !== null;\n}\n\nexport function isRemoteObject(value: unknown): value is RemoteObject {\n return isRecord(value) && typeof value.type === \"string\";\n}\n\n/**\n * A Runtime.evaluate-shaped reply, checked: a value, or exceptionDetails.\n * The Bun and workerd drivers send no `result` with a thrown exception.\n */\nexport function asEvaluateResult(raw: CdpParams): EvaluateResult {\n const details = raw.exceptionDetails;\n if (details !== undefined ? !isRecord(details) || typeof details.text !== \"string\" : !isRemoteObject(raw.result)) {\n throw new Error(`the target sent a malformed evaluate result: ${JSON.stringify(raw).slice(0, 200)}`);\n }\n const result = isRemoteObject(raw.result) ? raw.result : { type: \"undefined\" };\n return details === undefined ? { result } : { result, exceptionDetails: details as unknown as ExceptionDetails };\n}\n", "// The browser target: cells run in a module Web Worker\n// (runtime/browser-worker.mjs) that the page creates. Requests and replies\n// are messages, in the shape of the workerd target's session\n// (src/workerd-target.ts), whose request and interrupt handling this\n// follows. Cells are transformed as for Bun and workerd\n// (transformCellForEval).\n\nimport { asEvaluateResult, type CdpParams, type EvaluateResult, isRecord, type RemoteObject } from \"../cdp.ts\";\nimport { Interrupted, isTargetMessage, type KernelTarget, type TargetEvents } from \"../target-api.ts\";\nimport { transformCellForEval } from \"../transform.ts\";\n\n/** See BunTarget: how long an interrupted cell has to show it isn't busy. */\nexport const INTERRUPT_GRACE_MS = 500;\n\nexport const RESTART_NOTE = \"[cdp-kernel] the browser target was busy and can't be interrupted in place, so its \" +\n \"Worker was stopped; a new one starts on the next cell, without the earlier cells' state\";\n\n/** The part of a Worker the target uses, so tests can stand in for one. */\nexport interface WorkerLike {\n postMessage(message: unknown): void;\n addEventListener(type: \"message\", listener: (event: { data: unknown }) => void): void;\n addEventListener(type: \"error\", listener: (event: { message?: string }) => void): void;\n terminate(): void;\n}\n\nexport interface BrowserTargetOptions {\n /** Makes the driver Worker: e.g. `new Worker(url, { type: \"module\" })`. */\n createWorker(): WorkerLike;\n /** What relative imports and import.meta.url resolve against; the page's URL by default. */\n base?: string;\n /** Where npm:, jsr: and bare imports load from; esm.sh by default. */\n cdn?: string;\n}\n\n/** Rejects a request whose reply the target no longer waits for. */\nclass Abandoned extends Error {}\n\ntype Pending = { resolve: (reply: CdpParams) => void; reject: (err: Error) => void };\n\nexport class BrowserTarget implements KernelTarget {\n readonly runtime = \"browser\" as const;\n readonly versions: { runtime: string; engine: string } = { runtime: \"\", engine: \"\" };\n readonly transform = transformCellForEval;\n readonly #worker: WorkerLike;\n readonly #events: TargetEvents;\n readonly #pending = new Map<number, Pending>();\n /** Requests that interrupt() abandons when the driver can still answer. */\n readonly #interruptible = new Set<number>();\n #nextId = 0;\n #interrupted = false;\n #stopNote: string | undefined;\n #exited = false;\n\n private constructor(worker: WorkerLike, events: TargetEvents) {\n this.#worker = worker;\n this.#events = events;\n worker.addEventListener(\"message\", (event) => this.#receive(event.data));\n // A driver that failed to load: what's pending can't be answered.\n worker.addEventListener(\"error\", (event) => {\n this.#events.stream(\"stderr\", `[cdp-kernel] browser Worker error: ${event.message ?? \"unknown\"}\\n`);\n this.#exit(null);\n });\n }\n\n static async launch(events: TargetEvents, options: BrowserTargetOptions): Promise<BrowserTarget> {\n const target = new BrowserTarget(options.createWorker(), events);\n const base = options.base ?? globalThis.location?.href ?? \"file:///\";\n try {\n const { userAgent } = await target.#request(\"info\", { base, cdn: options.cdn });\n if (typeof userAgent === \"string\") target.versions.runtime = browserName(userAgent);\n target.versions.engine = engineName(typeof userAgent === \"string\" ? userAgent : \"\");\n } catch (err) {\n target.kill();\n throw err;\n }\n return target;\n }\n\n #receive(msg: unknown): void {\n if (isRecord(msg) && msg.kind === \"stream\") {\n this.#events.stream(msg.name === \"stderr\" ? \"stderr\" : \"stdout\", String(msg.text));\n } else if (isTargetMessage(msg)) {\n this.#events.message(msg);\n } else if (isRecord(msg) && msg.kind === \"reply\") {\n const id = Number(msg.id);\n const pending = this.#pending.get(id);\n if (!pending) return; // abandoned\n this.#pending.delete(id);\n this.#interruptible.delete(id);\n if (typeof msg.failure === \"string\") pending.reject(new Error(msg.failure));\n else pending.resolve(msg);\n }\n }\n\n #exit(code: number | null): void {\n if (this.#exited) return;\n this.#exited = true;\n this.#worker.terminate();\n // Reported before the requests it cut off fail, so the note lands in\n // the interrupted cell's output.\n this.#events.exit(code, this.#stopNote);\n for (const pending of this.#pending.values()) pending.reject(new Abandoned(\"the browser Worker stopped\"));\n this.#pending.clear();\n }\n\n #request(op: string, params: CdpParams = {}, interruptible = false): Promise<CdpParams> {\n if (this.#exited) return Promise.reject(new Abandoned(\"the browser Worker stopped\"));\n const id = ++this.#nextId;\n return new Promise((resolve, reject) => {\n this.#pending.set(id, { resolve, reject });\n if (interruptible) this.#interruptible.add(id);\n this.#worker.postMessage({ id, op, ...params });\n });\n }\n\n async #interruptibly(op: string, params: CdpParams, what: string): Promise<CdpParams> {\n this.#interrupted = false;\n try {\n return await this.#request(op, params, true);\n } catch (err) {\n if (err instanceof Abandoned || this.#interrupted) throw new Interrupted(`${what} interrupted`);\n throw err;\n }\n }\n\n async evaluate(script: string): Promise<EvaluateResult> {\n return asEvaluateResult(await this.#interruptibly(\"eval\", { code: script }, \"Execution\"));\n }\n\n /**\n * A cell that's waiting on something leaves the Worker free: it answers a\n * ping, and the cell is abandoned with its state intact. A busy cell\n * can't be reached, so the Worker is terminated, and a new one starts on\n * the next cell.\n */\n async interrupt(): Promise<void> {\n this.#interrupted = true;\n const running = [...this.#interruptible];\n const answered = await Promise.race([\n this.#request(\"ping\").then(() => true, () => false),\n new Promise<boolean>((resolve) => setTimeout(() => resolve(false), INTERRUPT_GRACE_MS)),\n ]);\n if (answered) {\n for (const id of running) {\n this.#pending.get(id)?.reject(new Abandoned(\"interrupted\"));\n this.#pending.delete(id);\n this.#interruptible.delete(id);\n }\n return;\n }\n this.#stopNote = RESTART_NOTE;\n this.#exit(null);\n }\n\n /** Output arrives before the reply it precedes. */\n flush(): Promise<void> {\n return Promise.resolve();\n }\n\n async broadcastResult(executionCount: number, result: RemoteObject): Promise<void> {\n if (result.objectId === undefined) return;\n await this.#request(\"broadcast\", { count: executionCount, handle: result.objectId });\n }\n\n async dispatchComm(\n msgType: string,\n content: CdpParams,\n metadata: CdpParams,\n buffers: Uint8Array[],\n ): Promise<{ handled: boolean } | { error: { name: string; message: string; stack: string } }> {\n const reply = await this.#interruptibly(\"comm\", { msgType, content, metadata, buffers: buffers.map(toBase64) }, \"Comm handler\");\n if (isRecord(reply.error)) {\n const { name, message, stack } = reply.error;\n return { error: { name: String(name), message: String(message), stack: String(stack) } };\n }\n return { handled: reply.handled === true };\n }\n\n async describeError(exception: RemoteObject): Promise<{ name: string; message: string; stack: string }> {\n if (exception.objectId === undefined) return { name: \"Error\", message: exception.description ?? \"\", stack: \"\" };\n const { value } = await this.#request(\"describe\", { handle: exception.objectId });\n return JSON.parse(typeof value === \"string\" ? value : '{\"name\":\"Error\",\"message\":\"\",\"stack\":\"\"}');\n }\n\n async propertyNames(expression: string): Promise<string[]> {\n const reply = await this.#request(\"props\", { expr: expression }).catch(() => null);\n return Array.isArray(reply?.names) ? reply.names.filter((n): n is string => typeof n === \"string\") : [];\n }\n\n /** Resolved by property descriptor in the Worker, so nothing runs (#10). */\n async inspect(path: string, detail: number): Promise<string | null> {\n const reply = await this.#request(\"inspect\", { path, detail }).catch(() => null);\n return typeof reply?.text === \"string\" ? reply.text : null;\n }\n\n /** None: top-level declarations here are properties of globalThis. */\n lexicalNames(): Promise<string[]> {\n return Promise.resolve([]);\n }\n\n /** Never asked for: prompt() in the Worker answers null without asking. */\n replyInput(): void {}\n\n kill(): void {\n this.#exit(null);\n }\n}\n\nfunction toBase64(bytes: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < bytes.length; i += 0x8000) binary += String.fromCharCode(...bytes.subarray(i, i + 0x8000));\n return btoa(binary);\n}\n\n/** \"Chrome 141\", \"Firefox 144\", \"Safari 26\": the browser and its major version. */\nexport function browserName(userAgent: string): string {\n for (const [name, re] of [\n [\"Edge\", /\\bEdg\\/(\\d+)/],\n [\"Firefox\", /\\bFirefox\\/(\\d+)/],\n [\"Chrome\", /\\b(?:Headless)?Chrome\\/(\\d+)/],\n [\"Safari\", /\\bVersion\\/(\\d+)[\\d.]* .*Safari\\//],\n ] as const) {\n const m = re.exec(userAgent);\n if (m) return `${name} ${m[1]}`;\n }\n return \"a browser\";\n}\n\nfunction engineName(userAgent: string): string {\n if (/\\bFirefox\\//.test(userAgent)) return \"SpiderMonkey\";\n if (/\\b(?:Chrome|Chromium|Edg)\\//.test(userAgent)) return \"V8\";\n if (/\\bSafari\\//.test(userAgent)) return \"JavaScriptCore\";\n return \"\";\n}\n", "// cdp-kernel in a browser page: the kernel's message handling\n// (src/kernel-core.ts) on the page, and cells in a Web Worker\n// (runtime/browser-worker.mjs, via src/browser/target.ts).\n//\n// import { startBrowserKernel } from \"@tlockney/cdp-kernel/browser\";\n// const kernel = startBrowserKernel({\n// createWorker: () => new Worker(new URL(\"./worker.js\", import.meta.url), { type: \"module\" }),\n// });\n// kernel.onMessage((channel, msg) => console.log(channel, msg.header.msg_type));\n// kernel.send(\"shell\", executeRequest);\n\nimport { KernelCore } from \"../kernel-core.ts\";\nimport type { TypeStripper, TypeStripperName } from \"../transform.ts\";\n// The browser build (scripts/build-browser.mjs) swaps package.ts, which\n// imports Node, for its VERSION alone.\nimport { VERSION } from \"../package.ts\";\nimport { type Channel, type JupyterMessage, type MessageListener, PageChannels } from \"./channels.ts\";\nimport { BrowserTarget, type BrowserTargetOptions } from \"./target.ts\";\n\nexport type { Channel, JupyterMessage, MessageListener } from \"./channels.ts\";\nexport { BrowserTarget, type BrowserTargetOptions, type WorkerLike } from \"./target.ts\";\n\nexport interface BrowserKernelOptions extends BrowserTargetOptions {\n /** What strips cells' types; sucrase by default, since esbuild's native binary can't run in a page. */\n typeStrip?: TypeStripperName | TypeStripper;\n /** Where the kernel's own log lines go; console.debug by default. */\n log?(text: string): void;\n}\n\nexport interface BrowserKernel {\n /** A message from the frontend, on shell, control or stdin. */\n send(channel: Exclude<Channel, \"iopub\">, msg: JupyterMessage): void;\n /** Every message the kernel sends, with its channel. Returns a function that stops listening. */\n onMessage(listener: MessageListener): () => void;\n /** Settles once a shutdown_request has been answered. */\n readonly closed: Promise<void>;\n}\n\nexport function startBrowserKernel(options: BrowserKernelOptions): BrowserKernel {\n const channels = new PageChannels();\n const log = options.log ?? ((text: string) => console.debug(`[cdp-kernel] ${text}`));\n let closed!: () => void;\n const closedPromise = new Promise<void>((resolve) => (closed = resolve));\n const core = new KernelCore({\n runtime: \"browser\",\n version: VERSION,\n channels,\n launchTarget: (events) => BrowserTarget.launch(events, options),\n typeStrip: options.typeStrip ?? \"sucrase\",\n log,\n exit: () => closed(),\n });\n core.run().catch((err) => log(`kernel stopped: ${err instanceof Error ? err.stack : err}`));\n return {\n send: (channel, msg) => channels.deliver(channel, msg),\n onMessage: (listener) => channels.onMessage(listener),\n closed: closedPromise,\n };\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,SAAS,cAAc,MAAM,KAAK;AAChC,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;AACtC,WAAO,IAAI,CAAC;AACZ,QAAI,MAAM,MAAM;AAAE,aAAO;AAAA,IAAM;AAC/B,WAAO,IAAI,IAAI,CAAC;AAChB,QAAI,OAAO,MAAM;AAAE,aAAO;AAAA,IAAK;AAAA,EACjC;AACA,SAAO;AACT;AAIA,SAAS,kBAAkB,MAAM,QAAQ;AACvC,MAAI,OAAO,IAAI;AAAE,WAAO,SAAS;AAAA,EAAG;AACpC,MAAI,OAAO,IAAI;AAAE,WAAO;AAAA,EAAK;AAC7B,MAAI,OAAO,IAAI;AAAE,WAAO,SAAS;AAAA,EAAG;AACpC,MAAI,OAAO,KAAK;AAAE,WAAO;AAAA,EAAK;AAC9B,MAAI,QAAQ,OAAQ;AAAE,WAAO,QAAQ,OAAQ,wBAAwB,KAAK,OAAO,aAAa,IAAI,CAAC;AAAA,EAAE;AACrG,MAAI,WAAW,OAAO;AAAE,WAAO;AAAA,EAAM;AACrC,SAAO,cAAc,MAAM,0BAA0B;AACvD;AAIA,SAAS,iBAAiB,MAAM,QAAQ;AACtC,MAAI,OAAO,IAAI;AAAE,WAAO,SAAS;AAAA,EAAG;AACpC,MAAI,OAAO,IAAI;AAAE,WAAO;AAAA,EAAK;AAC7B,MAAI,OAAO,IAAI;AAAE,WAAO;AAAA,EAAM;AAC9B,MAAI,OAAO,IAAI;AAAE,WAAO;AAAA,EAAK;AAC7B,MAAI,OAAO,IAAI;AAAE,WAAO,SAAS;AAAA,EAAG;AACpC,MAAI,OAAO,KAAK;AAAE,WAAO;AAAA,EAAK;AAC9B,MAAI,QAAQ,OAAQ;AAAE,WAAO,QAAQ,OAAQ,mBAAmB,KAAK,OAAO,aAAa,IAAI,CAAC;AAAA,EAAE;AAChG,MAAI,WAAW,OAAO;AAAE,WAAO;AAAA,EAAM;AACrC,SAAO,cAAc,MAAM,0BAA0B,KAAK,cAAc,MAAM,qBAAqB;AACrG;AAwCA,SAAS,MAAM,MAAM,MAAM;AACzB,SAAO,IAAI,UAAU,MAAM,EAAC,YAAY,MAAM,OAAO,KAAI,CAAC;AAC5D;AAQA,SAAS,GAAG,MAAM,SAAS;AACzB,MAAK,YAAY,OAAS,WAAU,CAAC;AAErC,UAAQ,UAAU;AAClB,SAAO,SAAS,IAAI,IAAI,IAAI,UAAU,MAAM,OAAO;AACrD;AA2GA,SAAS,UAAU,MAAM;AACvB,SAAO,SAAS,MAAM,SAAS,MAAM,SAAS,QAAU,SAAS;AACnE;AAEA,SAAS,cAAc,MAAM,MAAM,KAAK;AACtC,MAAK,QAAQ,OAAS,OAAM,KAAK;AAEjC,WAAS,IAAI,MAAM,IAAI,KAAK,KAAK;AAC/B,QAAIA,QAAO,KAAK,WAAW,CAAC;AAC5B,QAAI,UAAUA,KAAI,GAChB;AAAE,aAAO,IAAI,MAAM,KAAKA,UAAS,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI;AAAA,IAAE;AAAA,EACzF;AACA,SAAO;AACT;AAoBA,SAAS,YAAY,OAAO;AAC1B,SAAO,YAAY,KAAK,MAAM,YAAY,KAAK,IAAI,IAAI,OAAO,SAAS,MAAM,QAAQ,MAAM,GAAG,IAAI,IAAI;AACxG;AAEA,SAAS,kBAAkB,MAAM;AAE/B,MAAI,QAAQ,OAAQ;AAAE,WAAO,OAAO,aAAa,IAAI;AAAA,EAAE;AACvD,UAAQ;AACR,SAAO,OAAO,cAAc,QAAQ,MAAM,QAAS,OAAO,QAAQ,KAAM;AAC1E;AA4BA,SAAS,YAAYC,QAAOC,SAAQ;AAClC,WAAS,OAAO,GAAG,MAAM,OAAK;AAC5B,QAAI,YAAY,cAAcD,QAAO,KAAKC,OAAM;AAChD,QAAI,YAAY,GAAG;AAAE,aAAO,IAAI,SAAS,MAAMA,UAAS,GAAG;AAAA,IAAE;AAC7D,MAAE;AACF,UAAM;AAAA,EACR;AACF;AA2GA,SAAS,WAAW,MAAM;AACxB,MAAI,UAAU,CAAC;AAEf,WAASC,QAAO,gBACd;AAAE,YAAQA,IAAG,IAAI,QAAQ,OAAO,MAAMA,IAAG,IAAI,KAAKA,IAAG,IAAI,eAAeA,IAAG;AAAA,EAAG;AAEhF,MAAI,QAAQ,gBAAgB,UAAU;AACpC,YAAQ,cAAc;AAAA,EACxB,WAAW,QAAQ,eAAe,MAAM;AACtC,QAAI,CAAC,0BAA0B,OAAO,YAAY,YAAY,QAAQ,MAAM;AAC1E,+BAAyB;AACzB,cAAQ,KAAK,oHAAoH;AAAA,IACnI;AACA,YAAQ,cAAc;AAAA,EACxB,WAAW,QAAQ,eAAe,MAAM;AACtC,YAAQ,eAAe;AAAA,EACzB;AAEA,MAAI,QAAQ,iBAAiB,MAC3B;AAAE,YAAQ,gBAAgB,QAAQ,cAAc;AAAA,EAAG;AAErD,MAAI,CAAC,QAAQ,KAAK,iBAAiB,MACjC;AAAE,YAAQ,gBAAgB,QAAQ,eAAe;AAAA,EAAI;AAEvD,MAAI,QAAQ,QAAQ,OAAO,GAAG;AAC5B,QAAI,SAAS,QAAQ;AACrB,YAAQ,UAAU,SAAU,OAAO;AAAE,aAAO,OAAO,KAAK,KAAK;AAAA,IAAG;AAAA,EAClE;AACA,MAAI,QAAQ,QAAQ,SAAS,GAC3B;AAAE,YAAQ,YAAY,YAAY,SAAS,QAAQ,SAAS;AAAA,EAAG;AAEjE,SAAO;AACT;AAEA,SAAS,YAAY,SAASC,QAAO;AACnC,SAAO,SAAS,OAAO,MAAM,OAAO,KAAK,UAAU,QAAQ;AACzD,QAAI,UAAU;AAAA,MACZ,MAAM,QAAQ,UAAU;AAAA,MACxB,OAAO;AAAA,MACP;AAAA,MACA;AAAA,IACF;AACA,QAAI,QAAQ,WACV;AAAE,cAAQ,MAAM,IAAI,eAAe,MAAM,UAAU,MAAM;AAAA,IAAG;AAC9D,QAAI,QAAQ,QACV;AAAE,cAAQ,QAAQ,CAAC,OAAO,GAAG;AAAA,IAAG;AAClC,IAAAA,OAAM,KAAK,OAAO;AAAA,EACpB;AACF;AAgBA,SAAS,cAAc,OAAO,WAAW;AACvC,SAAO,kBAAkB,QAAQ,cAAc,MAAM,YAAY,kBAAkB;AACrF;AA6rCA,SAAS,wBAAwB,gBAAgB,SAAS;AACxD,MAAI,OAAO,QAAQ,IAAI;AACvB,MAAI,OAAO,eAAe,IAAI;AAE9B,MAAIJ,QAAO;AACX,MAAI,QAAQ,SAAS,uBAAuB,QAAQ,SAAS,SAAS,QAAQ,SAAS,QAAQ;AAC7F,IAAAA,SAAQ,QAAQ,SAAS,MAAM,OAAO,QAAQ;AAAA,EAChD;AAGA,MACE,SAAS,UAAUA,UAAS,UAC5B,SAAS,UAAUA,UAAS,UAC5B,SAAS,UAAUA,UAAS,UAC5B,SAAS,UAAUA,UAAS,QAC5B;AACA,mBAAe,IAAI,IAAI;AACvB,WAAO;AAAA,EACT,WAAW,CAAC,MAAM;AAChB,mBAAe,IAAI,IAAIA;AACvB,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,SAAS,aAAa,MAAM,MAAM;AAChC,MAAI,WAAW,KAAK;AACpB,MAAI,MAAM,KAAK;AACf,SAAO,CAAC,aACN,IAAI,SAAS,gBAAgB,IAAI,SAAS,QAC1C,IAAI,SAAS,aAAa,IAAI,UAAU;AAE5C;AAikCA,SAAS,sBAAsB,MAAM;AACnC,SACE,KAAK,SAAS,gBACd,KAAK,SAAS,6BAA6B,sBAAsB,KAAK,UAAU;AAEpF;AAEA,SAAS,qBAAqB,MAAM;AAClC,SACE,KAAK,SAAS,sBAAsB,KAAK,SAAS,SAAS,uBAC3D,KAAK,SAAS,qBAAqB,qBAAqB,KAAK,UAAU,KACvE,KAAK,SAAS,6BAA6B,qBAAqB,KAAK,UAAU;AAEnF;AA2/BA,SAAS,aAAa,MAAM,MAAM,KAAK,KAAK;AAC1C,OAAK,OAAO;AACZ,OAAK,MAAM;AACX,MAAI,KAAK,QAAQ,WACf;AAAE,SAAK,IAAI,MAAM;AAAA,EAAK;AACxB,MAAI,KAAK,QAAQ,QACf;AAAE,SAAK,MAAM,CAAC,IAAI;AAAA,EAAK;AACzB,SAAO;AACT;AA2EA,SAAS,iBAAiB,aAAa;AACrC,MAAI,IAAI,KAAK,WAAW,IAAI;AAAA,IAC1B,QAAQ,YAAY,wBAAwB,WAAW,IAAI,MAAM,4BAA4B;AAAA,IAC7F,iBAAiB,YAAY,iCAAiC,WAAW,CAAC;AAAA,IAC1E,WAAW;AAAA,MACT,kBAAkB,YAAY,4BAA4B;AAAA,MAC1D,QAAQ,YAAY,oBAAoB,WAAW,CAAC;AAAA,IACtD;AAAA,EACF;AACA,IAAE,UAAU,oBAAoB,EAAE,UAAU;AAE5C,IAAE,UAAU,KAAK,EAAE,UAAU;AAC7B,IAAE,UAAU,KAAK,EAAE,UAAU;AAC7B,IAAE,UAAU,MAAM,EAAE,UAAU;AAChC;AAwLA,SAAS,QAAQ,KAAK;AACpB,WAAS,KAAK,KAAK;AAAE,WAAO;AAAA,EAAK;AACjC,SAAO;AACT;AA0RA,SAAS,4BAA4B,IAAI;AACvC,SAAO,OAAO,OAAgB,OAAO,OAAgB,OAAO;AAC9D;AAiCA,SAAS,kBAAkB,IAAI;AAC7B,SACE,OAAO,MACP,MAAM,MAAgB,MAAM,MAC5B,OAAO,MACP,OAAO,MACP,MAAM,MAAgB,MAAM,MAC5B,MAAM,OAAgB,MAAM;AAEhC;AAgHA,SAAS,wBAAwB,IAAI;AACnC,SAAO,kBAAkB,IAAI,IAAI,KAAK,OAAO,MAAgB,OAAO;AACtE;AA0BA,SAAS,uBAAuB,IAAI;AAClC,SAAO,iBAAiB,IAAI,IAAI,KAAK,OAAO,MAAgB,OAAO,MAAgB,OAAO,QAAuB,OAAO;AAC1H;AA0HA,SAAS,gBAAgB,IAAI;AAC3B,SACG,MAAM,MAAgB,MAAM,MAC5B,MAAM,MAAgB,MAAM;AAEjC;AA2CA,SAAS,eAAe,IAAI;AAC1B,SAAO,MAAM,KAAK,MAAM;AAC1B;AA8EA,SAAS,uBAAuB,IAAI;AAClC,SACE,OAAO,OACP,OAAO,MACP,OAAO,OACP,OAAO,MACP,OAAO,OACP,OAAO;AAEX;AAoDA,SAAS,+BAA+B,IAAI;AAC1C,SAAO,gBAAgB,EAAE,KAAK,OAAO;AACvC;AAaA,SAAS,gCAAgC,IAAI;AAC3C,SAAO,+BAA+B,EAAE,KAAK,eAAe,EAAE;AAChE;AA4PA,SAAS,4CAA4C,IAAI;AACvD,SACE,OAAO,MACP,MAAM,MAAgB,MAAM,MAC5B,MAAM,MAAgB,MAAM,MAC5B,OAAO,MACP,MAAM,MAAgB,MAAM,MAC5B,OAAO,MACP,OAAO,MACP,OAAO;AAEX;AAGA,SAAS,0BAA0B,IAAI;AACrC,SACE,OAAO,MACP,OAAO,MACP,OAAO,MACP,OAAO,MACP,MAAM,MAAgB,MAAM,MAC5B,MAAM,OAAgB,MAAM;AAEhC;AAcA,SAAS,6BAA6B,IAAI;AACxC,SACE,OAAO,MACP,OAAO,MACP,OAAO,MACP,OAAO,MACP,OAAO,MACP,OAAO,MACP,MAAM,MAAgB,MAAM,MAC5B,OAAO,MACP,OAAO,MACP,OAAO;AAEX;AAuCA,SAAS,eAAe,IAAI;AAC1B,SAAO,MAAM,MAAgB,MAAM;AACrC;AAaA,SAAS,WAAW,IAAI;AACtB,SACG,MAAM,MAAgB,MAAM,MAC5B,MAAM,MAAgB,MAAM,MAC5B,MAAM,MAAgB,MAAM;AAEjC;AACA,SAAS,SAAS,IAAI;AACpB,MAAI,MAAM,MAAgB,MAAM,IAAc;AAC5C,WAAO,MAAM,KAAK;AAAA,EACpB;AACA,MAAI,MAAM,MAAgB,MAAM,KAAc;AAC5C,WAAO,MAAM,KAAK;AAAA,EACpB;AACA,SAAO,KAAK;AACd;AAiCA,SAAS,aAAa,IAAI;AACxB,SAAO,MAAM,MAAgB,MAAM;AACrC;AAmfA,SAAS,eAAe,KAAK,6BAA6B;AACxD,MAAI,6BAA6B;AAC/B,WAAO,SAAS,KAAK,CAAC;AAAA,EACxB;AAGA,SAAO,WAAW,IAAI,QAAQ,MAAM,EAAE,CAAC;AACzC;AAEA,SAAS,eAAe,KAAK;AAC3B,MAAI,OAAO,WAAW,YAAY;AAChC,WAAO;AAAA,EACT;AAGA,SAAO,OAAO,IAAI,QAAQ,MAAM,EAAE,CAAC;AACrC;AA+VA,SAASK,OAAMJ,QAAO,SAAS;AAC7B,SAAO,OAAO,MAAMA,QAAO,OAAO;AACpC;AAvkMA,IACI,uBAGA,4BAGA,yBAGA,8BASA,eAUA,sBAEA,YAMA,2BAIA,yBACA,oBAiEA,WAkBA,YAAiC,YAIjC,UAUA,SAsGA,WACA,YAiBA,oBAEA,gBAEA,KACA,gBACA,UAEA,QAIA,SAIA,aAaA,eAKA,UASA,gBAwBA,gBAoGA,wBAsDA,WACA,gBACA,aACA,iBACA,aACA,oBACA,aACA,oBACA,0BACA,wBACA,WAQA,WACA,UACA,cACA,eACA,mBACA,cAEA,QAqFA,oBAyEA,MAIA,SAyGA,qBAyCA,MA6BA,WAA4B,aA+X5B,SAsMA,gBAAoB,wBAA4B,kBA4nBhD,MAkVA,YAQA,OAaA,MA4JA,MAkqBA,OAodA,MA2BA,MAEA,OA0FA,MAcA,MAuCA,4BAOA,uBACA,wBACA,wBACA,wBACA,wBACA,wBAEA,yBAUA,iCAEA,kCAUA,8BAGA,mBACA,oBACA,oBACA,oBACA,oBACA,oBAEA,qBASA,MAkBE,aADG,GAAO,MAMZ,MAIA,UAsBA,uBAk0BA,aACA,WACA,eA+hBA,OAaA,IAwjBA,+BAuOA;AAviMJ;AAAA;AACA,IAAI,wBAAwB,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,GAAG,GAAG,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,QAAQ,GAAG;AAGzoC,IAAI,6BAA6B,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,KAAK,MAAM,IAAI,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,MAAM,GAAG,MAAM,IAAI,GAAG,MAAM,GA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IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WAAU;AACb,aAAO;AAAA,IACT,KAAKA,WA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AAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAExG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG,kBAAkB,aAAa;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEtI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG,kBAAkB,aAAa;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEtI,kBAAkB,OAAO;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA;AAAA,MAElI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAErI,kBAAkB,YAAY;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAErI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG,kBAAkB,UAAU;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEnI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG,kBAAkB,UAAU;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEnI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MA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AE1H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI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;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,gBAAgB;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,aAAa,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE7H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEhH;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,aAAa,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE7H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,YAAY;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAErI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,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A,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,SAAS;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAElI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,WAAW,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE7H,kBAAkB,YAAY;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAErI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,YAAY,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5H;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAElH;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,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A,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAExH;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,SAAS;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAElI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,aAAa,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE7H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,QAAQ;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEjI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEpI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAE/GA,WAAG,OAAO,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEvH;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,eAAe;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAExI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,WAAW,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAE1HA,WAAG,OAAO,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE7H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,UAAU;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEnI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,eAAe,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE/H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,cAAc;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEvI,kBAAkB,OAAO;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEhI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,UAAU;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEnI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,QAAQ,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAExH;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEpI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEpI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE9G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,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AI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEhH,kBAAkB,OAAO;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEhI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEpI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,QAAQ;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEjI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,aAAa;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEtI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,YAAY;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAErI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,cAAc;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEvI,kBAAkB,UAAU;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEnI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEpI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE9G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA;AAAA,MAE1G,kBAAkB,aAAa;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEtI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,YAAY;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAErI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,WAAW,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE3H;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAM;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAM;AAAA;AAAA,MAEpH;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,cAAc;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEvI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,QAAQ;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEjI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEpI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,UAAU,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,WAAW,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE3H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI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MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,WAAW;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEpI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G,kBAAkB,UAAU;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEnI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,QAAQ,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAExH;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,SAAS,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzH;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE5G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,UAAU,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1H;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,SAAS,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAEzH;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,MAE1G;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAM;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA;AAAA,OAEzGA,WAAG,UAAU,KAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,IAC5H,CAAC;AAAA;AAAA;;;ACjpBc,SAAR,WAA4B;AACjC,MAAI,UAAU;AACd,MAAI,OAAO;AACX,MAAI,MAAM,MAAM;AAChB,SAAO,MAAM,MAAM,QAAQ;AACzB,WAAO,MAAM,WAAW,GAAG;AAC3B,QAAI,OAAO,UAAU,cAAc,OAAO,UAAU,YAAY;AAC9D;AAAA,IACF;AACA,UAAMC,QAAO,eAAe,WAAW,OAAO,UAAU,cAAc,CAAC;AACvE,QAAIA,UAAS,IAAI;AACf;AAAA,IACF,OAAO;AACL,gBAAUA;AACV;AAAA,IACF;AAAA,EACF;AAEA,QAAM,eAAe,eAAe,OAAO;AAC3C,MAAI,eAAe,MAAM,CAAC,mBAAmB,IAAI,GAAG;AAClD,UAAM,MAAM;AACZ,QAAI,eAAe,GAAG;AACpB,kBAAY,iBAAiB,CAAC;AAAA,IAChC,OAAO;AACL,kBAAYC,WAAG,MAAM,iBAAiB,CAAC;AAAA,IACzC;AACA;AAAA,EACF;AAEA,SAAO,MAAM,MAAM,QAAQ;AACzB,UAAM,KAAK,MAAM,WAAW,GAAG;AAC/B,QAAI,mBAAmB,EAAE,GAAG;AAC1B;AAAA,IACF,WAAW,OAAO,UAAU,WAAW;AAErC,aAAO;AACP,UAAI,MAAM,WAAW,GAAG,MAAM,UAAU,gBAAgB;AACtD,eAAO,MAAM,MAAM,UAAU,MAAM,WAAW,GAAG,MAAM,UAAU,iBAAiB;AAChF;AAAA,QACF;AACA;AAAA,MACF;AAAA,IACF,WAAW,OAAO,UAAU,UAAU,MAAM,WAAW,MAAM,CAAC,MAAM,UAAU,QAAQ;AACpF,aAAO;AAAA,IACT,OAAO;AACL;AAAA,IACF;AAAA,EACF;AACA,QAAM,MAAM;AACZ,cAAYA,WAAG,IAAI;AACrB;AA/DA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;AC4CO,SAAS,cAAc,OAAO;AACnC,QAAM,OAAO,MAAM;AACnB,SACE,SAAS,eAAe,uBACxB,SAAS,eAAe,6BACxB,SAAS,eAAe,0BACxB,SAAS,eAAe,sCACxB,SAAS,eAAe,4CACxB,SAAS,eAAe;AAE5B;AAEO,SAAS,yBAAyB,OAAO;AAC9C,QAAM,OAAO,MAAM;AACnB,SACE,SAAS,eAAe,6BACxB,SAAS,eAAe,0BACxB,SAAS,eAAe,4CACxB,SAAS,eAAe;AAE5B;AAEO,SAAS,sBAAsB,OAAO;AAC3C,QAAM,OAAO,MAAM;AACnB,SACE,SAAS,eAAe,uBACxB,SAAS,eAAe,sCACxB,SAAS,eAAe;AAE5B;AAEO,SAAS,yBAAyB,OAAO;AAC9C,QAAM,OAAO,MAAM;AAEnB,SACE,SAAS,eAAe,uBACxB,SAAS,eAAe,0BACxB,SAAS,eAAe,sCACxB,SAAS,eAAe;AAE5B;AAEO,SAAS,4BAA4B,OAAO;AACjD,QAAM,OAAO,MAAM;AACnB,SACE,SAAS,eAAe,6BACxB,SAAS,eAAe;AAE5B;AAEO,SAAS,6BAA6B,OAAO;AAClD,SACE,MAAM,mBAAmB,eAAe,sCACxC,MAAM,mBAAmB,eAAe,yCACxC,MAAM,mBAAmB,eAAe;AAE5C;AAiEO,SAAS,OAAO;AACrB,QAAM,OAAO,KAAK,IAAIC,OAAM,CAAC;AAC7B,YAAU;AACZ;AAGO,SAAS,oBAAoB;AAClC,QAAM,OAAO,KAAK,IAAIA,OAAM,CAAC;AAC7B,QAAM,QAAQ,MAAM;AACpB,gBAAc;AAChB;AAIO,SAAS,yBAAyB;AACvC,MAAI,MAAM,SAASC,WAAG,QAAQ;AAC5B,MAAE,MAAM;AAAA,EACV;AACA,aAAW;AACb;AAEO,SAAS,gBAAgB,sBAAsB;AACpD,WAAS,IAAI,MAAM,OAAO,SAAS,sBAAsB,IAAI,MAAM,OAAO,QAAQ,KAAK;AACrF,UAAM,OAAO,CAAC,EAAE,SAAS;AAAA,EAC3B;AACA,QAAM,YAAY,MAAM;AACxB,QAAM,SAAS;AACf,SAAO;AACT;AAEO,SAAS,eAAe,WAAW;AACxC,QAAM,SAAS;AACjB;AAEO,SAASC,KAAI,MAAM;AACxB,MAAI,MAAM,IAAI,GAAG;AACf,SAAK;AACL,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEO,SAAS,aAAa,WAAW;AACtC,QAAM,YAAY,MAAM;AACxB,QAAM,SAAS;AACf,EAAAA,KAAI,SAAS;AACb,QAAM,SAAS;AACjB;AAEO,SAAS,MAAM,MAAM;AAC1B,SAAO,MAAM,SAAS;AACxB;AAEO,SAAS,gBAAgB;AAC9B,QAAM,WAAW,MAAM,SAAS;AAChC,OAAK;AACL,QAAM,OAAO,MAAM;AACnB,QAAM,oBAAoB,QAAQ;AAClC,SAAO;AACT;AAWO,SAAS,0BAA0B;AACxC,QAAM,WAAW,MAAM,SAAS;AAChC,OAAK;AACL,QAAM,OAAO,MAAM;AACnB,QAAM,oBAAoB,MAAM;AAChC,QAAM,oBAAoB,QAAQ;AAClC,SAAO,IAAI,eAAe,MAAM,iBAAiB;AACnD;AAEO,SAAS,iBAAiB;AAC/B,SAAO,oBAAoB,MAAM,GAAG;AACtC;AAEO,SAAS,oBAAoB,KAAK;AACvC,EAAAC,gBAAe,YAAY;AAC3B,QAAM,OAAOA,gBAAe,KAAK,KAAK;AACtC,SAAO,MAAM,KAAK,CAAC,EAAE;AACvB;AAEO,SAAS,oBAAoB;AAClC,SAAO,MAAM,WAAW,eAAe,CAAC;AAC1C;AAIO,SAAS,YAAY;AAC1B,YAAU;AACV,QAAM,QAAQ,MAAM;AACpB,MAAI,MAAM,OAAO,MAAM,QAAQ;AAC7B,UAAM,SAAS,MAAM;AAIrB,QACE,OAAO,UAAU,KACjB,OAAO,OAAO,SAAS,CAAC,EAAE,SAAS,MAAM,UACzC,OAAO,OAAO,SAAS,CAAC,EAAE,SAAS,MAAM,QACzC;AACA,iBAAW,wCAAwC;AAAA,IACrD;AACA,gBAAYF,WAAG,GAAG;AAClB;AAAA,EACF;AACA,YAAU,MAAM,WAAW,MAAM,GAAG,CAAC;AACvC;AAEA,SAAS,UAAU,MAAM;AAGvB,MACE,oBAAoB,IAAI,KACxB,SAAS,UAAU,aAClB,SAAS,UAAU,UAAU,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,QAC5E;AACA,aAAS;AAAA,EACX,OAAO;AACL,qBAAiB,IAAI;AAAA,EACvB;AACF;AAEA,SAAS,mBAAmB;AAC1B,SACE,MAAM,WAAW,MAAM,GAAG,MAAM,UAAU,YAC1C,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,OAC9C;AACA,UAAM;AACN,QAAI,MAAM,MAAM,MAAM,QAAQ;AAC5B,iBAAW,wBAAwB,MAAM,MAAM,CAAC;AAChD;AAAA,IACF;AAAA,EACF;AACA,QAAM,OAAO;AACf;AAEO,SAAS,gBAAgB,WAAW;AACzC,MAAI,KAAK,MAAM,WAAY,MAAM,OAAO,SAAU;AAClD,MAAI,MAAM,MAAM,MAAM,QAAQ;AAC5B,WACE,OAAO,UAAU,YACjB,OAAO,UAAU,kBACjB,OAAO,UAAU,iBACjB,OAAO,UAAU,sBACjB,EAAE,MAAM,MAAM,MAAM,QACpB;AACA,WAAK,MAAM,WAAW,MAAM,GAAG;AAAA,IACjC;AAAA,EACF;AACF;AAIO,SAAS,YAAY;AAC1B,SAAO,MAAM,MAAM,MAAM,QAAQ;AAC/B,UAAM,KAAK,MAAM,WAAW,MAAM,GAAG;AACrC,YAAQ,IAAI;AAAA,MACV,KAAK,UAAU;AACb,YAAI,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,UAAU;AAC1D,YAAE,MAAM;AAAA,QACV;AAAA,MAEF,KAAK,UAAU;AAAA,MACf,KAAK,UAAU;AAAA,MACf,KAAK,UAAU;AACb,UAAE,MAAM;AACR;AAAA,MAEF,KAAK,UAAU;AACb,gBAAQ,MAAM,WAAW,MAAM,MAAM,CAAC,GAAG;AAAA,UACvC,KAAK,UAAU;AACb,kBAAM,OAAO;AACb,6BAAiB;AACjB;AAAA,UAEF,KAAK,UAAU;AACb,4BAAgB,CAAC;AACjB;AAAA,UAEF;AACE;AAAA,QACJ;AACA;AAAA,MAEF;AACE,YAAI,cAAc,EAAE,GAAG;AACrB,YAAE,MAAM;AAAA,QACV,OAAO;AACL;AAAA,QACF;AAAA,IACJ;AAAA,EACF;AACF;AAIO,SAAS,YACd,MACA,oBAAoB,kBAAkB,MACtC;AACA,QAAM,MAAM,MAAM;AAClB,QAAM,OAAO;AACb,QAAM,oBAAoB;AAC5B;AAUA,SAAS,gBAAgB;AACvB,QAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAC/C,MAAI,YAAY,UAAU,UAAU,YAAY,UAAU,QAAQ;AAChE,eAAW,IAAI;AACf;AAAA,EACF;AAEA,MAAI,aAAa,UAAU,OAAO,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,KAAK;AACnF,UAAM,OAAO;AACb,gBAAYA,WAAG,QAAQ;AAAA,EACzB,OAAO;AACL,MAAE,MAAM;AACR,gBAAYA,WAAG,GAAG;AAAA,EACpB;AACF;AAEA,SAAS,kBAAkB;AACzB,QAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAC/C,MAAI,aAAa,UAAU,UAAU;AACnC,aAASA,WAAG,QAAQ,CAAC;AAAA,EACvB,OAAO;AACL,aAASA,WAAG,OAAO,CAAC;AAAA,EACtB;AACF;AAEA,SAAS,sBAAsB,MAAM;AAEnC,MAAI,YAAY,SAAS,UAAU,WAAWA,WAAG,OAAOA,WAAG;AAC3D,MAAI,QAAQ;AACZ,MAAI,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAG7C,MAAI,SAAS,UAAU,YAAY,aAAa,UAAU,UAAU;AAClE;AACA,eAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AACzC,gBAAYA,WAAG;AAAA,EACjB;AAGA,MACE,aAAa,UAAU,YACvB,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,aAC9C;AACA;AACA,gBAAYA,WAAG;AAAA,EACjB;AAEA,WAAS,WAAW,KAAK;AAC3B;AAEA,SAAS,mBAAmB,MAAM;AAEhC,QAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAE/C,MAAI,aAAa,MAAM;AACrB,QAAI,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,UAAU;AAE1D,eAASA,WAAG,QAAQ,CAAC;AAAA,IACvB,OAAO;AAEL,eAAS,SAAS,UAAU,cAAcA,WAAG,YAAYA,WAAG,YAAY,CAAC;AAAA,IAC3E;AACA;AAAA,EACF;AAEA,MAAI,SAAS,UAAU,aAAa;AAElC,QAAI,aAAa,UAAU,aAAa;AACtC,eAASA,WAAG,UAAU,CAAC;AACvB;AAAA,IACF,WAAW,aAAa,UAAU,mBAAmB,eAAe;AAElE,eAASA,WAAG,WAAW,CAAC;AACxB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,aAAa,UAAU,UAAU;AACnC,aAASA,WAAG,QAAQ,CAAC;AACrB;AAAA,EACF;AAEA,WAAS,SAAS,UAAU,cAAcA,WAAG,YAAYA,WAAG,YAAY,CAAC;AAC3E;AAEA,SAAS,kBAAkB;AAEzB,QAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAC/C,MAAI,aAAa,UAAU,UAAU;AACnC,aAASA,WAAG,QAAQ,CAAC;AAAA,EACvB,OAAO;AACL,aAASA,WAAG,YAAY,CAAC;AAAA,EAC3B;AACF;AAEA,SAAS,mBAAmB,MAAM;AAEhC,QAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAE/C,MAAI,aAAa,MAAM;AAErB,aAASA,WAAG,WAAW,CAAC;AACxB;AAAA,EACF;AAEA,MAAI,aAAa,UAAU,UAAU;AACnC,aAASA,WAAG,QAAQ,CAAC;AAAA,EACvB,WAAW,SAAS,UAAU,UAAU;AACtC,aAASA,WAAG,MAAM,CAAC;AAAA,EACrB,OAAO;AACL,aAASA,WAAG,OAAO,CAAC;AAAA,EACtB;AACF;AAEA,SAAS,eAAe;AACtB,QAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAE/C,MAAI,aAAa,UAAU,UAAU;AACnC,QAAI,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,UAAU;AAC1D,eAASA,WAAG,QAAQ,CAAC;AACrB;AAAA,IACF;AAGA,QAAI,MAAM,QAAQ;AAOhB,eAASA,WAAG,UAAU,CAAC;AAAA,IACzB,OAAO;AAOL,eAASA,WAAG,WAAW,CAAC;AAAA,IAC1B;AACA;AAAA,EACF;AAEA,MAAI,aAAa,UAAU,UAAU;AAEnC,aAASA,WAAG,mBAAmB,CAAC;AAAA,EAClC,OAAO;AACL,aAASA,WAAG,UAAU,CAAC;AAAA,EACzB;AACF;AAEA,SAAS,eAAe;AACtB,MAAI,MAAM,QAAQ;AAGhB,aAASA,WAAG,aAAa,CAAC;AAC1B;AAAA,EACF;AAEA,QAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAE/C,MAAI,aAAa,UAAU,aAAa;AACtC,UAAM,OAAO,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,cAAc,IAAI;AAC7E,QAAI,MAAM,WAAW,MAAM,MAAM,IAAI,MAAM,UAAU,UAAU;AAC7D,eAASA,WAAG,QAAQ,OAAO,CAAC;AAC5B;AAAA,IACF;AACA,aAASA,WAAG,WAAW,IAAI;AAC3B;AAAA,EACF;AAEA,MAAI,aAAa,UAAU,UAAU;AAEnC,aAASA,WAAG,mBAAmB,CAAC;AAAA,EAClC,OAAO;AACL,aAASA,WAAG,aAAa,CAAC;AAAA,EAC5B;AACF;AAgBO,SAAS,YAAY;AAC1B,MAAI,MAAM,SAASA,WAAG,aAAa;AACjC,UAAM,OAAO;AACb,iBAAa;AAAA,EACf;AACF;AAEA,SAAS,kBAAkB,MAAM;AAE/B,QAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAC/C,MAAI,aAAa,UAAU,UAAU;AACnC,aAASA,WAAG,UAAU,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,WAAW,IAAI,CAAC;AACpF;AAAA,EACF;AACA,MAAI,SAAS,UAAU,YAAY,aAAa,UAAU,aAAa;AAErE,UAAM,OAAO;AACb,gBAAYA,WAAG,KAAK;AACpB;AAAA,EACF;AACA,WAAS,SAAS,UAAU,WAAWA,WAAG,KAAKA,WAAG,MAAM,CAAC;AAC3D;AAEA,SAAS,qBAAqB;AAE5B,QAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAC/C,QAAM,YAAY,MAAM,WAAW,MAAM,MAAM,CAAC;AAChD,MACE,aAAa,UAAU;AAAA;AAAA,EAGvB,EAAE,iBAAiB,MAAM,SACzB;AACA,QAAI,cAAc,UAAU,UAAU;AAEpC,eAASA,WAAG,QAAQ,CAAC;AAAA,IACvB,OAAO;AAEL,eAASA,WAAG,mBAAmB,CAAC;AAAA,IAClC;AAAA,EACF,WACE,aAAa,UAAU,OACvB,EAAE,aAAa,UAAU,UAAU,aAAa,UAAU,SAC1D;AAEA,UAAM,OAAO;AACb,gBAAYA,WAAG,WAAW;AAAA,EAC5B,OAAO;AACL,MAAE,MAAM;AACR,gBAAYA,WAAG,QAAQ;AAAA,EACzB;AACF;AAEO,SAAS,iBAAiB,MAAM;AACrC,UAAQ,MAAM;AAAA,IACZ,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,IAAI;AACnB;AAAA;AAAA;AAAA,IAKF,KAAK,UAAU;AACb,oBAAc;AACd;AAAA;AAAA,IAGF,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,MAAM;AACrB;AAAA,IACF,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,MAAM;AACrB;AAAA,IACF,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,IAAI;AACnB;AAAA,IACF,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,KAAK;AACpB;AAAA,IACF,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,QAAQ;AACvB;AAAA,IACF,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,QAAQ;AACvB;AAAA,IAEF,KAAK,UAAU;AACb,UAAI,iBAAiB,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,aAAa;AAC9E,iBAASA,WAAG,WAAW,CAAC;AAAA,MAC1B,OAAO;AACL,UAAE,MAAM;AACR,oBAAYA,WAAG,MAAM;AAAA,MACvB;AACA;AAAA,IAEF,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,MAAM;AACrB;AAAA,IAEF,KAAK,UAAU;AACb,UAAI,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,OAAO;AACvD,iBAASA,WAAG,aAAa,CAAC;AAAA,MAC5B,OAAO;AACL,UAAE,MAAM;AACR,oBAAYA,WAAG,KAAK;AAAA,MACtB;AACA;AAAA,IAEF,KAAK,UAAU;AACb,yBAAmB;AACnB;AAAA,IACF,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,EAAE;AACjB;AAAA,IAEF,KAAK,UAAU;AACb,QAAE,MAAM;AACR,kBAAYA,WAAG,SAAS;AACxB;AAAA,IAEF,KAAK,UAAU,QAAQ;AACrB,YAAM,WAAW,MAAM,WAAW,MAAM,MAAM,CAAC;AAE/C,UACE,aAAa,UAAU,cACvB,aAAa,UAAU,cACvB,aAAa,UAAU,cACvB,aAAa,UAAU,cACvB,aAAa,UAAU,cACvB,aAAa,UAAU,YACvB;AACA,wBAAgB;AAChB;AAAA,MACF;AAAA,IACF;AAAA;AAAA;AAAA,IAGA,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AACb,iBAAW,KAAK;AAChB;AAAA;AAAA,IAGF,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AACb,iBAAW,IAAI;AACf;AAAA;AAAA;AAAA;AAAA;AAAA,IAOF,KAAK,UAAU;AACb,sBAAgB;AAChB;AAAA,IAEF,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AACb,4BAAsB,IAAI;AAC1B;AAAA,IAEF,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AACb,yBAAmB,IAAI;AACvB;AAAA,IAEF,KAAK,UAAU;AACb,sBAAgB;AAChB;AAAA,IAEF,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AACb,yBAAmB,IAAI;AACvB;AAAA,IAEF,KAAK,UAAU;AACb,mBAAa;AACb;AAAA,IAEF,KAAK,UAAU;AACb,mBAAa;AACb;AAAA,IAEF,KAAK,UAAU;AAAA,IACf,KAAK,UAAU;AACb,wBAAkB,IAAI;AACtB;AAAA,IAEF,KAAK,UAAU;AACb,eAASA,WAAG,OAAO,CAAC;AACpB;AAAA,IAEF;AACE;AAAA,EACJ;AAEA,aAAW,yBAAyB,OAAO,aAAa,IAAI,CAAC,KAAK,MAAM,GAAG;AAC7E;AAEA,SAAS,SAAS,MAAM,MAAM;AAC5B,QAAM,OAAO;AACb,cAAY,IAAI;AAClB;AAEA,SAAS,aAAa;AACpB,QAAM,QAAQ,MAAM;AACpB,MAAI,UAAU;AACd,MAAI,UAAU;AACd,aAAS;AACP,QAAI,MAAM,OAAO,MAAM,QAAQ;AAC7B,iBAAW,mCAAmC,KAAK;AACnD;AAAA,IACF;AACA,UAAM,OAAO,MAAM,WAAW,MAAM,GAAG;AACvC,QAAI,SAAS;AACX,gBAAU;AAAA,IACZ,OAAO;AACL,UAAI,SAAS,UAAU,mBAAmB;AACxC,kBAAU;AAAA,MACZ,WAAW,SAAS,UAAU,sBAAsB,SAAS;AAC3D,kBAAU;AAAA,MACZ,WAAW,SAAS,UAAU,SAAS,CAAC,SAAS;AAC/C;AAAA,MACF;AACA,gBAAU,SAAS,UAAU;AAAA,IAC/B;AACA,MAAE,MAAM;AAAA,EACV;AACA,IAAE,MAAM;AAER,WAAS;AAET,cAAYA,WAAG,MAAM;AACvB;AAOA,SAAS,UAAU;AACjB,SAAO,MAAM;AACX,UAAM,OAAO,MAAM,WAAW,MAAM,GAAG;AACvC,QAAK,QAAQ,UAAU,UAAU,QAAQ,UAAU,UAAW,SAAS,UAAU,YAAY;AAC3F,YAAM;AAAA,IACR,OAAO;AACL;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB;AACzB,QAAM,OAAO;AAGb,SAAO,MAAM;AACX,UAAM,OAAO,MAAM,WAAW,MAAM,GAAG;AACvC,QACG,QAAQ,UAAU,UAAU,QAAQ,UAAU,UAC9C,QAAQ,UAAU,cAAc,QAAQ,UAAU,cAClD,QAAQ,UAAU,cAAc,QAAQ,UAAU,cACnD,SAAS,UAAU,YACnB;AACA,YAAM;AAAA,IACR,OAAO;AACL;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,MAAM,WAAW,MAAM,GAAG;AAC3C,MAAI,aAAa,UAAU,YAAY;AACrC,MAAE,MAAM;AACR,gBAAYA,WAAG,MAAM;AAAA,EACvB,OAAO;AACL,gBAAYA,WAAG,GAAG;AAAA,EACpB;AACF;AAGA,SAAS,WAAW,eAAe;AACjC,MAAI,WAAW;AACf,MAAI,YAAY;AAEhB,MAAI,CAAC,eAAe;AAClB,YAAQ;AAAA,EACV;AAEA,MAAI,WAAW,MAAM,WAAW,MAAM,GAAG;AACzC,MAAI,aAAa,UAAU,KAAK;AAC9B,MAAE,MAAM;AACR,YAAQ;AACR,eAAW,MAAM,WAAW,MAAM,GAAG;AAAA,EACvC;AAEA,MAAI,aAAa,UAAU,cAAc,aAAa,UAAU,YAAY;AAC1E,eAAW,MAAM,WAAW,EAAE,MAAM,GAAG;AACvC,QAAI,aAAa,UAAU,YAAY,aAAa,UAAU,MAAM;AAClE,QAAE,MAAM;AAAA,IACV;AACA,YAAQ;AACR,eAAW,MAAM,WAAW,MAAM,GAAG;AAAA,EACvC;AAEA,MAAI,aAAa,UAAU,YAAY;AACrC,MAAE,MAAM;AACR,eAAW;AAAA,EACb,WAAW,aAAa,UAAU,YAAY;AAC5C,MAAE,MAAM;AACR,gBAAY;AAAA,EACd;AAEA,MAAI,UAAU;AACZ,gBAAYA,WAAG,MAAM;AACrB;AAAA,EACF;AAEA,MAAI,WAAW;AACb,gBAAYA,WAAG,OAAO;AACtB;AAAA,EACF;AAEA,cAAYA,WAAG,GAAG;AACpB;AAEA,SAAS,WAAW,OAAO;AACzB,QAAM;AACN,aAAS;AACP,QAAI,MAAM,OAAO,MAAM,QAAQ;AAC7B,iBAAW,8BAA8B;AACzC;AAAA,IACF;AACA,UAAM,KAAK,MAAM,WAAW,MAAM,GAAG;AACrC,QAAI,OAAO,UAAU,WAAW;AAC9B,YAAM;AAAA,IACR,WAAW,OAAO,OAAO;AACvB;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACA,QAAM;AACN,cAAYA,WAAG,MAAM;AACvB;AAGA,SAAS,gBAAgB;AACvB,aAAS;AACP,QAAI,MAAM,OAAO,MAAM,QAAQ;AAC7B,iBAAW,uBAAuB;AAClC;AAAA,IACF;AACA,UAAM,KAAK,MAAM,WAAW,MAAM,GAAG;AACrC,QACE,OAAO,UAAU,eAChB,OAAO,UAAU,cAAc,MAAM,WAAW,MAAM,MAAM,CAAC,MAAM,UAAU,gBAC9E;AACA,UAAI,MAAM,QAAQ,MAAM,SAAS,MAAMA,WAAG,QAAQ,GAAG;AACnD,YAAI,OAAO,UAAU,YAAY;AAC/B,gBAAM,OAAO;AACb,sBAAYA,WAAG,YAAY;AAC3B;AAAA,QACF,OAAO;AACL,YAAE,MAAM;AACR,sBAAYA,WAAG,SAAS;AACxB;AAAA,QACF;AAAA,MACF;AACA,kBAAYA,WAAG,QAAQ;AACvB;AAAA,IACF;AACA,QAAI,OAAO,UAAU,WAAW;AAC9B,YAAM;AAAA,IACR;AACA,UAAM;AAAA,EACR;AACF;AAKO,SAAS,WAAW;AACzB,SAAO,MAAM,MAAM,MAAM,QAAQ;AAC/B,UAAM,KAAK,MAAM,WAAW,MAAM,GAAG;AACrC,QAAI,mBAAmB,EAAE,GAAG;AAC1B,YAAM;AAAA,IACR,WAAW,OAAO,UAAU,WAAW;AAErC,YAAM,OAAO;AACb,UAAI,MAAM,WAAW,MAAM,GAAG,MAAM,UAAU,gBAAgB;AAC5D,eACE,MAAM,MAAM,MAAM,UAClB,MAAM,WAAW,MAAM,GAAG,MAAM,UAAU,iBAC1C;AACA,gBAAM;AAAA,QACR;AACA,cAAM;AAAA,MACR;AAAA,IACF,OAAO;AACL;AAAA,IACF;AAAA,EACF;AACF;AA3+BA,IAWW,gBAsBA,SA6EED,QA0HA;AAxOb;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAE2B,KAAC,SAAUI,iBAAgB;AACpD,YAAM,SAAS;AAAG,MAAAA,gBAAeA,gBAAe,QAAQ,IAAI,MAAM,IAAI;AACtE,YAAM,eAAe,SAAS;AAAG,MAAAA,gBAAeA,gBAAe,cAAc,IAAI,YAAY,IAAI;AACjG,YAAM,sBAAsB,eAAe;AAAG,MAAAA,gBAAeA,gBAAe,qBAAqB,IAAI,mBAAmB,IAAI;AAC5H,YAAM,4BAA4B,sBAAsB;AAAG,MAAAA,gBAAeA,gBAAe,2BAA2B,IAAI,yBAAyB,IAAI;AACrJ,YAAM,yBAAyB,4BAA4B;AAAG,MAAAA,gBAAeA,gBAAe,wBAAwB,IAAI,sBAAsB,IAAI;AAClJ,YAAM,qCAAqC,yBAAyB;AAAG,MAAAA,gBAAeA,gBAAe,oCAAoC,IAAI,kCAAkC,IAAI;AACnL,YAAM,2CAA2C,qCAAqC;AAAG,MAAAA,gBAAeA,gBAAe,0CAA0C,IAAI,wCAAwC,IAAI;AACjN,YAAM,wCAAwC,2CAA2C;AAAG,MAAAA,gBAAeA,gBAAe,uCAAuC,IAAI,qCAAqC,IAAI;AAC9M,YAAM,kBAAkB,wCAAwC;AAAG,MAAAA,gBAAeA,gBAAe,iBAAiB,IAAI,eAAe,IAAI;AAGzI,YAAM,oBAAoB,kBAAkB;AAAG,MAAAA,gBAAeA,gBAAe,mBAAmB,IAAI,iBAAiB,IAAI;AACzH,YAAM,YAAY,oBAAoB;AAAG,MAAAA,gBAAeA,gBAAe,WAAW,IAAI,SAAS,IAAI;AAEnG,YAAM,eAAe,YAAY;AAAG,MAAAA,gBAAeA,gBAAe,cAAc,IAAI,YAAY,IAAI;AAAA,IACtG,GAAG,mBAAmB,iBAAiB,CAAC,EAAE;AAMtB,KAAC,SAAUC,UAAS;AAGtC,YAAM,aAAa;AAAG,MAAAA,SAAQA,SAAQ,YAAY,IAAI,UAAU,IAAI;AAGpE,YAAM,WAAW,aAAa;AAAG,MAAAA,SAAQA,SAAQ,UAAU,IAAI,QAAQ,IAAI;AAI3E,YAAM,iBAAiB,WAAW;AAAG,MAAAA,SAAQA,SAAQ,gBAAgB,IAAI,cAAc,IAAI;AAG3F,YAAM,qBAAqB,iBAAiB;AAAG,MAAAA,SAAQA,SAAQ,oBAAoB,IAAI,kBAAkB,IAAI;AAAA,IAC/G,GAAG,YAAY,UAAU,CAAC,EAAE;AA+DrB,IAAML,SAAN,MAAY;AAAA,MACjB,cAAc;AACZ,aAAK,OAAO,MAAM;AAClB,aAAK,oBAAoB,MAAM;AAC/B,aAAK,QAAQ,MAAM;AACnB,aAAK,MAAM,MAAM;AACjB,aAAK,aAAa,MAAM;AACxB,aAAK,SAAS,MAAM;AACpB,aAAK,iBAAiB;AACtB,aAAK,UAAU;AACf,aAAK,gBAAgB;AACrB,aAAK,mBAAmB;AACxB,aAAK,YAAY;AACjB,aAAK,cAAc;AACnB,aAAK,eAAe;AACpB,aAAK,2BAA2B;AAChC,aAAK,yBAAyB;AAC9B,aAAK,uBAAuB;AAC5B,aAAK,qBAAqB;AAC1B,aAAK,sBAAsB;AAC3B,aAAK,oBAAoB;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAkCF;AAmEO,IAAM,iBAAN,MAAqB;AAAA,MAG1B,YAAY,MAAM,mBAAmB;AACnC,aAAK,OAAO;AACZ,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AAAA;AAAA;;;ACvMe,SAAR,6BACL,QACA,QAAQ,OAAO,aAAa,GAC5B;AACA,MAAI,WAAW,QAAQ;AACvB,MAAI,eAAe,QAAQ,QAAQ,GAAG;AAEpC,UAAM,OAAO,OAAO,sBAAsB,KAAK;AAC/C,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACA;AACA,MAAI,eAAe,QAAQ,QAAQ,GAAG;AAEpC,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACA;AACA,MAAI,eAAe,QAAQ,QAAQ,GAAG;AAEpC,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,UAAU,OAAO,sBAAsB,KAAK;AAAA,MAC5C,WAAW,OAAO,sBAAsB,QAAQ,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACA;AACA,MAAI,eAAe,QAAQ,QAAQ,GAAG;AAEpC,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,WAAW;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACA,QAAM,IAAI,MAAM,yCAAyC,KAAK,EAAE;AAClE;AAEA,SAAS,eAAe,QAAQ,OAAO;AACrC,QAAM,QAAQ,OAAO,OAAO,KAAK;AACjC,SAAO,MAAM,SAASM,WAAG,UAAU,MAAM,SAASA,WAAG;AACvD;AA3FA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IACO;AADP;AAAA;AACA,IAAO,gBAAQ,oBAAI,IAAI;AAAA,MACrB,CAAC,QAAQ,GAAQ;AAAA,MACjB,CAAC,OAAO,GAAG;AAAA,MACX,CAAC,QAAQ,GAAQ;AAAA,MACjB,CAAC,MAAM,GAAG;AAAA,MACV,CAAC,MAAM,GAAG;AAAA,MACV,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,OAAO,MAAQ;AAAA,MAChB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,OAAO,MAAQ;AAAA,MAChB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,OAAO,MAAQ;AAAA,MAChB,CAAC,OAAO,MAAQ;AAAA,MAChB,CAAC,OAAO,MAAQ;AAAA,MAChB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,OAAO,MAAQ;AAAA,MAChB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,OAAO,MAAQ;AAAA,MAChB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,OAAO,MAAQ;AAAA,MAChB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,UAAU,MAAQ;AAAA,MACnB,CAAC,SAAS,MAAQ;AAAA,MAClB,CAAC,QAAQ,MAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,WAAW,QAAQ;AAAA,MACpB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,WAAW,QAAQ;AAAA,MACpB,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,WAAW,QAAQ;AAAA,MACpB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,WAAW,QAAQ;AAAA,MACpB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,WAAW,QAAQ;AAAA,MACpB,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,WAAW,QAAQ;AAAA,MACpB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,YAAY,QAAQ;AAAA,MACrB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,WAAW,QAAQ;AAAA,MACpB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,MAAM,QAAQ;AAAA,MACf,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,QAAQ,QAAQ;AAAA,MACjB,CAAC,OAAO,QAAQ;AAAA,MAChB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,SAAS,QAAQ;AAAA,MAClB,CAAC,UAAU,QAAQ;AAAA,MACnB,CAAC,SAAS,QAAQ;AAAA,IACpB,CAAC;AAAA;AAAA;;;ACtPc,SAAR,iBAAkC,SAAS;AAChD,QAAM,CAACC,OAAM,MAAM,IAAI,YAAY,QAAQ,aAAa,qBAAqB;AAC7E,QAAM,CAAC,cAAc,cAAc,IAAI,YAAY,QAAQ,qBAAqB,gBAAgB;AAChG,SAAO,EAAC,MAAAA,OAAM,QAAQ,cAAc,eAAc;AACpD;AAEA,SAAS,YAAY,QAAQ;AAC3B,MAAI,WAAW,OAAO,QAAQ,GAAG;AACjC,MAAI,aAAa,IAAI;AACnB,eAAW,OAAO;AAAA,EACpB;AACA,SAAO,CAAC,OAAO,MAAM,GAAG,QAAQ,GAAG,OAAO,MAAM,QAAQ,CAAC;AAC3D;AArBA;AAAA;AAAA;AAAA;;;ACAA,IAAsB;AAAtB;AAAA;AAAA,IAAsB,cAAtB,MAAkC;AAAA;AAAA,MAIhC,gBAAgB;AACd,eAAO;AAAA,MACT;AAAA,MAEA,iBAAiB;AACf,eAAO;AAAA,MACT;AAAA,MAEA,gBAAgB;AACd,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;ACwiBO,SAAS,oBAAoB,GAAG;AACrC,QAAM,YAAY,EAAE,WAAW,CAAC;AAChC,SAAO,aAAa,UAAU,cAAc,aAAa,UAAU;AACrE;AAWA,SAAS,qBAAqB,MAAM;AAClC,MAAI,SAAS;AACb,MAAI,aAAa;AAEjB,MAAI,4BAA4B;AAChC,MAAI,oBAAoB;AACxB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,IAAI,KAAK,CAAC;AAChB,QAAI,MAAM,OAAO,MAAM,OAAQ,MAAM,MAAM;AACzC,UAAI,CAAC,2BAA2B;AAC9B,sBAAc;AAAA,MAChB;AAAA,IACF,WAAW,MAAM,MAAM;AACrB,mBAAa;AACb,kCAA4B;AAAA,IAC9B,OAAO;AACL,UAAI,qBAAqB,2BAA2B;AAClD,kBAAU;AAAA,MACZ;AACA,gBAAU;AACV,mBAAa;AACb,UAAI,MAAM,KAAK;AACb,cAAM,EAAC,QAAQ,KAAI,IAAI,cAAc,MAAM,IAAI,CAAC;AAChD,YAAI,OAAO;AACX,kBAAU;AAAA,MACZ,OAAO;AACL,kBAAU;AAAA,MACZ;AACA,0BAAoB;AACpB,kCAA4B;AAAA,IAC9B;AAAA,EACF;AACA,MAAI,CAAC,2BAA2B;AAC9B,cAAU;AAAA,EACZ;AACA,SAAO,KAAK,UAAU,MAAM;AAC9B;AAOA,SAAS,yBAAyB,MAAM;AACtC,MAAI,cAAc;AAClB,MAAI,YAAY;AAChB,aAAW,KAAK,MAAM;AACpB,QAAI,MAAM,MAAM;AACd;AACA,kBAAY;AAAA,IACd,WAAW,MAAM,KAAK;AACpB;AAAA,IACF;AAAA,EACF;AACA,SAAO,KAAK,OAAO,WAAW,IAAI,IAAI,OAAO,SAAS;AACxD;AAQA,SAAS,4BAA4B,MAAM;AACzC,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,IAAI,KAAK,CAAC;AAChB,QAAI,MAAM,MAAM;AACd,UAAI,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG;AAC1B,kBAAU;AACV,eAAO,IAAI,KAAK,UAAU,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG;AAChD;AAAA,QACF;AAAA,MACF,OAAO;AACL,kBAAU;AAAA,MACZ;AAAA,IACF,WAAW,MAAM,KAAK;AACpB,YAAM,EAAC,QAAQ,KAAI,IAAI,cAAc,MAAM,IAAI,CAAC;AAChD,gBAAU;AACV,UAAI,OAAO;AAAA,IACb,OAAO;AACL,gBAAU;AAAA,IACZ;AAAA,EACF;AACA,SAAO,KAAK,UAAU,MAAM;AAC9B;AAQA,SAAS,cAAc,MAAM,qBAAqB;AAChD,MAAI,MAAM;AACV,MAAI,QAAQ;AACZ,MAAI;AACJ,MAAI,IAAI;AAER,MAAI,KAAK,CAAC,MAAM,KAAK;AACnB,QAAI,QAAQ;AACZ;AACA,QAAI;AACJ,QAAI,KAAK,CAAC,MAAM,KAAK;AACnB,cAAQ;AACR;AACA,iBAAW;AACX,aAAO,IAAI,KAAK,UAAUC,YAAW,KAAK,WAAW,CAAC,CAAC,GAAG;AACxD;AAAA,MACF;AAAA,IACF,OAAO;AACL,iBAAW;AACX,aAAO,IAAI,KAAK,UAAUC,gBAAe,KAAK,WAAW,CAAC,CAAC,GAAG;AAC5D;AAAA,MACF;AAAA,IACF;AACA,QAAI,KAAK,CAAC,MAAM,KAAK;AACnB,YAAM,SAAS,KAAK,MAAM,UAAU,CAAC;AACrC,UAAI,QAAQ;AACV;AACA,iBAAS,OAAO,cAAc,SAAS,QAAQ,KAAK,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,EACF,OAAO;AACL,WAAO,IAAI,KAAK,UAAU,UAAU,IAAI;AACtC,YAAM,KAAK,KAAK,CAAC;AACjB;AACA,UAAI,OAAO,KAAK;AACd,iBAAS,cAAc,IAAI,GAAG;AAC9B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,CAAC,QAAQ;AACX,WAAO,EAAC,QAAQ,KAAK,MAAM,oBAAmB;AAAA,EAChD;AACA,SAAO,EAAC,QAAQ,MAAM,EAAC;AACzB;AAEA,SAASA,gBAAe,MAAM;AAC5B,SAAO,QAAQ,UAAU,UAAU,QAAQ,UAAU;AACvD;AAEA,SAASD,YAAW,MAAM;AACxB,SACG,QAAQ,UAAU,UAAU,QAAQ,UAAU,UAC9C,QAAQ,UAAU,cAAc,QAAQ,UAAU,cAClD,QAAQ,UAAU,cAAc,QAAQ,UAAU;AAEvD;AA5tBA,IAYqB;AAZrB;AAAA;AAGA;AACA;AACA;AACA;AAEA;AAEA;AAEA,IAAqB,iBAArB,MAAqB,wBAAuB,YAAY;AAAA;AAAA,MAMtD,SAAS;AAAC,aAAK,iBAAiB;AAAA,MAAC;AAAA,MACjC,UAAU;AAAC,aAAK,YAAY;AAAA,MAAC;AAAA;AAAA,MAG7B,UAAU;AAAC,aAAK,kBAAkB;AAAA,MAAI;AAAA;AAAA;AAAA,MAGtC,UAAU;AAAC,aAAK,oCAAoC,CAAC;AAAA,MAAC;AAAA;AAAA;AAAA,MAGtD,UAAU;AAAC,aAAK,oCAAoC,CAAC;AAAA,MAAC;AAAA,MAEtD,YACG,iBACA,QACA,iBACA,aACA,SACD;AACA,cAAM;AAAE,aAAK,kBAAkB;AAAgB,aAAK,SAAS;AAAO,aAAK,kBAAkB;AAAgB,aAAK,cAAc;AAAY,aAAK,UAAU;AAAQ,wBAAe,UAAU,OAAO,KAAK,IAAI;AAAE,wBAAe,UAAU,QAAQ,KAAK,IAAI;AAAE,wBAAe,UAAU,QAAQ,KAAK,IAAI;AAAE,wBAAe,UAAU,QAAQ,KAAK,IAAI;AAAE,wBAAe,UAAU,QAAQ,KAAK,IAAI;AAAE;AAC5X,aAAK,gBAAgB,iBAAiB,OAAO;AAC7C,aAAK,qBAAqB,QAAQ,eAAe;AACjD,aAAK,kBAAkB,QAAQ,mBAAmB;AAAA,MACpD;AAAA,MAEA,UAAU;AACR,YAAI,KAAK,OAAO,SAASE,WAAG,WAAW,GAAG;AACxC,eAAK,cAAc;AACnB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,MAEA,gBAAgB;AACd,YAAI,SAAS;AACb,YAAI,KAAK,iBAAiB;AACxB,oBAAU,SAAS,KAAK,eAAe,MAAM,KAAK,UAAU,KAAK,QAAQ,YAAY,EAAE,CAAC;AAAA,QAC1F;AACA,YAAI,KAAK,oBAAoB;AAC3B,cAAI,KAAK,iBAAiB;AAExB,uBAAW,CAAC,MAAM,YAAY,KAAK,OAAO,QAAQ,KAAK,iCAAiC,GAAG;AACzF,wBAAU,OAAO,YAAY,eAAe,IAAI;AAAA,YAClD;AAAA,UACF,OAAO;AAEL,kBAAM,EAAC,eAAe,yBAAyB,GAAG,iBAAgB,IAChE,KAAK;AACP,gBAAI,yBAAyB;AAC3B,wBAAU,4BAA4B,uBAAuB,WAAW,KAAK,eAAe;AAAA,YAC9F;AACA,kBAAM,mBAAmB,OAAO,QAAQ,gBAAgB,EACrD,IAAI,CAAC,CAAC,MAAM,YAAY,MAAM,GAAG,IAAI,OAAO,YAAY,EAAE,EAC1D,KAAK,IAAI;AACZ,gBAAI,kBAAkB;AACpB,oBAAM,aACJ,KAAK,mBAAmB,KAAK,QAAQ,aAAa,iBAAiB;AACrE,wBAAU,WAAW,gBAAgB,WAAW,UAAU;AAAA,YAC5D;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,MAEA,gBAAgB;AACd,cAAM,EAAC,SAAS,MAAK,IAAI,KAAK,OAAO,aAAa;AAGlD,cAAM,sBAAsB,KAAK,QAAQ,aAAa,OAAO,KAAK,uBAAuB,KAAK;AAC9F,YAAI,KAAK,sBAAsB,YAAY,QAAQ,oBAAoB;AACrE,eAAK,sBAAsB,qBAAqB,OAAO;AAAA,QACzD,OAAO;AACL,eAAK,4BAA4B,mBAAmB;AAAA,QACtD;AAAA,MACF;AAAA,MAEA,uBAAuB,iBAAiB;AACtC,cAAM,aAAa,KAAK,sBAAsB,eAAe;AAC7D,eAAO,eAAe,UAAU;AAAA,MAClC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,sBAAsB,OAAO;AAC3B,cAAM,OAAO,KAAK,OAAO;AACzB,eAAO,KAAK,YAAY,SAAS,KAAK,YAAY,KAAK,QAAQ;AAC7D,cAAI,KAAK,KAAK,SAAS,MAAM,MAAM;AACjC,iBAAK;AAAA,UACP;AACA,eAAK;AAAA,QACP;AACA,eAAO,KAAK;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,sBAAsB,qBAAqB,SAAS;AAClD,cAAM,WAAW,YAAY,QAAQ;AAErC,aAAK,OAAO,aAAa,KAAK,yBAAyB,QAAQ,CAAC;AAEhE,YAAI,UAAU;AACd,YAAI,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AAEtC,eAAK,OAAO,aAAa,GAAG,KAAK,gBAAgB,CAAC,KAAK;AACvD,eAAK,oCAAoC,OAAO;AAAA,QAClD,OAAO;AAEL,eAAK,gBAAgB;AACrB,eAAK,OAAO,WAAW,KAAK;AAC5B,oBAAU,KAAK,aAAa,IAAI;AAEhC,cAAI,KAAK,OAAO,SAASA,WAAG,OAAOA,WAAG,SAAS,GAAG;AAEhD,iBAAK,OAAO,WAAW,GAAG;AAAA,UAC5B,WAAW,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AAE7C,iBAAK,OAAO,YAAY;AACxB,iBAAK,oCAAoC,OAAO;AAAA,UAClD,OAAO;AACL,kBAAM,IAAI,MAAM,gDAAgD;AAAA,UAClE;AAKA,cAAI,SAAS;AACX,iBAAK,OAAO,WAAW,KAAK,OAAO,EAAE;AAAA,UACvC;AAAA,QACF;AACA,YAAI,CAAC,KAAK,QAAQ,YAAY;AAG5B,cAAI,YAAY,MAAM;AACpB,iBAAK,OAAO,WAAW,UAAU;AAAA,UACnC;AACA,eAAK,OAAO,WAAW,KAAK,QAAQ,KAAK,KAAK,aAAa,mBAAmB,CAAC,QAAQ;AAAA,QACzF;AAGA,aAAK,OAAO,mBAAmB;AAC/B,eAAO,CAAC,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AAC1C,eAAK,OAAO,YAAY;AAAA,QAC1B;AACA,aAAK,OAAO,aAAa,GAAG;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,4BAA4B,qBAAqB;AAE/C,aAAK,OAAO,aAAa,KAAK,+BAA+B,CAAC;AAE9D,YAAI,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AAEtC,eAAK,OAAO,aAAa,GAAG,KAAK,gBAAgB,CAAC,QAAQ;AAC1D,eAAK,gBAAgB,IAAI;AAAA,QAC3B,OAAO;AAEL,eAAK,gBAAgB;AACrB,eAAK,8BAA8B,mBAAmB;AAEtD,cAAI,KAAK,OAAO,SAASA,WAAG,OAAOA,WAAG,SAAS,GAAG;AAAA,UAElD,WAAW,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AAE7C,iBAAK,OAAO,YAAY;AACxB,iBAAK,gBAAgB,IAAI;AAAA,UAC3B,OAAO;AACL,kBAAM,IAAI,MAAM,gDAAgD;AAAA,UAClE;AAAA,QACF;AAGA,aAAK,OAAO,mBAAmB;AAC/B,eAAO,CAAC,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AAC1C,eAAK,OAAO,YAAY;AAAA,QAC1B;AACA,aAAK,OAAO,aAAa,GAAG;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,yBAAyB,UAAU;AACjC,YAAI,KAAK,QAAQ,YAAY;AAC3B,cAAI,UAAU;AACZ,mBAAO,KAAK,gCAAgC,QAAQ,cAAc;AAAA,UACpE,OAAO;AACL,mBAAO,KAAK,gCAAgC,OAAO,cAAc;AAAA,UACnE;AAAA,QACF,OAAO;AACL,iBAAO,KAAK,gCAAgC,UAAU,kBAAkB;AAAA,QAC1E;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,iCAAiC;AAC/B,YAAI,KAAK,oBAAoB;AAC3B,iBAAO,KAAK,gCAAgC,iBAAiB,EAAE;AAAA,QACjE,OAAO;AACL,gBAAM,EAAC,cAAa,IAAI;AACxB,gBAAM,yBAAyB,KAAK,kBAChC,KAAK,gBAAgB,yBAAyB,cAAc,IAAI,KAAK,cAAc,OACnF,cAAc;AAClB,iBAAO,GAAG,sBAAsB,GAAG,cAAc,MAAM;AAAA,QACzD;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,kBAAkB;AAChB,YAAI,KAAK,oBAAoB;AAC3B,iBAAO,KAAK;AAAA,YACV;AAAA,YACA,KAAK,QAAQ,aAAa,iBAAiB;AAAA,UAC7C;AAAA,QACF,OAAO;AACL,gBAAM,EAAC,cAAa,IAAI;AACxB,gBAAM,iCAAiC,KAAK,kBACxC,KAAK,gBAAgB,yBAAyB,cAAc,YAAY,KACxE,cAAc,eACd,cAAc;AAClB,iBAAO,iCAAiC,cAAc;AAAA,QACxD;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,gCAAgC,UAAU,kBAAkB;AAC1D,cAAM,WAAW,KAAK,sBAAsB,UAAU,gBAAgB;AACtE,YAAI,KAAK,iBAAiB;AACxB,iBAAO,GAAG,QAAQ;AAAA,QACpB,OAAO;AACL,iBAAO,GAAG,QAAQ;AAAA,QACpB;AAAA,MACF;AAAA,MAEA,sBAAsB,UAAU,kBAAkB;AAChD,YAAI,KAAK,iBAAiB;AAExB,gBAAM,OAAO,KAAK,kBAAkB;AACpC,cAAI,CAAC,KAAK,kCAAkC,IAAI,GAAG;AACjD,iBAAK,kCAAkC,IAAI,IACzC,KAAK,gBAAgB,yBAAyB,IAAI;AAAA,UACtD;AACA,iBAAO,GAAG,KAAK,kCAAkC,IAAI,CAAC,IAAI,QAAQ;AAAA,QACpE,OAAO;AAGL,cAAI,CAAC,KAAK,kCAAkC,QAAQ,GAAG;AACrD,iBAAK,kCAAkC,QAAQ,IAAI,KAAK,YAAY;AAAA,cAClE,IAAI,QAAQ;AAAA,YACd;AAAA,UACF;AACA,iBAAO,KAAK,kCAAkC,QAAQ;AAAA,QACxD;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,kBAAkB;AAOhB,YAAI,WAAW,KAAK,OAAO,aAAa,IAAI;AAC5C,eACE,KAAK,OAAO,OAAO,QAAQ,EAAE,UAC5B,CAAC,KAAK,OAAO,gBAAgB,WAAW,GAAGA,WAAG,SAASA,WAAG,OAAO,KAChE,CAAC,KAAK,OAAO,gBAAgB,WAAW,GAAGA,WAAG,aAAaA,WAAG,OAAO,KACrE,CAAC,KAAK,OAAO,gBAAgB,UAAUA,WAAG,MAAM,KAChD,CAAC,KAAK,OAAO,gBAAgB,UAAUA,WAAG,SAAS,KACnD,CAAC,KAAK,OAAO,gBAAgB,UAAUA,WAAG,OAAOA,WAAG,SAAS,GAC/D;AACA;AAAA,QACF;AACA,YAAI,aAAa,KAAK,OAAO,aAAa,IAAI,GAAG;AAC/C,gBAAM,UAAU,KAAK,OAAO,eAAe;AAC3C,cAAI,oBAAoB,OAAO,GAAG;AAChC,iBAAK,OAAO,aAAa,IAAI,OAAO,GAAG;AAAA,UACzC;AAAA,QACF;AACA,eAAO,KAAK,OAAO,aAAa,IAAI,UAAU;AAC5C,eAAK,gBAAgB,aAAa;AAAA,QACpC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,8BAA8B,qBAAqB;AACjD,cAAM,WAAW,KAAK,QAAQ,aAC1B,KACA,2BAA2B,KAAK,aAAa,mBAAmB,CAAC;AACrE,YAAI,CAAC,KAAK,OAAO,SAASA,WAAG,OAAO,KAAK,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACzE,cAAI,UAAU;AACZ,iBAAK,OAAO,WAAW,MAAM,QAAQ,GAAG;AAAA,UAC1C,OAAO;AACL,iBAAK,OAAO,WAAW,QAAQ;AAAA,UACjC;AACA;AAAA,QACF;AACA,aAAK,OAAO,WAAW,KAAK;AAC5B,aAAK,aAAa,KAAK;AACvB,YAAI,UAAU;AACZ,eAAK,OAAO,WAAW,IAAI,QAAQ,GAAG;AAAA,QACxC,OAAO;AACL,eAAK,OAAO,WAAW,GAAG;AAAA,QAC5B;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,aAAa,gBAAgB;AAC3B,YAAI,UAAU;AACd,eAAO,MAAM;AACX,cAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,EAAE,GAAG;AAE3C,kBAAM,WAAW,KAAK,OAAO,eAAe;AAC5C,gBAAI,kBAAkB,aAAa,OAAO;AACxC,kBAAI,YAAY,MAAM;AAWpB,qBAAK,OAAO,WAAW,QAAQ,QAAQ,UAAU,EAAE,CAAC;AAAA,cACtD;AAEA,mBAAK,OAAO,YAAY;AAExB,mBAAK,OAAO,YAAY;AACxB,oBAAM,WAAW,KAAK,OAAO,SAAS;AACtC,mBAAK,iBAAiB;AACtB,wBAAU,KAAK,OAAO,yCAAyC,QAAQ;AAEvE;AAAA,YACF,OAAO;AACL,mBAAK,gBAAgB,QAAQ;AAC7B,mBAAK,OAAO,aAAa,IAAI;AAC7B,mBAAK,iBAAiB;AAAA,YACxB;AAAA,UACF,WAAW,KAAK,OAAO,SAASA,WAAG,OAAO,GAAG;AAE3C,kBAAM,WAAW,KAAK,OAAO,eAAe;AAC5C,iBAAK,gBAAgB,QAAQ;AAC7B,iBAAK,OAAO,WAAW,QAAQ;AAAA,UACjC,WAAW,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAG1C,iBAAK,OAAO,aAAa,EAAE;AAC3B,iBAAK,gBAAgB,oBAAoB;AACzC,iBAAK,OAAO,aAAa,EAAE;AAAA,UAC7B,OAAO;AACL;AAAA,UACF;AACA,eAAK,OAAO,WAAW,GAAG;AAAA,QAC5B;AACA,eAAO;AAAA,MACT;AAAA,MAEA,gBAAgB,UAAU;AACxB,YAAI,SAAS,SAAS,GAAG,GAAG;AAC1B,eAAK,OAAO,aAAa,IAAI,QAAQ,GAAG;AAAA,QAC1C,OAAO;AACL,eAAK,OAAO,UAAU;AAAA,QACxB;AAAA,MACF;AAAA,MAEA,mBAAmB;AACjB,YAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,eAAK,OAAO,aAAa,EAAE;AAC3B,eAAK,gBAAgB,oBAAoB;AACzC,eAAK,OAAO,aAAa,EAAE;AAAA,QAC7B,WAAW,KAAK,OAAO,SAASA,WAAG,WAAW,GAAG;AAC/C,eAAK,cAAc;AAAA,QACrB,OAAO;AACL,eAAK,uBAAuB;AAAA,QAC9B;AAAA,MACF;AAAA,MAEA,yBAAyB;AACvB,cAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,cAAM,YAAY,KAAK,OAAO,KAAK,MAAM,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;AACvE,cAAM,kBAAkB,yBAAyB,SAAS;AAC1D,cAAM,cAAc,4BAA4B,SAAS;AACzD,aAAK,OAAO,aAAa,cAAc,eAAe;AAAA,MACxD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,oCAAoC,SAAS;AAC3C,YAAI,YAAY,QAAQ,gBAAgB;AACtC,eAAK,OAAO,WAAW,cAAc;AACrC,eAAK,gBAAgB,KAAK;AAC1B,eAAK,OAAO,WAAW,IAAI;AAAA,QAC7B,OAAO;AAKL,cAAI,YAAY,QAAQ,UAAU;AAChC,iBAAK,OAAO,WAAW,aAAa;AAAA,UACtC;AACA,eAAK,gBAAgB,KAAK;AAC1B,eAAK,OAAO,WAAW,GAAG;AAAA,QAC5B;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,gBAAgB,mBAAmB;AACjC,YAAI,aAAa;AACjB,eAAO,MAAM;AACX,cAAI,KAAK,OAAO,SAASA,WAAG,aAAaA,WAAG,KAAK,GAAG;AAElD;AAAA,UACF;AACA,cAAI,iBAAiB;AACrB,cAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,gBAAI,KAAK,OAAO,SAASA,WAAG,QAAQA,WAAG,MAAM,GAAG;AAG9C,mBAAK,OAAO,aAAa,EAAE;AAC3B,mBAAK,OAAO,aAAa,EAAE;AAAA,YAC7B,OAAO;AAEL,mBAAK,OAAO,aAAa,aAAa,OAAO,EAAE;AAC/C,mBAAK,gBAAgB,oBAAoB;AACzC,mBAAK,OAAO,aAAa,EAAE;AAC3B,+BAAiB;AAAA,YACnB;AAAA,UACF,WAAW,KAAK,OAAO,SAASA,WAAG,WAAW,GAAG;AAE/C,iBAAK,OAAO,WAAW,aAAa,OAAO,EAAE;AAC7C,iBAAK,cAAc;AACnB,6BAAiB;AAAA,UACnB,WAAW,KAAK,OAAO,SAASA,WAAG,OAAO,KAAK,KAAK,OAAO,SAASA,WAAG,YAAY,GAAG;AACpF,6BAAiB,KAAK,wBAAwB,UAAU;AAAA,UAC1D,OAAO;AACL,kBAAM,IAAI,MAAM,gDAAgD;AAAA,UAClE;AACA,cAAI,gBAAgB;AAClB,yBAAa;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,wBAAwB,YAAY;AAClC,cAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,cAAM,YAAY,KAAK,OAAO,KAAK,MAAM,MAAM,OAAO,MAAM,GAAG;AAC/D,cAAM,kBAAkB,yBAAyB,SAAS;AAC1D,cAAM,cAAc,qBAAqB,SAAS;AAClD,YAAI,gBAAgB,MAAM;AACxB,eAAK,OAAO,aAAa,eAAe;AACxC,iBAAO;AAAA,QACT,OAAO;AACL,eAAK,OAAO,aAAa,GAAG,aAAa,OAAO,EAAE,GAAG,WAAW,GAAG,eAAe,EAAE;AACpF,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,aAAa,qBAAqB;AAChC,eAAO,cAAc,KAAK,mBAAmB,CAAC,KAAK,mBAAmB;AAAA,MACxE;AAAA,MAEA,qBAAqB;AACnB,YAAI,CAAC,KAAK,iBAAiB;AACzB,eAAK,kBAAkB,KAAK,YAAY,cAAc,cAAc;AAAA,QACtE;AACA,eAAO,KAAK;AAAA,MACd;AAAA,IACF;AAAA;AAAA;;;ACxiBO,SAAS,sBAAsB,QAAQ,SAAS;AACrD,QAAM,gBAAgB,iBAAiB,OAAO;AAC9C,QAAM,qBAAqB,oBAAI,IAAI;AACnC,WAAS,IAAI,GAAG,IAAI,OAAO,OAAO,QAAQ,KAAK;AAC7C,UAAM,QAAQ,OAAO,OAAO,CAAC;AAC7B,QACE,MAAM,SAASC,WAAG,QAClB,CAAC,MAAM,WACN,MAAM,mBAAmB,eAAe,UACvC,MAAM,mBAAmB,eAAe,mBACxC,MAAM,mBAAmB,eAAe,iBAC1C,CAAC,MAAM,eACP;AACA,yBAAmB,IAAI,OAAO,uBAAuB,KAAK,CAAC;AAAA,IAC7D;AACA,QAAI,MAAM,SAASA,WAAG,aAAa;AACjC,yBAAmB,IAAI,cAAc,IAAI;AAAA,IAC3C;AACA,QACE,MAAM,SAASA,WAAG,eAClB,IAAI,IAAI,OAAO,OAAO,UACtB,OAAO,OAAO,IAAI,CAAC,EAAE,SAASA,WAAG,WACjC;AACA,yBAAmB,IAAI,cAAc,IAAI;AACzC,yBAAmB,IAAI,cAAc,YAAY;AAAA,IACnD;AACA,QAAI,MAAM,SAASA,WAAG,WAAW,MAAM,mBAAmB,eAAe,QAAQ;AAC/E,YAAM,iBAAiB,OAAO,uBAAuB,KAAK;AAE1D,UAAI,CAAC,oBAAoB,cAAc,KAAK,OAAO,OAAO,IAAI,CAAC,EAAE,SAASA,WAAU,KAAK;AACvF,2BAAmB,IAAI,OAAO,uBAAuB,KAAK,CAAC;AAAA,MAC7D;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AA1CA;AAAA;AACA;AACA;AAEA;AACA;AAAA;AAAA;;;ACLA,IAgCqB;AAhCrB;AAAA;AAGA;AACA;AACA;AAEA;AACA;AAwBA,IAAqB,qBAArB,MAAqB,oBAAmB;AAAA,MACrC,SAAS;AAAC,aAAK,qBAAqB,oBAAI,IAAI;AAAA,MAAC;AAAA,MAC7C,UAAU;AAAC,aAAK,mBAAmB,oBAAI,IAAI;AAAA,MAAC;AAAA,MAC5C,UAAU;AAAC,aAAK,mBAAmB,oBAAI,IAAI;AAAA,MAAC;AAAA,MAC5C,UAAU;AAAC,aAAK,yBAAyB,oBAAI,IAAI;AAAA,MAAC;AAAA,MAClD,UAAU;AAAC,aAAK,4BAA4B,oBAAI,IAAI;AAAA,MAAC;AAAA,MAEtD,YACG,aACA,QACA,qCACA,SACA,8BACA,mBACA,eACD;AAAC;AAAC,aAAK,cAAc;AAAY,aAAK,SAAS;AAAO,aAAK,sCAAsC;AAAoC,aAAK,UAAU;AAAQ,aAAK,+BAA+B;AAA6B,aAAK,oBAAoB;AAAkB,aAAK,gBAAgB;AAAc,4BAAmB,UAAU,OAAO,KAAK,IAAI;AAAE,4BAAmB,UAAU,QAAQ,KAAK,IAAI;AAAE,4BAAmB,UAAU,QAAQ,KAAK,IAAI;AAAE,4BAAmB,UAAU,QAAQ,KAAK,IAAI;AAAE,4BAAmB,UAAU,QAAQ,KAAK,IAAI;AAAA,MAAE;AAAA,MAE5hB,mBAAmB;AACjB,iBAAS,IAAI,GAAG,IAAI,KAAK,OAAO,OAAO,QAAQ,KAAK;AAClD,cACE,KAAK,OAAO,gBAAgB,GAAGC,WAAG,OAAO,KACzC,CAAC,KAAK,OAAO,gBAAgB,GAAGA,WAAG,SAASA,WAAG,MAAMA,WAAG,EAAE,GAC1D;AACA,iBAAK,wBAAwB,CAAC;AAAA,UAChC;AACA,cACE,KAAK,OAAO,gBAAgB,GAAGA,WAAG,OAAO,KACzC,CAAC,KAAK,OAAO,gBAAgB,GAAGA,WAAG,SAASA,WAAG,EAAE,GACjD;AACA,iBAAK,wBAAwB,CAAC;AAAA,UAChC;AAAA,QACF;AACA,aAAK,2BAA2B;AAAA,MAClC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,uBAAuB;AACrB,aAAK,qBAAqB,sBAAsB,KAAK,QAAQ,KAAK,OAAO;AACzE,mBAAW,CAAC,MAAM,UAAU,KAAK,KAAK,iBAAiB,QAAQ,GAAG;AAChE,cACE,WAAW,iBACX,WAAW,iBACX,WAAW,gBAAgB,SAAS,KACpC,WAAW,aAAa,SAAS,GACjC;AACA;AAAA,UACF;AACA,gBAAM,QAAQ;AAAA,YACZ,GAAG,WAAW;AAAA,YACd,GAAG,WAAW;AAAA,YACd,GAAG,WAAW,aAAa,IAAI,CAAC,EAAC,UAAS,MAAM,SAAS;AAAA,UAC3D;AACA,cAAI,MAAM,MAAM,CAAC,SAAS,KAAK,qCAAqC,IAAI,CAAC,GAAG;AAC1E,iBAAK,iBAAiB,IAAI,MAAM,EAAE;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,qCAAqC,MAAM;AACzC,eACE,KAAK,gCACL,CAAC,KAAK,qBACN,CAAC,KAAK,mBAAmB,IAAI,IAAI;AAAA,MAErC;AAAA,MAEC,6BAA6B;AAC5B,mBAAW,CAAC,MAAM,UAAU,KAAK,KAAK,iBAAiB,QAAQ,GAAG;AAChE,gBAAM;AAAA,YACJ;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,IAAI;AAEJ,cACE,aAAa,WAAW,KACxB,cAAc,WAAW,KACzB,aAAa,WAAW,KACxB,aAAa,WAAW,KACxB,gBAAgB,WAAW,KAC3B,CAAC,eACD;AAEA,iBAAK,iBAAiB,IAAI,MAAM,YAAY,IAAI,KAAK;AACrD;AAAA,UACF;AAEA,gBAAM,oBAAoB,KAAK,yBAAyB,IAAI;AAC5D,cAAI;AACJ,cAAI,KAAK,qCAAqC;AAC5C,kCAAsB;AAAA,UACxB,OAAO;AACL,kCACE,cAAc,SAAS,IAAI,cAAc,CAAC,IAAI,KAAK,yBAAyB,IAAI;AAAA,UACpF;AACA,cAAI,cAAc,OAAO,iBAAiB,eAAe,IAAI;AAC7D,cAAI,cAAc,SAAS,GAAG;AAC5B,uBAAW,gBAAgB,eAAe;AACxC,oBAAM,aAAa,KAAK,sCACpB,oBACA,GAAG,KAAK,cAAc,cAAc,wBAAwB,CAAC,IAAI,iBAAiB;AACtF,6BAAe,QAAQ,YAAY,MAAM,UAAU;AAAA,YACrD;AAAA,UACF,WAAW,gBAAgB,SAAS,KAAK,wBAAwB,mBAAmB;AAClF,2BAAe,QAAQ,mBAAmB,MAAM,KAAK,cAAc;AAAA,cACjE;AAAA,YACF,CAAC,IAAI,iBAAiB;AAAA,UACxB,WAAW,aAAa,SAAS,KAAK,wBAAwB,mBAAmB;AAC/E,2BAAe,QAAQ,mBAAmB,MAAM,KAAK,cAAc;AAAA,cACjE;AAAA,YACF,CAAC,IAAI,iBAAiB;AAAA,UACxB;AAEA,qBAAW,EAAC,cAAAC,eAAc,UAAS,KAAK,cAAc;AACpD,2BAAe,IAAI,KAAK,cAAc;AAAA,cACpC;AAAA,YACF,CAAC,IAAI,iBAAiB,MAAM,SAAS,OAAOA,aAAY;AAAA,UAC1D;AACA,qBAAW,kBAAkB,iBAAiB;AAC5C,2BAAe,YAAY,cAAc,MAAM,mBAAmB;AAAA,UACpE;AACA,cAAI,eAAe;AACjB,2BAAe,IAAI,KAAK,cAAc;AAAA,cACpC;AAAA,YACF,CAAC,IAAI,iBAAiB;AAAA,UACxB;AAEA,eAAK,iBAAiB,IAAI,MAAM,WAAW;AAE3C,qBAAW,eAAe,cAAc;AACtC,iBAAK,uBAAuB,IAAI,aAAa,GAAG,mBAAmB,UAAU;AAAA,UAC/E;AACA,qBAAW,EAAC,cAAAA,eAAc,UAAS,KAAK,cAAc;AACpD,iBAAK,uBAAuB,IAAI,WAAW,GAAG,iBAAiB,IAAIA,aAAY,EAAE;AAAA,UACnF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,yBAAyB,MAAM;AAC7B,cAAM,aAAa,KAAK,MAAM,GAAG;AACjC,cAAM,gBAAgB,WAAW,WAAW,SAAS,CAAC;AACtD,cAAM,WAAW,cAAc,QAAQ,OAAO,EAAE;AAChD,eAAO,KAAK,YAAY,cAAc,IAAI,QAAQ,EAAE;AAAA,MACtD;AAAA,MAEC,wBAAwB,OAAO;AAC9B,cAAM,eAAe,CAAC;AACtB,cAAM,gBAAgB,CAAC;AACvB,cAAM,eAAe,CAAC;AAEtB;AACA,aACG,KAAK,OAAO,yBAAyB,OAAO,kBAAkB,KAAK,KAClE,KAAK,OAAO,gBAAgB,OAAOD,WAAG,OAAO,MAC/C,CAAC,KAAK,OAAO,gBAAgB,QAAQ,GAAGA,WAAG,KAAK,KAChD,CAAC,KAAK,OAAO,yBAAyB,QAAQ,GAAG,kBAAkB,KAAK,GACxE;AAEA;AAAA,QACF;AAEA,YAAI,KAAK,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AAEjD;AAAA,QACF;AAEA,YAAI,KAAK,OAAO,gBAAgB,OAAOA,WAAG,IAAI,GAAG;AAC/C,uBAAa,KAAK,KAAK,OAAO,sBAAsB,KAAK,CAAC;AAC1D;AACA,cAAI,KAAK,OAAO,gBAAgB,OAAOA,WAAG,KAAK,GAAG;AAChD;AAAA,UACF;AAAA,QACF;AAEA,YAAI,KAAK,OAAO,gBAAgB,OAAOA,WAAG,IAAI,GAAG;AAE/C,mBAAS;AACT,wBAAc,KAAK,KAAK,OAAO,sBAAsB,KAAK,CAAC;AAC3D;AAAA,QACF;AAEA,YAAI,KAAK,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AACjD,gBAAM,SAAS,KAAK,gBAAgB,QAAQ,CAAC;AAC7C,kBAAQ,OAAO;AAEf,qBAAW,eAAe,OAAO,cAAc;AAE7C,gBAAI,YAAY,iBAAiB,WAAW;AAC1C,2BAAa,KAAK,YAAY,SAAS;AAAA,YACzC,OAAO;AACL,2BAAa,KAAK,WAAW;AAAA,YAC/B;AAAA,UACF;AAAA,QACF;AAEA,YAAI,KAAK,OAAO,yBAAyB,OAAO,kBAAkB,KAAK,GAAG;AACxE;AAAA,QACF;AAEA,YAAI,CAAC,KAAK,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AAClD,gBAAM,IAAI,MAAM,uDAAuD;AAAA,QACzE;AACA,cAAM,OAAO,KAAK,OAAO,mBAAmB,KAAK;AACjD,cAAM,aAAa,KAAK,cAAc,IAAI;AAC1C,mBAAW,aAAa,KAAK,GAAG,YAAY;AAC5C,mBAAW,cAAc,KAAK,GAAG,aAAa;AAC9C,mBAAW,aAAa,KAAK,GAAG,YAAY;AAC5C,YAAI,aAAa,WAAW,KAAK,cAAc,WAAW,KAAK,aAAa,WAAW,GAAG;AACxF,qBAAW,gBAAgB;AAAA,QAC7B;AAAA,MACF;AAAA,MAEC,wBAAwB,OAAO;AAC9B,YACE,KAAK,OAAO,gBAAgB,OAAOA,WAAG,SAASA,WAAG,IAAI,KACtD,KAAK,OAAO,gBAAgB,OAAOA,WAAG,SAASA,WAAG,IAAI,KACtD,KAAK,OAAO,gBAAgB,OAAOA,WAAG,SAASA,WAAG,MAAM,GACxD;AACA,eAAK,2BAA2B,KAAK;AAAA,QACvC,WACE,KAAK,OAAO,gBAAgB,OAAOA,WAAG,SAASA,WAAG,SAAS,KAC3D,KAAK,OAAO,gBAAgB,OAAOA,WAAG,SAASA,WAAG,MAAM,GACxD;AACA,gBAAM,aAAa,KAAK,OAAO,sBAAsB,QAAQ,CAAC;AAC9D,eAAK,iBAAiB,YAAY,UAAU;AAAA,QAC9C,WAAW,KAAK,OAAO,gBAAgB,OAAOA,WAAG,SAASA,WAAG,MAAMA,WAAG,SAAS,GAAG;AAChF,gBAAM,aAAa,KAAK,OAAO,sBAAsB,QAAQ,CAAC;AAC9D,eAAK,iBAAiB,YAAY,UAAU;AAAA,QAC9C,WAAW,KAAK,OAAO,gBAAgB,OAAOA,WAAG,SAASA,WAAG,MAAM,GAAG;AACpE,eAAK,6BAA6B,KAAK;AAAA,QACzC,WAAW,KAAK,OAAO,gBAAgB,OAAOA,WAAG,SAASA,WAAG,IAAI,GAAG;AAClE,eAAK,4BAA4B,KAAK;AAAA,QACxC;AAAA,MACF;AAAA,MAEC,2BAA2B,OAAO;AACjC,YAAI,QAAQ;AAEZ,iBAAS,IAAI,QAAQ,KAAK,KAAK;AAC7B,cACE,KAAK,OAAO,gBAAgB,GAAGA,WAAG,MAAM,KACxC,KAAK,OAAO,gBAAgB,GAAGA,WAAG,YAAY,KAC9C,KAAK,OAAO,gBAAgB,GAAGA,WAAG,QAAQ,GAC1C;AACA;AAAA,UACF,WACE,KAAK,OAAO,gBAAgB,GAAGA,WAAG,MAAM,KACxC,KAAK,OAAO,gBAAgB,GAAGA,WAAG,QAAQ,GAC1C;AACA;AAAA,UACF,WAAW,UAAU,KAAK,CAAC,KAAK,OAAO,gBAAgB,GAAGA,WAAG,IAAI,GAAG;AAClE;AAAA,UACF,WAAW,KAAK,OAAO,gBAAgB,GAAGA,WAAG,EAAE,GAAG;AAChD,kBAAM,WAAW,KAAK,OAAO,aAAa,EAAE;AAC5C,gBAAI,YAAY,MAAM;AACpB,oBAAM,IAAI,MAAM,qCAAqC;AAAA,YACvD;AACA,gBAAI,WAAW;AAAA,UACjB,OAAO;AACL,kBAAM,QAAQ,KAAK,OAAO,OAAO,CAAC;AAClC,gBAAI,cAAc,KAAK,GAAG;AACxB,oBAAM,aAAa,KAAK,OAAO,sBAAsB,CAAC;AACtD,mBAAK,uBAAuB,IAAI,YAAY,WAAW,UAAU,EAAE;AAAA,YACrE;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOC,6BAA6B,OAAO;AAEnC,iBAAS;AACT,cAAM,EAAC,UAAU,aAAY,IAAI,KAAK,gBAAgB,KAAK;AAC3D,gBAAQ;AAER,YAAI,KAAK,OAAO,yBAAyB,OAAO,kBAAkB,KAAK,GAAG;AACxE;AAAA,QACF,OAAO;AAEL,qBAAW,EAAC,cAAc,WAAW,WAAW,aAAY,KAAK,cAAc;AAC7E,iBAAK,iBAAiB,WAAW,YAAY;AAAA,UAC/C;AACA;AAAA,QACF;AAEA,YAAI,CAAC,KAAK,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AAClD,gBAAM,IAAI,MAAM,uDAAuD;AAAA,QACzE;AACA,cAAM,OAAO,KAAK,OAAO,mBAAmB,KAAK;AACjD,cAAM,aAAa,KAAK,cAAc,IAAI;AAC1C,mBAAW,aAAa,KAAK,GAAG,YAAY;AAAA,MAC9C;AAAA,MAEC,4BAA4B,OAAO;AAClC,YAAI,eAAe;AACnB,YAAI,KAAK,OAAO,gBAAgB,OAAOA,WAAG,SAASA,WAAG,MAAMA,WAAG,GAAG,GAAG;AAEnE,mBAAS;AACT,yBAAe,KAAK,OAAO,sBAAsB,KAAK;AAEtD,mBAAS;AAAA,QACX,OAAO;AAEL,mBAAS;AAAA,QACX;AACA,YAAI,CAAC,KAAK,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AAClD,gBAAM,IAAI,MAAM,4DAA4D;AAAA,QAC9E;AACA,cAAM,OAAO,KAAK,OAAO,mBAAmB,KAAK;AACjD,cAAM,aAAa,KAAK,cAAc,IAAI;AAC1C,YAAI,iBAAiB,MAAM;AACzB,qBAAW,gBAAgB,KAAK,YAAY;AAAA,QAC9C,OAAO;AACL,qBAAW,gBAAgB;AAAA,QAC7B;AAAA,MACF;AAAA,MAEC,gBAAgB,OAAO;AACtB,cAAM,eAAe,CAAC;AACtB,eAAO,MAAM;AACX,cAAI,KAAK,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AACjD;AACA;AAAA,UACF;AAEA,gBAAM,gBAAgB,6BAA6B,KAAK,QAAQ,KAAK;AACrE,kBAAQ,cAAc;AACtB,cAAI,CAAC,cAAc,QAAQ;AACzB,yBAAa,KAAK;AAAA,cAChB,cAAc,cAAc;AAAA,cAC5B,WAAW,cAAc;AAAA,YAC3B,CAAC;AAAA,UACH;AAEA,cAAI,KAAK,OAAO,gBAAgB,OAAOA,WAAG,OAAOA,WAAG,MAAM,GAAG;AAC3D,qBAAS;AACT;AAAA,UACF,WAAW,KAAK,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AACxD;AACA;AAAA,UACF,WAAW,KAAK,OAAO,gBAAgB,OAAOA,WAAG,KAAK,GAAG;AACvD;AAAA,UACF,OAAO;AACL,kBAAM,IAAI,MAAM,qBAAqB,KAAK,UAAU,KAAK,OAAO,OAAO,KAAK,CAAC,CAAC,EAAE;AAAA,UAClF;AAAA,QACF;AACA,eAAO,EAAC,UAAU,OAAO,aAAY;AAAA,MACvC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMC,cAAc,MAAM;AACnB,cAAM,eAAe,KAAK,iBAAiB,IAAI,IAAI;AACnD,YAAI,cAAc;AAChB,iBAAO;AAAA,QACT;AACA,cAAM,UAAU;AAAA,UACd,cAAc,CAAC;AAAA,UACf,eAAe,CAAC;AAAA,UAChB,cAAc,CAAC;AAAA,UACf,cAAc,CAAC;AAAA,UACf,eAAe;AAAA,UACf,iBAAiB,CAAC;AAAA,UAClB,eAAe;AAAA,QACjB;AACA,aAAK,iBAAiB,IAAI,MAAM,OAAO;AACvC,eAAO;AAAA,MACT;AAAA,MAEC,iBAAiB,WAAW,cAAc;AACzC,YAAI,CAAC,KAAK,0BAA0B,IAAI,SAAS,GAAG;AAClD,eAAK,0BAA0B,IAAI,WAAW,CAAC,CAAC;AAAA,QAClD;AACA,aAAK,0BAA0B,IAAI,SAAS,EAAE,KAAK,YAAY;AAAA,MACjE;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,gBAAgB,YAAY;AAC1B,cAAM,SAAS,KAAK,iBAAiB,IAAI,UAAU;AACnD,aAAK,iBAAiB,IAAI,YAAY,EAAE;AACxC,eAAO,UAAU;AAAA,MACnB;AAAA,MAEA,yBAAyB,gBAAgB;AACvC,eAAO,KAAK,uBAAuB,IAAI,cAAc,KAAK;AAAA,MAC5D;AAAA;AAAA;AAAA;AAAA,MAKA,qBAAqB,cAAc;AACjC,cAAM,gBAAgB,KAAK,0BAA0B,IAAI,YAAY;AACrE,YAAI,CAAC,iBAAiB,cAAc,WAAW,GAAG;AAChD,iBAAO;AAAA,QACT;AACA,eAAO,cAAc,IAAI,CAAC,iBAAiB,WAAW,YAAY,EAAE,EAAE,KAAK,KAAK;AAAA,MAClF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,iBAAiB;AACf,eAAO,oBAAI,IAAI;AAAA,UACb,GAAG,KAAK,uBAAuB,KAAK;AAAA,UACpC,GAAG,KAAK,0BAA0B,KAAK;AAAA,QACzC,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA;;;ACraO,SAAS,cAAc,SAAuB,KAAa;AAChE,KAAG;AACD,QAAI,UAAU,MAAM;AACpB,aAAS;AACT,QAAI,MAAM,EAAG,YAAW;AACxB,YAAQ,MAAM,UAAU,OAAO,CAAC;EAClC,SAAS,MAAM;AACjB;AAEO,SAAS,WAAW,KAAqB;AAC9C,SAAO,MAAM,IAAK,CAAC,OAAO,IAAK,IAAI,OAAO;AAC5C;AI6CO,SAAS,OAAO,SAA8C;AACnE,QAAM,SAAS,IAAI,aAAa;AAChC,MAAI,eAAe;AACnB,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,MAAI,aAAa;AAEjB,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAM,OAAO,QAAQ,CAAC;AACtB,QAAI,IAAI,EAAG,QAAO,MAAME,UAAS;AACjC,QAAI,KAAK,WAAW,EAAG;AAEvB,QAAI,YAAY;AAEhB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,UAAU,KAAK,CAAC;AACtB,UAAI,IAAI,EAAG,QAAO,MAAM,KAAK;AAE7B,oBAAc,QAAQ,WAAW,QAAQ,CAAC,IAAI,SAAS,CAAC;AACxD,kBAAY,QAAQ,CAAC;AAErB,UAAI,QAAQ,WAAW,EAAG;AAC1B,oBAAc,QAAQ,WAAW,QAAQ,CAAC,IAAI,YAAY,CAAC;AAC3D,oBAAc,QAAQ,WAAW,QAAQ,CAAC,IAAI,UAAU,CAAC;AACzD,oBAAc,QAAQ,WAAW,QAAQ,CAAC,IAAI,YAAY,CAAC;AAC3D,qBAAe,QAAQ,CAAC;AACxB,mBAAa,QAAQ,CAAC;AACtB,qBAAe,QAAQ,CAAC;AAExB,UAAI,QAAQ,WAAW,EAAG;AAC1B,oBAAc,QAAQ,WAAW,QAAQ,CAAC,IAAI,UAAU,CAAC;AACzD,mBAAa,QAAQ,CAAC;IACxB;EACF;AAEA,SAAO,OAAO,MAAM;AACtB;IJ5Ha,OACAA,YAEP,OACA,WACA,WCPA,WAGA,IAoBO;;;ADrBN,IAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,IAAMA,aAAY,IAAI,WAAW,CAAC;AAEzC,IAAM,QAAQ;AACd,IAAM,YAAY,IAAI,WAAW,EAAE;AACnC,IAAM,YAAY,IAAI,WAAW,GAAG;AAEpC,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,IAAI,MAAM,WAAW,CAAC;AAC5B,gBAAU,CAAC,IAAI;AACf,gBAAU,CAAC,IAAI;IACjB;ACbA,IAAM,YAAY,OAAO;AAGzB,IAAM,KACJ,OAAO,gBAAgB,cACH,oBAAI,YAAY,IAChC,OAAO,WAAW,cAChB;MACE,OAAO,KAAyB;AAC9B,cAAM,MAAM,OAAO,KAAK,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAClE,eAAO,IAAI,SAAS;MACtB;IACF,IACA;MACE,OAAO,KAAyB;AAC9B,YAAI,MAAM;AACV,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,iBAAO,OAAO,aAAa,IAAI,CAAC,CAAC;QACnC;AACA,eAAO;MACT;IACF;AAED,IAAM,eAAN,MAAmB;MAAnB,cAAA;AACL,aAAA,MAAM;AACN,aAAQ,MAAM;AACd,aAAQ,SAAS,IAAI,WAAW,SAAS;MAAA;MAEzC,MAAM,GAAiB;AACrB,cAAM,EAAE,OAAO,IAAI;AACnB,eAAO,KAAK,KAAK,IAAI;AACrB,YAAI,KAAK,QAAQ,WAAW;AAC1B,eAAK,OAAO,GAAG,OAAO,MAAM;AAC5B,eAAK,MAAM;QACb;MACF;MAEA,QAAgB;AACd,cAAM,EAAE,QAAQ,KAAK,IAAI,IAAI;AAC7B,eAAO,MAAM,IAAI,MAAM,GAAG,OAAO,OAAO,SAAS,GAAG,GAAG,CAAC,IAAI;MAC9D;IACF;;;;;;;;;;;AIxCA,YAAM,cAAc;AAYpB,YAAM,WAAW;AAWjB,YAAM,YAAY;AAuBlB,eAAS,cAAcC,QAAa;AAClC,eAAO,YAAY,KAAKA,MAAK;MAC/B;AAEA,eAAS,oBAAoBA,QAAa;AACxC,eAAOA,OAAM,WAAW,IAAI;MAC9B;AAEA,eAAS,eAAeA,QAAa;AACnC,eAAOA,OAAM,WAAW,GAAG;MAC7B;AAEA,eAAS,UAAUA,QAAa;AAC9B,eAAOA,OAAM,WAAW,OAAO;MACjC;AAEA,eAAS,WAAWA,QAAa;AAC/B,eAAO,SAAS,KAAKA,MAAK;MAC5B;AAEA,eAAS,iBAAiBA,QAAa;AACrC,cAAMC,SAAQ,SAAS,KAAKD,MAAK;AACjC,eAAO,QACLC,OAAM,CAAC,GACPA,OAAM,CAAC,KAAK,IACZA,OAAM,CAAC,GACPA,OAAM,CAAC,KAAK,IACZA,OAAM,CAAC,KAAK,KACZA,OAAM,CAAC,KAAK,IACZA,OAAM,CAAC,KAAK,EAAE;MAElB;AAEA,eAAS,aAAaD,QAAa;AACjC,cAAMC,SAAQ,UAAU,KAAKD,MAAK;AAClC,cAAM,OAAOC,OAAM,CAAC;AACpB,eAAO,QACL,SACA,IACAA,OAAM,CAAC,KAAK,IACZ,IACA,eAAe,IAAI,IAAI,OAAO,MAAM,MACpCA,OAAM,CAAC,KAAK,IACZA,OAAM,CAAC,KAAK,EAAE;MAElB;AAEA,eAAS,QACP,QACA,MACA,MACA,MACA,MACA,OACA,MAAY;AAEZ,eAAO;UACL;UACA;UACA;UACA;UACA;UACA;UACA;UACA,MAAI;;MAER;AAEA,eAAS,SAASD,QAAa;AAC7B,YAAI,oBAAoBA,MAAK,GAAG;AAC9B,gBAAME,OAAM,iBAAiB,UAAUF,MAAK;AAC5C,UAAAE,KAAI,SAAS;AACb,UAAAA,KAAI,OAAI;AACR,iBAAOA;;AAGT,YAAI,eAAeF,MAAK,GAAG;AACzB,gBAAME,OAAM,iBAAiB,mBAAmBF,MAAK;AACrD,UAAAE,KAAI,SAAS;AACb,UAAAA,KAAI,OAAO;AACX,UAAAA,KAAI,OAAI;AACR,iBAAOA;;AAGT,YAAI,UAAUF,MAAK;AAAG,iBAAO,aAAaA,MAAK;AAE/C,YAAI,cAAcA,MAAK;AAAG,iBAAO,iBAAiBA,MAAK;AAEvD,cAAM,MAAM,iBAAiB,oBAAoBA,MAAK;AACtD,YAAI,SAAS;AACb,YAAI,OAAO;AACX,YAAI,OAAOA,SACPA,OAAM,WAAW,GAAG,QAElBA,OAAM,WAAW,GAAG;AAI1B,eAAO;MACT;AAEA,eAAS,kBAAkB,MAAY;AAGrC,YAAI,KAAK,SAAS,KAAK;AAAG,iBAAO;AACjC,cAAM,QAAQ,KAAK,YAAY,GAAG;AAClC,eAAO,KAAK,MAAM,GAAG,QAAQ,CAAC;MAChC;AAEA,eAAS,WAAW,KAAUG,OAAS;AACrC,sBAAcA,OAAMA,MAAK,IAAI;AAI7B,YAAI,IAAI,SAAS,KAAK;AACpB,cAAI,OAAOA,MAAK;eACX;AAEL,cAAI,OAAO,kBAAkBA,MAAK,IAAI,IAAI,IAAI;;MAElD;AAMA,eAAS,cAAc,KAAU,MAAa;AAC5C,cAAM,MAAM,QAAI;AAChB,cAAM,SAAS,IAAI,KAAK,MAAM,GAAG;AAIjC,YAAI,UAAU;AAId,YAAI,WAAW;AAKf,YAAI,mBAAmB;AAEvB,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,gBAAM,QAAQ,OAAO,CAAC;AAGtB,cAAI,CAAC,OAAO;AACV,+BAAmB;AACnB;;AAIF,6BAAmB;AAGnB,cAAI,UAAU;AAAK;AAInB,cAAI,UAAU,MAAM;AAClB,gBAAI,UAAU;AACZ,iCAAmB;AACnB;AACA;uBACS,KAAK;AAGd,qBAAO,SAAS,IAAI;;AAEtB;;AAKF,iBAAO,SAAS,IAAI;AACpB;;AAGF,YAAI,OAAO;AACX,iBAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,kBAAQ,MAAM,OAAO,CAAC;;AAExB,YAAI,CAAC,QAAS,oBAAoB,CAAC,KAAK,SAAS,KAAK,GAAI;AACxD,kBAAQ;;AAEV,YAAI,OAAO;MACb;eAKwB,QAAQH,QAAeG,OAAwB;AACrE,YAAI,CAACH,UAAS,CAACG;AAAM,iBAAO;AAE5B,cAAM,MAAM,SAASH,MAAK;AAC1B,YAAI,YAAY,IAAI;AAEpB,YAAIG,SAAQ,cAAS,GAAuB;AAC1C,gBAAM,UAAU,SAASA,KAAI;AAC7B,gBAAM,WAAW,QAAQ;AAEzB,kBAAQ,WAAS;YACf,KAAA;AACE,kBAAI,OAAO,QAAQ;;YAGrB,KAAA;AACE,kBAAI,QAAQ,QAAQ;;YAGtB,KAAA;YACA,KAAA;AACE,yBAAW,KAAK,OAAO;;YAGzB,KAAA;AAEE,kBAAI,OAAO,QAAQ;AACnB,kBAAI,OAAO,QAAQ;AACnB,kBAAI,OAAO,QAAQ;;YAGrB,KAAA;AAEE,kBAAI,SAAS,QAAQ;;AAEzB,cAAI,WAAW;AAAW,wBAAY;;AAGxC,sBAAc,KAAK,SAAS;AAE5B,cAAM,YAAY,IAAI,QAAQ,IAAI;AAClC,gBAAQ,WAAS;;;UAIf,KAAA;UACA,KAAA;AACE,mBAAO;UAET,KAAA,GAA2B;AAEzB,kBAAM,OAAO,IAAI,KAAK,MAAM,CAAC;AAE7B,gBAAI,CAAC;AAAM,qBAAO,aAAa;AAE/B,gBAAI,WAAWA,SAAQH,MAAK,KAAK,CAAC,WAAW,IAAI,GAAG;AAIlD,qBAAO,OAAO,OAAO;;AAGvB,mBAAO,OAAO;;UAGhB,KAAA;AACE,mBAAO,IAAI,OAAO;UAEpB;AACE,mBAAO,IAAI,SAAS,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO;;MAE7E;;;;;;;IEtTA;;;ADAA;ACAA,yBAAuB;;;;;AQ6BvB,SAAS,KAAoB,KAAgC;AAC3D,SAAO;AACT;AAKO,SAAS,IAAmB,QAAqB,KAA4B;AAClF,SAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAClC;AAMO,SAAS,IAAmB,QAAqB,KAAgB;AAEtE,QAAM,QAAQ,IAAI,QAAQ,GAAG;AAC7B,MAAI,UAAU,OAAW,QAAO;AAEhC,QAAM,EAAE,OAAAI,QAAO,UAAU,QAAQ,IAAI,KAAK,MAAM;AAEhD,QAAM,SAASA,OAAM,KAAK,GAAG;AAC7B,SAAQ,QAAQ,GAAG,IAAI,SAAS;AAClC;AC2BA,SAASC,MAAK,KAAyB;AACrC,SAAO;AACT;AA+KO,SAAS,aAAa,KAAmC;AAC9D,QAAM;IACJ,WAAW;IACX,UAAU;IACV,iBAAiB;IACjB,QAAQ;IACR,aAAa;;;EAGf,IAAIA,MAAK,GAAG;AACZ,wBAAsB,QAAQ;AAE9B,SAAO;IACL,SAAS;IACT,MAAM,IAAI,QAAQ;IAClB,OAAO,MAAM;IACb,YAAY,IAAI,cAAc;IAC9B,SAAS,QAAQ;IACjB;IACA;;;IAGA,YAAY,WAAW;EACzB;AACF;AAMO,SAAS,aAAa,KAAmC;AAC9D,QAAM,UAAU,aAAa,GAAG;AAChC,SAAO,OAAO,OAAO,CAAC,GAAG,SAAS;;;IAGhC,UAAU,OAAO,QAAQ,QAAgC;EAC3D,CAAC;AACH;AAoDA,SAAS,mBACP,UACA,KACA,SACA,WACA,QACA,YACA,cACA,MACA,SACM;AACN,QAAM;IACJ,WAAW;IACX,UAAU;IACV,iBAAiB;IACjB,QAAQ;;EAEV,IAAIA,MAAK,GAAG;AACZ,QAAM,OAAO,SAAS,UAAU,OAAO;AACvC,QAAM,QAAQ,eAAe,MAAM,SAAS;AAE5C,MAAI,CAAC,QAAQ;AACX,QAAI,YAAY,eAAe,MAAM,KAAK,EAAG;AAC7C,WAAO,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC;EACxC;AAIA,SAAe,UAAU;AACzB,SAAe,YAAY;AAE3B,QAAM,eAAe,IAAI,SAAS,MAAM;AACxC,QAAM,aAAa,OAAO,IAAI,OAAO,IAAI,IAAI;AAC7C,MAAI,iBAAiB,eAAe,OAAQ,gBAAe,YAAY,IAAI,WAAA,OAAA,UAAW;AAGtF,MAAI,YAAY,WAAW,MAAM,OAAO,cAAc,YAAY,cAAc,UAAU,GAAG;AAC3F;EACF;AAEA,SAAO;IACL;IACA;IACA,OACI,CAAC,WAAW,cAAc,YAAY,cAAc,UAAU,IAC9D,CAAC,WAAW,cAAc,YAAY,YAAY;EACxD;AACF;AAEA,SAAS,OAAU,MAAkC;AAErD;AAEA,SAAS,SAAY,KAAY,OAAoB;AACnD,WAAS,IAAI,IAAI,QAAQ,KAAK,OAAO,KAAK;AACxC,QAAI,CAAC,IAAI,CAAC;EACZ;AACA,SAAO,IAAI,KAAK;AAClB;AAEA,SAAS,eAAe,MAA0B,WAA2B;AAC3E,MAAI,QAAQ,KAAK;AACjB,WAAS,IAAI,QAAQ,GAAG,KAAK,GAAG,QAAQ,KAAK;AAC3C,UAAMC,WAAU,KAAK,CAAC;AACtB,QAAI,aAAaA,SAAQ,MAAM,EAAG;EACpC;AACA,SAAO;AACT;AAEA,SAAS,OAAUF,QAAY,OAAe,OAAU;AACtD,WAAS,IAAIA,OAAM,QAAQ,IAAI,OAAO,KAAK;AACzC,IAAAA,OAAM,CAAC,IAAIA,OAAM,IAAI,CAAC;EACxB;AACA,EAAAA,OAAM,KAAK,IAAI;AACjB;AAEA,SAAS,sBAAsB,UAAgC;AAC7D,QAAM,EAAE,OAAO,IAAI;AACnB,MAAI,MAAM;AACV,WAAS,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK;AAC1C,QAAI,SAAS,CAAC,EAAE,SAAS,EAAG;EAC9B;AACA,MAAI,MAAM,OAAQ,UAAS,SAAS;AACtC;AAMA,SAAS,eAAe,MAA0B,OAAwB;AAGxE,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,OAAO,KAAK,QAAQ,CAAC;AAI3B,SAAO,KAAK,WAAW;AACzB;AAEA,SAAS,WACP,MACA,OACA,cACA,YACA,cACA,YACS;AAET,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,OAAO,KAAK,QAAQ,CAAC;AAG3B,MAAI,KAAK,WAAW,EAAG,QAAO;AAI9B,SACE,iBAAiB,KAAK,aAAa,KACnC,eAAe,KAAK,WAAW,KAC/B,iBAAiB,KAAK,aAAa,KACnC,gBAAgB,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI;AAE5D;ID7ca,UECA,QACA,eACA,aACA,eACA,aDsBP,SAKO,YAuJA;;;AAhMb;AAKA;ADIO,IAAM,WAAN,MAAoC;MAIzC,cAAc;AACZ,aAAK,WAAW,EAAE,WAAW,KAAK;AAClC,aAAK,QAAQ,CAAC;MAChB;IACF;AEPO,IAAM,SAAS;AACf,IAAM,gBAAgB;AACtB,IAAM,cAAc;AACpB,IAAM,gBAAgB;AACtB,IAAM,cAAc;ADsB3B,IAAM,UAAU;AAKT,IAAM,aAAN,MAAiB;MAWtB,YAAY,EAAE,MAAM,WAAW,IAAa,CAAC,GAAG;AAC9C,aAAK,SAAS,IAAI,SAAS;AAC3B,aAAK,WAAW,IAAI,SAAS;AAC7B,aAAK,kBAAkB,CAAC;AACxB,aAAK,YAAY,CAAC;AAGlB,aAAK,OAAO;AACZ,aAAK,aAAa;AAClB,aAAK,cAAc,IAAI,SAAS;MAClC;IACF;AAiIO,IAAM,kBAAqC,CAChD,KACA,SACA,WACA,QACA,YACA,cACA,MACA,YACG;AACH,aAAO;QACL;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACF;IACF;;;;;AEjMe,SAAR,iBACL,EAAC,MAAM,eAAe,UAAU,YAAW,GAC3C,UACA,SACA,QACA,QACA;AACA,QAAM,gBAAgB,qBAAqB,QAAQ,MAAM;AACzD,QAAM,MAAM,IAAI,WAAW,EAAC,MAAM,QAAQ,iBAAgB,CAAC;AAC3D,MAAI,aAAa;AAGjB,MAAI,iBAAiB,YAAY,CAAC;AAClC,SAAO,mBAAmB,UAAa,aAAa,YAAY,SAAS,GAAG;AAC1E;AACA,qBAAiB,YAAY,UAAU;AAAA,EACzC;AACA,MAAI,OAAO;AACX,MAAI,YAAY;AAChB,MAAI,mBAAmB,WAAW;AAChC,oBAAgB,KAAK,MAAM,GAAG,UAAU,MAAM,CAAC;AAAA,EACjD;AACA,WAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,QAAI,MAAM,gBAAgB;AACxB,YAAM,YAAY,iBAAiB;AACnC,YAAM,eAAe,cAAc,UAAU;AAC7C,sBAAgB,KAAK,MAAM,WAAW,UAAU,MAAM,YAAY;AAClE,cACG,mBAAmB,KAAK,mBAAmB,WAC5C,aAAa,YAAY,SAAS,GAClC;AACA;AACA,yBAAiB,YAAY,UAAU;AAAA,MACzC;AAAA,IACF;AACA,QAAI,cAAc,WAAW,CAAC,MAAM,UAAU,UAAU;AACtD;AACA,kBAAY,IAAI;AAChB,UAAI,mBAAmB,WAAW;AAChC,wBAAgB,KAAK,MAAM,GAAG,UAAU,MAAM,CAAC;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AACA,QAAM,EAAC,YAAY,gBAAgB,GAAG,UAAS,IAAI,aAAa,GAAG;AACnE,SAAO;AACT;AAMA,SAAS,qBAAqB,MAAM,QAAQ;AAC1C,QAAM,gBAAgB,IAAI,MAAM,OAAO,MAAM;AAC7C,MAAI,aAAa;AACjB,MAAI,iBAAiB,OAAO,UAAU,EAAE;AACxC,MAAI,YAAY;AAChB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,MAAM,gBAAgB;AACxB,oBAAc,UAAU,IAAI,iBAAiB;AAC7C;AACA,uBAAiB,OAAO,UAAU,EAAE;AAAA,IACtC;AACA,QAAI,KAAK,WAAW,CAAC,MAAM,UAAU,UAAU;AAC7C,kBAAY,IAAI;AAAA,IAClB;AAAA,EACF;AACA,SAAO;AACT;AAxFA;AAAA;AAAA;AAIA;AAAA;AAAA;;;ACJA,IAEM,SA+HO;AAjIb;AAAA;AAEA,IAAM,UAAU;AAAA,MACd,SAAS;AAAA;AAAA;AAAA;AAAA,MAIT,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkBxB,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKvB,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASvB,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYlB,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASjB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAStB,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAuBf,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAuBpB,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMrB,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAM5B;AAEO,IAAM,gBAAN,MAAM,eAAc;AAAA,MACzB,SAAS;AAAC,aAAK,cAAc,CAAC;AAAA,MAAC;AAAA,MAC/B,UAAU;AAAC,aAAK,oBAAoB;AAAA,MAAI;AAAA,MACxC,YAAa,aAAa;AAAC;AAAC,aAAK,cAAc;AAAY,uBAAc,UAAU,OAAO,KAAK,IAAI;AAAE,uBAAc,UAAU,QAAQ,KAAK,IAAI;AAAA,MAAE;AAAA,MAEhJ,cAAc,UAAU;AACtB,YAAI,aAAa,KAAK,YAAY,QAAQ;AAC1C,YAAI,YAAY;AACd,iBAAO;AAAA,QACT;AACA,qBAAa,KAAK,YAAY,cAAc,IAAI,QAAQ,EAAE;AAC1D,aAAK,YAAY,QAAQ,IAAI;AAC7B,eAAO;AAAA,MACT;AAAA,MAEA,cAAc;AACZ,YAAI,aAAa;AACjB,YAAI,KAAK,YAAY,qBAAqB;AACxC,eAAK,cAAc,eAAe;AAAA,QACpC;AACA,YAAI,KAAK,YAAY,0BAA0B;AAC7C,eAAK,cAAc,oBAAoB;AAAA,QACzC;AACA,mBAAW,CAAC,UAAU,kBAAkB,KAAK,OAAO,QAAQ,OAAO,GAAG;AACpE,gBAAM,aAAa,KAAK,YAAY,QAAQ;AAC5C,cAAI,aAAa;AACjB,cAAI,aAAa,uBAAuB;AACtC,yBAAa,WAAW,QAAQ,uBAAuB,KAAK,YAAY,aAAa;AAAA,UACvF,WAAW,aAAa,4BAA4B;AAClD,yBAAa,WAAW;AAAA,cACtB;AAAA,cACA,KAAK,YAAY;AAAA,YACnB;AAAA,UACF,WAAW,aAAa,WAAW;AACjC,gBAAI,KAAK,sBAAsB,MAAM;AACnC,mBAAK,oBAAoB,KAAK,YAAY,cAAc,gBAAgB;AAAA,YAC1E;AACA,yBAAa,WAAW,QAAQ,wBAAwB,KAAK,iBAAiB;AAAA,UAChF;AACA,cAAI,YAAY;AACd,0BAAc;AACd,0BAAc,WAAW,QAAQ,UAAU,UAAU,EAAE,QAAQ,QAAQ,GAAG,EAAE,KAAK;AAAA,UACnF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;AClKe,SAAR,wBACL,QACA,QACA,aACA;AACA,MAAI,CAAC,mBAAmB,QAAQ,WAAW,GAAG;AAC5C;AAAA,EACF;AACA,sBAAoB,QAAQ,QAAQ,WAAW;AACjD;AAOO,SAAS,mBAAmB,QAAQ,aAAa;AACtD,aAAW,SAAS,OAAO,QAAQ;AACjC,QACE,MAAM,SAASG,WAAG,QAClB,CAAC,MAAM,UACP,yBAAyB,KAAK,KAC9B,YAAY,IAAI,OAAO,uBAAuB,KAAK,CAAC,GACpD;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,oBACP,QACA,QACA,aACA;AACA,QAAM,aAAa,CAAC;AACpB,MAAI,aAAa,OAAO,SAAS;AAGjC,WAAS,IAAI,OAAO,OAAO,SAAS,KAAK,KAAK;AAC5C,WAAO,WAAW,SAAS,KAAK,WAAW,WAAW,SAAS,CAAC,EAAE,oBAAoB,IAAI,GAAG;AAC3F,iBAAW,IAAI;AAAA,IACjB;AACA,WAAO,cAAc,KAAK,OAAO,UAAU,EAAE,kBAAkB,IAAI,GAAG;AACpE,iBAAW,KAAK,OAAO,UAAU,CAAC;AAClC;AAAA,IACF;AAEA,QAAI,IAAI,GAAG;AACT;AAAA,IACF;AAEA,UAAM,QAAQ,OAAO,OAAO,CAAC;AAC7B,UAAM,OAAO,OAAO,uBAAuB,KAAK;AAChD,QAAI,WAAW,SAAS,KAAK,CAAC,MAAM,UAAU,MAAM,SAASA,WAAG,QAAQ,YAAY,IAAI,IAAI,GAAG;AAC7F,UAAI,yBAAyB,KAAK,GAAG;AACnC,6BAAqB,WAAW,WAAW,SAAS,CAAC,GAAG,QAAQ,IAAI;AAAA,MACtE,WAAW,4BAA4B,KAAK,GAAG;AAC7C,YAAI,aAAa,WAAW,SAAS;AACrC,eAAO,aAAa,KAAK,CAAC,WAAW,UAAU,EAAE,iBAAiB;AAChE;AAAA,QACF;AACA,YAAI,aAAa,GAAG;AAClB,gBAAM,IAAI,MAAM,qCAAqC;AAAA,QACvD;AACA,6BAAqB,WAAW,UAAU,GAAG,QAAQ,IAAI;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AACA,MAAI,WAAW,SAAS,GAAG;AACzB,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AACF;AAEA,SAAS,qBAAqB,OAAO,QAAQ,MAAM;AACjD,WAAS,IAAI,MAAM,iBAAiB,IAAI,MAAM,eAAe,KAAK;AAChE,UAAM,QAAQ,OAAO,OAAO,CAAC;AAC7B,SACG,MAAM,SAASA,WAAG,QAAQ,MAAM,SAASA,WAAG,YAC7C,OAAO,uBAAuB,KAAK,MAAM,MACzC;AACA,YAAM,gBAAgB;AAAA,IACxB;AAAA,EACF;AACF;AAjGA;AAAA;AAAA;AAMA;AAAA;AAAA;;;ACAe,SAAR,mBAAoC,MAAM,QAAQ;AACvD,QAAM,QAAQ,CAAC;AACf,aAAW,SAAS,QAAQ;AAC1B,QAAI,MAAM,SAASC,WAAG,MAAM;AAC1B,YAAM,KAAK,KAAK,MAAM,MAAM,OAAO,MAAM,GAAG,CAAC;AAAA,IAC/C;AAAA,EACF;AACA,SAAO;AACT;AAdA;AAAA;AACA;AAAA;AAAA;;;ACDA,IAGqB;AAHrB;AAAA;AACA;AAEA,IAAqB,cAArB,MAAqB,aAAY;AAAA,MAC7B,SAAS;AAAC,aAAK,YAAY,oBAAI,IAAI;AAAA,MAAC;AAAA,MAEtC,YAAY,MAAM,QAAQ;AAAC;AAAC,qBAAY,UAAU,OAAO,KAAK,IAAI;AAChE,aAAK,YAAY,IAAI,IAAI,mBAAmB,MAAM,MAAM,CAAC;AAAA,MAC3D;AAAA,MAEA,cAAc,MAAM;AAClB,cAAM,UAAU,KAAK,aAAa,IAAI;AACtC,aAAK,UAAU,IAAI,OAAO;AAC1B,eAAO;AAAA,MACT;AAAA,MAEA,aAAa,MAAM;AACjB,YAAI,CAAC,KAAK,UAAU,IAAI,IAAI,GAAG;AAC7B,iBAAO;AAAA,QACT;AACA,YAAI,YAAY;AAChB,eAAO,KAAK,UAAU,IAAI,OAAO,OAAO,SAAS,CAAC,GAAG;AACnD;AAAA,QACF;AACA,eAAO,OAAO,OAAO,SAAS;AAAA,MAChC;AAAA,IACF;AAAA;AAAA;;;AC1BA;AAAA;AAAA;AACA,QAAI,YAAa,WAAQ,QAAK,aAAe,4BAAY;AACrD,UAAI,gBAAgB,SAAU,GAAG,GAAG;AAChC,wBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,SAAUC,IAAGC,IAAG;AAAE,UAAAD,GAAE,YAAYC;AAAA,QAAG,KAC1E,SAAUD,IAAGC,IAAG;AAAE,mBAAS,KAAKA,GAAG,KAAIA,GAAE,eAAe,CAAC,EAAG,CAAAD,GAAE,CAAC,IAAIC,GAAE,CAAC;AAAA,QAAG;AAC7E,eAAO,cAAc,GAAG,CAAC;AAAA,MAC7B;AACA,aAAO,SAAU,GAAG,GAAG;AACnB,sBAAc,GAAG,CAAC;AAClB,iBAAS,KAAK;AAAE,eAAK,cAAc;AAAA,QAAG;AACtC,UAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI,GAAG;AAAA,MACtF;AAAA,IACJ,GAAG;AACH,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,gBAAgB,QAAQ,cAAc,QAAQ,SAAS;AAK/D,QAAI;AAAA;AAAA,OAAwB,SAAU,QAAQ;AAC1C,kBAAUC,SAAQ,MAAM;AACxB,iBAASA,QAAO,MAAM,SAAS;AAC3B,cAAI,QAAQ,OAAO,KAAK,MAAM,OAAO,KAAK;AAC1C,gBAAM,OAAO;AAEb,iBAAO,eAAe,OAAOA,QAAO,SAAS;AAC7C,iBAAO;AAAA,QACX;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,SAAS;AAMjB,QAAI;AAAA;AAAA,OAA6B,WAAY;AACzC,iBAASC,eAAc;AAAA,QACvB;AACA,QAAAA,aAAY,UAAU,OAAO,SAAU,SAAS,SAAS,OAAO;AAC5D,iBAAO;AAAA,QACX;AACA,QAAAA,aAAY,UAAU,gBAAgB,WAAY;AAAE,iBAAO;AAAA,QAAM;AACjE,QAAAA,aAAY,UAAU,gBAAgB,WAAY;AAAE,iBAAO;AAAA,QAAM;AACjE,QAAAA,aAAY,UAAU,eAAe,SAAU,IAAI;AAAA,QAAE;AACrD,eAAOA;AAAA,MACX,GAAE;AAAA;AACF,YAAQ,cAAc;AAItB,QAAI;AAAA;AAAA,OAA+B,WAAY;AAC3C,iBAASC,iBAAgB;AAErB,eAAK,aAAa,CAAC,EAAE;AACrB,eAAK,YAAY,CAAC,IAAI;AAGtB,eAAK,SAAS;AAAA,QAClB;AACA,QAAAA,eAAc,UAAU,OAAO,SAAU,SAAS,SAAS,OAAO;AAC9D,eAAK,WAAW,KAAK,OAAO;AAC5B,eAAK,UAAU,KAAK,OAAO;AAC3B,eAAK,UAAU;AACf,iBAAO;AAAA,QACX;AACA,QAAAA,eAAc,UAAU,gBAAgB,WAAY;AAChD,iBAAO,IAAI,oBAAoB;AAAA,QACnC;AACA,QAAAA,eAAc,UAAU,eAAe,SAAU,eAAe;AAC5D,cAAI,IAAI;AACR,cAAI,IAAI;AACR,cAAI,OAAO;AACX,mBAAS,KAAK,GAAG,KAAK,EAAE,UAAU,KAAK,GAAG,QAAQ,MAAM;AACpD,gBAAI,MAAM,GAAG,EAAE;AACf,gBAAI,CAAC,QAAQ,IAAI,UAAU,KAAK,QAAQ;AACpC,qBAAO;AAAA,YACX;AAAA,UACJ;AACA,cAAI,QAAQ,KAAK,SAAS,GAAG;AACzB,aAAC,KAAK,KAAK,YAAY,KAAK,MAAM,IAAI,KAAK,UAAU;AACrD,aAAC,KAAK,KAAK,WAAW,KAAK,MAAM,IAAI,KAAK,SAAS;AAAA,UACvD;AAAA,QACJ;AACA,QAAAA,eAAc,UAAU,WAAW,SAAU,MAAM;AAC/C,cAAI,WAAW,CAAC;AAChB,mBAAS,IAAI,KAAK,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;AAClD,gBAAI,IAAI,KAAK,WAAW,CAAC;AACzB,oBAAS,OAAO,MAAM,WAAY,MAAM,IAAI,MAAO,IAAI,MAAM,IAAI;AACjE,gBAAI,IAAI,KAAK,UAAU,CAAC;AACxB,gBAAI,GAAG;AACH,uBAAS,KAAK,OAAO,MAAM,CAAC;AAAA,YAChC;AAAA,UACJ;AACA,iBAAO,IAAI,OAAO,MAAM,SAAS,KAAK,IAAI,CAAC;AAAA,QAC/C;AACA,QAAAA,eAAc,UAAU,iBAAiB,SAAU,MAAM;AACrD,cAAI,UAAU,CAAC;AACf,mBAAS,IAAI,KAAK,WAAW,SAAS,GAAG,KAAK,GAAG,KAAK;AAClD,gBAAI,IAAI,KAAK,WAAW,CAAC;AACzB,oBAAS,OAAO,MAAM,WAAY,MAAM,IAAI,MAAO,IAAI,MAAM,IAAI;AACjE,gBAAI,UAAU,KAAK,UAAU,CAAC;AAC9B,gBAAI,SAAS;AACT,sBAAQ,KAAK,EAAE,MAAY,QAAiB,CAAC;AAAA,YACjD;AAAA,UACJ;AACA,cAAI,SAAS;AACb,mBAAS,IAAI,QAAQ,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,gBAAI,QAAQ;AACR,sBAAQ,CAAC,EAAE,SAAS,CAAC,MAAM;AAAA,YAC/B;AACA,qBAAS,QAAQ,CAAC;AAAA,UACtB;AACA,iBAAO;AAAA,QACX;AACA,eAAOA;AAAA,MACX,GAAE;AAAA;AACF,YAAQ,gBAAgB;AACxB,QAAI;AAAA;AAAA,OAAqC,WAAY;AACjD,iBAASC,uBAAsB;AAC3B,eAAK,WAAW,CAAC;AAAA,QACrB;AACA,QAAAA,qBAAoB,UAAU,gBAAgB,WAAY;AACtD,cAAI,MAAM,IAAI,cAAc;AAC5B,eAAK,SAAS,KAAK,GAAG;AACtB,iBAAO;AAAA,QACX;AACA,eAAOA;AAAA,MACX,GAAE;AAAA;AAAA;AAAA;;;ACjIF;AAAA;AAAA;AAKA,QAAI,YAAa,WAAQ,QAAK,aAAe,4BAAY;AACrD,UAAI,gBAAgB,SAAU,GAAG,GAAG;AAChC,wBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,SAAUC,IAAGC,IAAG;AAAE,UAAAD,GAAE,YAAYC;AAAA,QAAG,KAC1E,SAAUD,IAAGC,IAAG;AAAE,mBAAS,KAAKA,GAAG,KAAIA,GAAE,eAAe,CAAC,EAAG,CAAAD,GAAE,CAAC,IAAIC,GAAE,CAAC;AAAA,QAAG;AAC7E,eAAO,cAAc,GAAG,CAAC;AAAA,MAC7B;AACA,aAAO,SAAU,GAAG,GAAG;AACnB,sBAAc,GAAG,CAAC;AAClB,iBAAS,KAAK;AAAE,eAAK,cAAc;AAAA,QAAG;AACtC,UAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI,GAAG;AAAA,MACtF;AAAA,IACJ,GAAG;AACH,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,aAAa,QAAQ,YAAY,QAAQ,aAAa,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,QAAQ,YAAY,QAAQ,MAAM,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,eAAe,QAAQ,UAAU,QAAQ,YAAY,QAAQ,WAAW,QAAQ,gBAAgB,QAAQ,eAAe,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,WAAW,QAAQ,MAAM,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,QAAQ;AACngB,QAAI,SAAS;AAEb,QAAI;AAAA;AAAA,MAAuB,4BAAY;AACnC,iBAASC,SAAQ;AAAA,QACjB;AACA,eAAOA;AAAA,MACX,GAAE;AAAA;AACF,YAAQ,QAAQ;AAEhB,aAAS,UAAU,UAAU;AACzB,aAAO,OAAO,aAAa,WAAW,KAAK,QAAQ,IAAI;AAAA,IAC3D;AACA,aAAS,aAAa,OAAOC,OAAM;AAC/B,UAAI,QAAQ,MAAMA,KAAI;AACtB,UAAI,CAAC,OAAO;AACR,cAAM,IAAI,MAAM,kBAAkBA,KAAI;AAAA,MAC1C;AACA,aAAO;AAAA,IACX;AAKA,aAAS,KAAK,OAAO;AAAE,aAAO,IAAI,MAAM,KAAK;AAAA,IAAG;AAChD,YAAQ,OAAO;AACf,QAAI;AAAA;AAAA,OAAuB,SAAU,QAAQ;AACzC,kBAAUC,QAAO,MAAM;AACvB,iBAASA,OAAMD,OAAM;AACjB,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,OAAOA;AACb,gBAAM,WAAW,cAAcA;AAC/B,iBAAO;AAAA,QACX;AACA,QAAAC,OAAM,UAAU,aAAa,SAAU,OAAO,QAAQ,cAAc;AAChE,cAAI,QAAQ;AACZ,cAAI,QAAQ,aAAa,OAAO,KAAK,IAAI;AACzC,cAAI,UAAU,MAAM,WAAW,OAAO,QAAQ,YAAY;AAC1D,cAAI,iBAAiB,aAAa,iBAAiBA,QAAO;AACtD,mBAAO;AAAA,UACX;AAEA,iBAAO,SAAU,OAAO,KAAK;AAAE,mBAAO,QAAQ,OAAO,GAAG,IAAI,OAAO,IAAI,KAAK,MAAM,MAAM,UAAU,CAAC;AAAA,UAAG;AAAA,QAC1G;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,QAAQ;AAIhB,aAASC,KAAI,OAAO;AAAE,aAAO,IAAI,SAAS,KAAK;AAAA,IAAG;AAClD,YAAQ,MAAMA;AACd,QAAI;AAAA;AAAA,OAA0B,SAAU,QAAQ;AAC5C,kBAAUC,WAAU,MAAM;AAC1B,iBAASA,UAAS,OAAO;AACrB,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,QAAQ;AACd,gBAAM,OAAO,KAAK,UAAU,KAAK;AACjC,gBAAM,WAAW,YAAY,MAAM;AACnC,iBAAO;AAAA,QACX;AACA,QAAAA,UAAS,UAAU,aAAa,SAAU,OAAO,QAAQ;AACrD,cAAI,QAAQ;AACZ,iBAAO,SAAU,OAAO,KAAK;AAAE,mBAAQ,UAAU,MAAM,QAAS,OAAO,IAAI,KAAK,MAAM,MAAM,UAAU,EAAE;AAAA,UAAG;AAAA,QAC/G;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,WAAW;AAInB,aAASC,OAAM,UAAU;AAAE,aAAO,IAAI,OAAO,UAAU,QAAQ,CAAC;AAAA,IAAG;AACnE,YAAQ,QAAQA;AAChB,QAAI;AAAA;AAAA,OAAwB,SAAU,QAAQ;AAC1C,kBAAUC,SAAQ,MAAM;AACxB,iBAASA,QAAO,OAAO;AACnB,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,QAAQ;AACd,iBAAO;AAAA,QACX;AACA,QAAAA,QAAO,UAAU,aAAa,SAAU,OAAO,QAAQ;AACnD,cAAI,cAAc,KAAK,MAAM,WAAW,OAAO,MAAM;AACrD,iBAAO,SAAU,OAAO,KAAK;AACzB,gBAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,qBAAO,IAAI,KAAK,MAAM,mBAAmB,CAAC;AAAA,YAC9C;AACA,qBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,kBAAI,KAAK,YAAY,MAAM,CAAC,GAAG,GAAG;AAClC,kBAAI,CAAC,IAAI;AACL,uBAAO,IAAI,KAAK,GAAG,MAAM,CAAC;AAAA,cAC9B;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AAAA,QACJ;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,SAAS;AAIjB,aAAS,QAAQ;AACb,UAAI,WAAW,CAAC;AAChB,eAASC,MAAK,GAAGA,MAAK,UAAU,QAAQA,OAAM;AAC1C,iBAASA,GAAE,IAAI,UAAUA,GAAE;AAAA,MAC/B;AACA,aAAO,IAAI,OAAO,SAAS,IAAI,SAAUC,IAAG;AAAE,eAAO,UAAUA,EAAC;AAAA,MAAG,CAAC,CAAC;AAAA,IACzE;AACA,YAAQ,QAAQ;AAChB,QAAI;AAAA;AAAA,OAAwB,SAAU,QAAQ;AAC1C,kBAAUC,SAAQ,MAAM;AACxB,iBAASA,QAAO,QAAQ;AACpB,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,SAAS;AACf,iBAAO;AAAA,QACX;AACA,QAAAA,QAAO,UAAU,aAAa,SAAU,OAAO,QAAQ;AACnD,cAAI,eAAe,KAAK,OAAO,IAAI,SAAUD,IAAG;AAAE,mBAAOA,GAAE,WAAW,OAAO,MAAM;AAAA,UAAG,CAAC;AACvF,cAAI,UAAU,SAAU,OAAO,KAAK;AAChC,gBAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,qBAAO,IAAI,KAAK,MAAM,mBAAmB,CAAC;AAAA,YAC9C;AACA,qBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,kBAAI,KAAK,aAAa,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG;AACtC,kBAAI,CAAC,IAAI;AACL,uBAAO,IAAI,KAAK,GAAG,MAAM,CAAC;AAAA,cAC9B;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AACA,cAAI,CAAC,QAAQ;AACT,mBAAO;AAAA,UACX;AACA,iBAAO,SAAU,OAAO,KAAK;AACzB,gBAAI,CAAC,QAAQ,OAAO,GAAG,GAAG;AACtB,qBAAO;AAAA,YACX;AACA,mBAAO,MAAM,UAAU,aAAa,SAAS,OACzC,IAAI,KAAK,aAAa,QAAQ,iBAAiB,CAAC;AAAA,UACxD;AAAA,QACJ;AACA,eAAOC;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,SAAS;AAIjB,aAASC,SAAQ;AACb,UAAI,WAAW,CAAC;AAChB,eAASH,MAAK,GAAGA,MAAK,UAAU,QAAQA,OAAM;AAC1C,iBAASA,GAAE,IAAI,UAAUA,GAAE;AAAA,MAC/B;AACA,aAAO,IAAI,OAAO,SAAS,IAAI,SAAUC,IAAG;AAAE,eAAO,UAAUA,EAAC;AAAA,MAAG,CAAC,CAAC;AAAA,IACzE;AACA,YAAQ,QAAQE;AAChB,QAAI;AAAA;AAAA,OAAwB,SAAU,QAAQ;AAC1C,kBAAUC,SAAQ,MAAM;AACxB,iBAASA,QAAO,QAAQ;AACpB,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,SAAS;AACf,cAAI,QAAQ,OAAO,IAAI,SAAUH,IAAG;AAAE,mBAAOA,cAAa,SAASA,cAAa,WAAWA,GAAE,OAAO;AAAA,UAAM,CAAC,EACtG,OAAO,SAAU,GAAG;AAAE,mBAAO;AAAA,UAAG,CAAC;AACtC,cAAI,aAAa,OAAO,SAAS,MAAM;AACvC,cAAI,MAAM,QAAQ;AACd,gBAAI,aAAa,GAAG;AAChB,oBAAM,KAAK,aAAa,OAAO;AAAA,YACnC;AACA,kBAAM,WAAW,gBAAgB,MAAM,KAAK,IAAI;AAAA,UACpD,OACK;AACD,kBAAM,WAAW,gBAAgB,aAAa;AAAA,UAClD;AACA,iBAAO;AAAA,QACX;AACA,QAAAG,QAAO,UAAU,aAAa,SAAU,OAAO,QAAQ;AACnD,cAAI,QAAQ;AACZ,cAAI,eAAe,KAAK,OAAO,IAAI,SAAUH,IAAG;AAAE,mBAAOA,GAAE,WAAW,OAAO,MAAM;AAAA,UAAG,CAAC;AACvF,iBAAO,SAAU,OAAO,KAAK;AACzB,gBAAI,KAAK,IAAI,cAAc;AAC3B,qBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,kBAAI,KAAK,aAAa,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;AAClD,kBAAI,IAAI;AACJ,uBAAO;AAAA,cACX;AAAA,YACJ;AACA,gBAAI,aAAa,EAAE;AACnB,mBAAO,IAAI,KAAK,MAAM,MAAM,UAAU,CAAC;AAAA,UAC3C;AAAA,QACJ;AACA,eAAOG;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,SAAS;AAIjB,aAAS,eAAe;AACpB,UAAI,WAAW,CAAC;AAChB,eAASJ,MAAK,GAAGA,MAAK,UAAU,QAAQA,OAAM;AAC1C,iBAASA,GAAE,IAAI,UAAUA,GAAE;AAAA,MAC/B;AACA,aAAO,IAAI,cAAc,SAAS,IAAI,SAAUC,IAAG;AAAE,eAAO,UAAUA,EAAC;AAAA,MAAG,CAAC,CAAC;AAAA,IAChF;AACA,YAAQ,eAAe;AACvB,QAAI;AAAA;AAAA,OAA+B,SAAU,QAAQ;AACjD,kBAAUI,gBAAe,MAAM;AAC/B,iBAASA,eAAc,QAAQ;AAC3B,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,SAAS;AACf,iBAAO;AAAA,QACX;AACA,QAAAA,eAAc,UAAU,aAAa,SAAU,OAAO,QAAQ;AAC1D,cAAI,eAAe,oBAAI,IAAI;AAC3B,cAAI,eAAe,KAAK,OAAO,IAAI,SAAUJ,IAAG;AAAE,mBAAOA,GAAE,WAAW,OAAO,QAAQ,YAAY;AAAA,UAAG,CAAC;AACrG,iBAAO,SAAU,OAAO,KAAK;AACzB,gBAAI,KAAK,aAAa,MAAM,SAAU,SAAS;AAAE,qBAAO,QAAQ,OAAO,GAAG;AAAA,YAAG,CAAC;AAC9E,gBAAI,IAAI;AACJ,qBAAO;AAAA,YACX;AACA,mBAAO,IAAI,KAAK,MAAM,MAAM,CAAC;AAAA,UACjC;AAAA,QACJ;AACA,eAAOI;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,gBAAgB;AAIxB,aAAS,SAAS,QAAQ;AACtB,aAAO,IAAI,UAAU,MAAM;AAAA,IAC/B;AACA,YAAQ,WAAW;AACnB,QAAI;AAAA;AAAA,OAA2B,SAAU,QAAQ;AAC7C,kBAAUC,YAAW,MAAM;AAC3B,iBAASA,WAAU,SAAS;AACxB,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,UAAU;AAChB,gBAAM,cAAc,oBAAI,IAAI;AAC5B,gBAAM,WAAW;AACjB,gBAAM,cAAc,IAAI,IAAI,OAAO,KAAK,OAAO,EAAE,IAAI,SAAUZ,OAAM;AAAE,mBAAO,QAAQA,KAAI;AAAA,UAAG,CAAC,CAAC;AAC/F,iBAAO;AAAA,QACX;AACA,QAAAY,WAAU,UAAU,aAAa,SAAU,OAAO,QAAQ;AACtD,cAAI,QAAQ;AACZ,iBAAO,SAAU,OAAO,KAAK;AACzB,mBAAQ,MAAM,YAAY,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,MAAM,MAAM,UAAU,CAAC;AAAA,UAClF;AAAA,QACJ;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,YAAY;AAIpB,aAAS,QAAQZ,OAAM,MAAM;AACzB,aAAO,IAAI,aAAaA,OAAM,IAAI;AAAA,IACtC;AACA,YAAQ,UAAU;AAClB,QAAI;AAAA;AAAA,OAA8B,SAAU,QAAQ;AAChD,kBAAUa,eAAc,MAAM;AAC9B,iBAASA,cAAa,UAAU,MAAM;AAClC,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,WAAW;AACjB,gBAAM,OAAO;AACb,gBAAM,WAAW,YAAY,WAAW,MAAM;AAC9C,iBAAO;AAAA,QACX;AACA,QAAAA,cAAa,UAAU,aAAa,SAAU,OAAO,QAAQ;AACzD,cAAI,QAAQ;AACZ,cAAI,QAAQ,aAAa,OAAO,KAAK,QAAQ;AAC7C,cAAI,EAAE,iBAAiB,YAAY;AAC/B,kBAAM,IAAI,MAAM,UAAU,KAAK,WAAW,sCAAsC;AAAA,UACpF;AACA,cAAI,MAAM,MAAM,QAAQ,KAAK,IAAI;AACjC,cAAI,CAAC,MAAM,QAAQ,eAAe,KAAK,IAAI,GAAG;AAC1C,kBAAM,IAAI,MAAM,mBAAmB,KAAK,WAAW,MAAM,KAAK,OAAO,kBAAkB;AAAA,UAC3F;AACA,iBAAO,SAAU,OAAO,KAAK;AAAE,mBAAQ,UAAU,MAAO,OAAO,IAAI,KAAK,MAAM,MAAM,UAAU,EAAE;AAAA,UAAG;AAAA,QACvG;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,eAAe;AACvB,aAAS,eAAe,OAAO;AAC3B,aAAO,OAAO,KAAK,KAAK,EAAE,IAAI,SAAUb,OAAM;AAAE,eAAO,cAAcA,OAAM,MAAMA,KAAI,CAAC;AAAA,MAAG,CAAC;AAAA,IAC9F;AACA,aAAS,cAAcA,OAAM,MAAM;AAC/B,aAAO,gBAAgB,YACnB,IAAI,MAAMA,OAAM,KAAK,OAAO,IAAI,IAChC,IAAI,MAAMA,OAAM,UAAU,IAAI,GAAG,KAAK;AAAA,IAC9C;AAKA,aAASc,OAAM,OAAO,OAAO;AACzB,aAAO,IAAI,OAAO,OAAO,eAAe,KAAK,CAAC;AAAA,IAClD;AACA,YAAQ,QAAQA;AAChB,QAAI;AAAA;AAAA,OAAwB,SAAU,QAAQ;AAC1C,kBAAUC,SAAQ,MAAM;AACxB,iBAASA,QAAO,OAAO,OAAO;AAC1B,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,QAAQ;AACd,gBAAM,QAAQ;AACd,gBAAM,UAAU,IAAI,IAAI,MAAM,IAAI,SAAU,GAAG;AAAE,mBAAO,EAAE;AAAA,UAAM,CAAC,CAAC;AAClE,iBAAO;AAAA,QACX;AACA,QAAAA,QAAO,UAAU,aAAa,SAAU,OAAO,QAAQ,cAAc;AACjE,cAAI,QAAQ;AACZ,cAAI,eAAe,KAAK,MAAM,IAAI,SAAU,GAAG;AAAE,mBAAO,aAAa,OAAO,CAAC,EAAE,WAAW,OAAO,MAAM;AAAA,UAAG,CAAC;AAC3G,cAAI,eAAe,KAAK,MAAM,IAAI,SAAU,MAAM;AAAE,mBAAO,KAAK,MAAM,WAAW,OAAO,MAAM;AAAA,UAAG,CAAC;AAClG,cAAI,UAAU,IAAI,OAAO,YAAY;AAErC,cAAI,iBAAiB,KAAK,MAAM,IAAI,SAAU,MAAM,GAAG;AACnD,mBAAO,CAAC,KAAK,SAAS,CAAC,aAAa,CAAC,EAAE,QAAW,OAAO;AAAA,UAC7D,CAAC;AACD,cAAI,UAAU,SAAU,OAAO,KAAK;AAChC,gBAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC7C,qBAAO,IAAI,KAAK,MAAM,oBAAoB,CAAC;AAAA,YAC/C;AACA,qBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,kBAAI,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,GAAG;AAC9B,uBAAO;AAAA,cACX;AAAA,YACJ;AACA,qBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,kBAAI,SAAS,MAAM,MAAM,CAAC,EAAE;AAC5B,kBAAI,IAAI,MAAM,MAAM;AACpB,kBAAI,MAAM,QAAW;AACjB,oBAAI,eAAe,CAAC,GAAG;AACnB,yBAAO,IAAI,KAAK,QAAQ,cAAc,CAAC;AAAA,gBAC3C;AAAA,cACJ,OACK;AACD,oBAAI,KAAK,aAAa,CAAC,EAAE,GAAG,GAAG;AAC/B,oBAAI,CAAC,IAAI;AACL,yBAAO,IAAI,KAAK,QAAQ,MAAM,CAAC;AAAA,gBACnC;AAAA,cACJ;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AACA,cAAI,CAAC,QAAQ;AACT,mBAAO;AAAA,UACX;AACA,cAAI,UAAU,KAAK;AACnB,cAAI,cAAc;AACd,iBAAK,QAAQ,QAAQ,SAAU,MAAM;AAAE,qBAAO,aAAa,IAAI,IAAI;AAAA,YAAG,CAAC;AACvE,sBAAU;AAAA,UACd;AAEA,iBAAO,SAAU,OAAO,KAAK;AACzB,gBAAI,CAAC,QAAQ,OAAO,GAAG,GAAG;AACtB,qBAAO;AAAA,YACX;AACA,qBAAS,QAAQ,OAAO;AACpB,kBAAI,CAAC,QAAQ,IAAI,IAAI,GAAG;AACpB,uBAAO,IAAI,KAAK,MAAM,iBAAiB,CAAC;AAAA,cAC5C;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AAAA,QACJ;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,SAAS;AAIjB,aAASC,KAAI,UAAU;AAAE,aAAO,IAAI,UAAU,UAAU,QAAQ,CAAC;AAAA,IAAG;AACpE,YAAQ,MAAMA;AACd,QAAI;AAAA;AAAA,OAA2B,SAAU,QAAQ;AAC7C,kBAAUC,YAAW,MAAM;AAC3B,iBAASA,WAAU,OAAO;AACtB,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,QAAQ;AACd,iBAAO;AAAA,QACX;AACA,QAAAA,WAAU,UAAU,aAAa,SAAU,OAAO,QAAQ;AACtD,cAAI,cAAc,KAAK,MAAM,WAAW,OAAO,MAAM;AACrD,iBAAO,SAAU,OAAO,KAAK;AACzB,mBAAO,UAAU,UAAa,YAAY,OAAO,GAAG;AAAA,UACxD;AAAA,QACJ;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,YAAY;AAIpB,QAAI;AAAA;AAAA,MAAuB,4BAAY;AACnC,iBAASC,OAAMlB,OAAM,OAAO,OAAO;AAC/B,eAAK,OAAOA;AACZ,eAAK,QAAQ;AACb,eAAK,QAAQ;AAAA,QACjB;AACA,eAAOkB;AAAA,MACX,GAAE;AAAA;AACF,YAAQ,QAAQ;AAKhB,aAAS,KAAK,YAAY;AACtB,UAAI,SAAS,CAAC;AACd,eAASZ,MAAK,GAAGA,MAAK,UAAU,QAAQA,OAAM;AAC1C,eAAOA,MAAK,CAAC,IAAI,UAAUA,GAAE;AAAA,MACjC;AACA,aAAO,IAAI,MAAM,IAAI,WAAW,MAAM,GAAG,UAAU,UAAU,CAAC;AAAA,IAClE;AACA,YAAQ,OAAO;AACf,QAAI;AAAA;AAAA,OAAuB,SAAU,QAAQ;AACzC,kBAAUa,QAAO,MAAM;AACvB,iBAASA,OAAM,WAAW,QAAQ;AAC9B,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,YAAY;AAClB,gBAAM,SAAS;AACf,iBAAO;AAAA,QACX;AACA,QAAAA,OAAM,UAAU,aAAa,SAAU,OAAO,QAAQ;AAClD,iBAAO,SAAU,OAAO,KAAK;AACzB,mBAAO,OAAO,UAAU,aAAa,OAAO,IAAI,KAAK,MAAM,qBAAqB,CAAC;AAAA,UACrF;AAAA,QACJ;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,QAAQ;AAIhB,aAAS,MAAMnB,OAAM,UAAU,OAAO;AAClC,aAAO,IAAI,OAAOA,OAAM,UAAU,QAAQ,GAAG,QAAQ,KAAK,CAAC;AAAA,IAC/D;AACA,YAAQ,QAAQ;AAChB,QAAI;AAAA;AAAA,MAAwB,4BAAY;AACpC,iBAASoB,QAAOpB,OAAM,OAAO,OAAO;AAChC,eAAK,OAAOA;AACZ,eAAK,QAAQ;AACb,eAAK,QAAQ;AAAA,QACjB;AACA,eAAOoB;AAAA,MACX,GAAE;AAAA;AACF,YAAQ,SAAS;AAIjB,QAAI;AAAA;AAAA,OAA4B,SAAU,QAAQ;AAC9C,kBAAUC,aAAY,MAAM;AAC5B,iBAASA,YAAW,QAAQ;AACxB,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,SAAS;AACf,iBAAO;AAAA,QACX;AACA,QAAAA,YAAW,UAAU,aAAa,SAAU,OAAO,QAAQ;AACvD,cAAI,QAAQ;AACZ,cAAI,eAAe,KAAK,OAAO,IAAI,SAAUd,IAAG;AAAE,mBAAOA,GAAE,MAAM,WAAW,OAAO,MAAM;AAAA,UAAG,CAAC;AAC7F,cAAI,UAAU,IAAI,OAAO,YAAY;AACrC,cAAI,kBAAkB,KAAK,OAAO,IAAI,SAAUe,QAAO,GAAG;AACtD,mBAAO,CAACA,OAAM,SAAS,CAAC,aAAa,CAAC,EAAE,QAAW,OAAO;AAAA,UAC9D,CAAC;AACD,cAAI,UAAU,SAAU,OAAO,KAAK;AAChC,gBAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,qBAAO,IAAI,KAAK,MAAM,mBAAmB,CAAC;AAAA,YAC9C;AACA,qBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,kBAAI,IAAI,MAAM,OAAO,CAAC;AACtB,kBAAI,MAAM,CAAC,MAAM,QAAW;AACxB,oBAAI,gBAAgB,CAAC,GAAG;AACpB,yBAAO,IAAI,KAAK,EAAE,MAAM,cAAc,CAAC;AAAA,gBAC3C;AAAA,cACJ,OACK;AACD,oBAAI,KAAK,aAAa,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG;AACtC,oBAAI,CAAC,IAAI;AACL,yBAAO,IAAI,KAAK,EAAE,MAAM,MAAM,CAAC;AAAA,gBACnC;AAAA,cACJ;AAAA,YACJ;AACA,mBAAO;AAAA,UACX;AACA,cAAI,CAAC,QAAQ;AACT,mBAAO;AAAA,UACX;AACA,iBAAO,SAAU,OAAO,KAAK;AACzB,gBAAI,CAAC,QAAQ,OAAO,GAAG,GAAG;AACtB,qBAAO;AAAA,YACX;AACA,mBAAO,MAAM,UAAU,aAAa,SAAS,OACzC,IAAI,KAAK,aAAa,QAAQ,iBAAiB,CAAC;AAAA,UACxD;AAAA,QACJ;AACA,eAAOD;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,aAAa;AAIrB,QAAI;AAAA;AAAA,OAA2B,SAAU,QAAQ;AAC7C,kBAAUE,YAAW,MAAM;AAC3B,iBAASA,WAAU,WAAW,SAAS;AACnC,cAAI,QAAQ,OAAO,KAAK,IAAI,KAAK;AACjC,gBAAM,YAAY;AAClB,gBAAM,UAAU;AAChB,iBAAO;AAAA,QACX;AACA,QAAAA,WAAU,UAAU,aAAa,SAAU,OAAO,QAAQ;AACtD,cAAI,QAAQ;AACZ,iBAAO,SAAU,OAAO,KAAK;AAAE,mBAAO,MAAM,UAAU,KAAK,IAAI,OAAO,IAAI,KAAK,MAAM,MAAM,SAAS,CAAC;AAAA,UAAG;AAAA,QAC5G;AACA,eAAOA;AAAA,MACX,GAAE,KAAK;AAAA;AACP,YAAQ,YAAY;AAIpB,YAAQ,aAAa;AAAA,MACjB,KAAK,IAAI,UAAU,SAAU,GAAG;AAAE,eAAO;AAAA,MAAM,GAAG,YAAY;AAAA,MAC9D,QAAQ,IAAI,UAAU,SAAU,GAAG;AAAE,eAAQ,OAAO,MAAM;AAAA,MAAW,GAAG,iBAAiB;AAAA,MACzF,QAAQ,IAAI,UAAU,SAAU,GAAG;AAAE,eAAQ,OAAO,MAAM,YAAY;AAAA,MAAI,GAAG,kBAAkB;AAAA,MAC/F,SAAS,IAAI,UAAU,SAAU,GAAG;AAAE,eAAQ,OAAO,MAAM;AAAA,MAAY,GAAG,kBAAkB;AAAA,MAC5F,QAAQ,IAAI,UAAU,SAAU,GAAG;AAAE,eAAQ,OAAO,MAAM;AAAA,MAAW,GAAG,iBAAiB;AAAA,MACzF,QAAQ,IAAI,UAAU,SAAU,GAAG;AAAE,eAAQ,OAAO,MAAM;AAAA,MAAW,GAAG,iBAAiB;AAAA,MACzF,MAAM,IAAI,UAAU,SAAU,GAAG;AAAE,eAAQ,KAAK;AAAA,MAAO,GAAG,aAAa;AAAA,MACvE,WAAW,IAAI,UAAU,SAAU,GAAG;AAAE,eAAQ,MAAM;AAAA,MAAY,GAAG,kBAAkB;AAAA,MACvF,MAAM,IAAI,UAAU,SAAU,GAAG;AAAE,eAAQ,MAAM;AAAA,MAAO,GAAG,aAAa;AAAA,MACxE,OAAO,IAAI,UAAU,SAAU,GAAG;AAAE,eAAO;AAAA,MAAO,GAAG,eAAe;AAAA,MACpE,MAAM,IAAI,UAAU,mBAAmB,eAAe,GAAG,eAAe;AAAA,MACxE,QAAQ,IAAI,UAAU,mBAAmB,iBAAiB,GAAG,iBAAiB;AAAA,IAClF;AAIA,QAAI,iBAAiB,OAAO,UAAU;AACtC,aAAS,mBAAmB,KAAK;AAC7B,aAAO,SAAU,GAAG;AAAE,eAAO,OAAO,MAAM,YAAY,KAAK,eAAe,KAAK,CAAC,MAAM;AAAA,MAAK;AAAA,IAC/F;AACA,QAAI,OAAO,WAAW,aAAa;AAC/B,cAAQ,WAAW,SAAS,IAAI,UAAU,SAAU,GAAG;AAAE,eAAO,OAAO,SAAS,CAAC;AAAA,MAAG,GAAG,iBAAiB;AAAA,IAC5G;AACA,QAAI,UAAU,SAAUC,UAAS;AAC7B,cAAQ,WAAWA,SAAQ,IAAI,IAAI,IAAI,UAAU,SAAU,GAAG;AAAE,eAAQ,aAAaA;AAAA,MAAU,GAAG,cAAcA,SAAQ,IAAI;AAAA,IAChI;AAEA,SAAS,KAAK,GAAG,KAAK;AAAA,MAAC;AAAA,MAAW;AAAA,MAAY;AAAA,MAAmB;AAAA,MAAY;AAAA,MACzE;AAAA,MAAY;AAAA,MAAa;AAAA,MAAc;AAAA,MAAc;AAAA,IAAW,GAAG,KAAK,GAAG,QAAQ,MAAM;AACrF,gBAAU,GAAG,EAAE;AACnB,cAAQ,OAAO;AAAA,IACnB;AAFQ;AAFC;AAAQ;AAAA;AAAA;;;ACjjBjB;AAAA;AAAA;AACA,QAAI,iBAAkB,WAAQ,QAAK,kBAAmB,WAAY;AAC9D,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK,UAAU,QAAQ,IAAI,IAAI,IAAK,MAAK,UAAU,CAAC,EAAE;AAC7E,eAAS,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI;AACzC,iBAAS,IAAI,UAAU,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,QAAQ,IAAI,IAAI,KAAK;AAC1D,YAAE,CAAC,IAAI,EAAE,CAAC;AAClB,aAAO;AAAA,IACX;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,UAAU,QAAQ,iBAAiB;AAC3C,QAAI,UAAU;AACd,QAAI,SAAS;AAIb,QAAI,UAAU;AACd,WAAO,eAAe,SAAS,UAAU,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAQ,EAAE,CAAC;AAC1G,WAAO,eAAe,SAAS,aAAa,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAW,EAAE,CAAC;AAChH,WAAO,eAAe,SAAS,gBAAgB,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAc,EAAE,CAAC;AACtH,WAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAO,EAAE,CAAC;AACxG,WAAO,eAAe,SAAS,UAAU,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAQ,EAAE,CAAC;AAC1G,WAAO,eAAe,SAAS,YAAY,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAU,EAAE,CAAC;AAC9G,WAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAO,EAAE,CAAC;AACxG,WAAO,eAAe,SAAS,aAAa,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAW,EAAE,CAAC;AAChH,WAAO,eAAe,SAAS,UAAU,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAQ,EAAE,CAAC;AAC1G,WAAO,eAAe,SAAS,cAAc,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAY,EAAE,CAAC;AAClH,WAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAO,EAAE,CAAC;AACxG,WAAO,eAAe,SAAS,UAAU,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAQ,EAAE,CAAC;AAC1G,WAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAO,EAAE,CAAC;AACxG,WAAO,eAAe,SAAS,UAAU,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAQ,EAAE,CAAC;AAC1G,WAAO,eAAe,SAAS,iBAAiB,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAe,EAAE,CAAC;AACxH,WAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAO,EAAE,CAAC;AACxG,WAAO,eAAe,SAAS,WAAW,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAS,EAAE,CAAC;AAC5G,WAAO,eAAe,SAAS,YAAY,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAU,EAAE,CAAC;AAC9G,WAAO,eAAe,SAAS,QAAQ,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAM,EAAE,CAAC;AACtG,WAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAO,EAAE,CAAC;AACxG,WAAO,eAAe,SAAS,OAAO,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAK,EAAE,CAAC;AACpG,WAAO,eAAe,SAAS,QAAQ,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAM,EAAE,CAAC;AACtG,WAAO,eAAe,SAAS,OAAO,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAK,EAAE,CAAC;AACpG,WAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAO,EAAE,CAAC;AACxG,WAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAO,EAAE,CAAC;AACxG,WAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAO,EAAE,CAAC;AACxG,WAAO,eAAe,SAAS,gBAAgB,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAc,EAAE,CAAC;AACtH,WAAO,eAAe,SAAS,aAAa,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,QAAQ;AAAA,IAAW,EAAE,CAAC;AAChH,QAAI,SAAS;AACb,WAAO,eAAe,SAAS,UAAU,EAAE,YAAY,MAAM,KAAK,WAAY;AAAE,aAAO,OAAO;AAAA,IAAQ,EAAE,CAAC;AAQzG,aAASC,kBAAiB;AACtB,UAAI,YAAY,CAAC;AACjB,eAAS,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM;AAC1C,kBAAU,EAAE,IAAI,UAAU,EAAE;AAAA,MAChC;AACA,UAAI,YAAY,OAAO,OAAO,MAAM,QAAQ,eAAe,CAAC,CAAC,GAAG,QAAQ,UAAU,GAAG,SAAS,CAAC;AAC/F,UAAI,WAAW,CAAC;AAChB,eAAS,KAAK,GAAG,cAAc,WAAW,KAAK,YAAY,QAAQ,MAAM;AACrE,YAAI,UAAU,YAAY,EAAE;AAC5B,iBAAS,KAAK,GAAG,KAAK,OAAO,KAAK,OAAO,GAAG,KAAK,GAAG,QAAQ,MAAM;AAC9D,cAAI,OAAO,GAAG,EAAE;AAChB,mBAAS,IAAI,IAAI,IAAI,QAAQ,WAAW,QAAQ,IAAI,CAAC;AAAA,QACzD;AAAA,MACJ;AACA,aAAO;AAAA,IACX;AACA,YAAQ,iBAAiBA;AAKzB,QAAI;AAAA;AAAA,OAAyB,WAAY;AAErC,iBAASC,SAAQ,OAAO,OAAO,OAAO;AAClC,cAAI,UAAU,QAAQ;AAAE,oBAAQ;AAAA,UAAS;AACzC,eAAK,QAAQ;AACb,eAAK,QAAQ;AACb,eAAK,QAAQ;AACb,eAAK,QAAQ,oBAAI,IAAI;AACrB,cAAI,iBAAiB,QAAQ,QAAQ;AACjC,qBAAS,KAAK,GAAG,KAAK,MAAM,OAAO,KAAK,GAAG,QAAQ,MAAM;AACrD,kBAAI,IAAI,GAAG,EAAE;AACb,mBAAK,MAAM,IAAI,EAAE,MAAM,EAAE,KAAK;AAAA,YAClC;AAAA,UACJ;AACA,eAAK,eAAe,KAAK,MAAM,WAAW,OAAO,KAAK;AACtD,eAAK,gBAAgB,KAAK,MAAM,WAAW,OAAO,IAAI;AAAA,QAC1D;AAKA,QAAAA,SAAQ,UAAU,kBAAkB,SAAU,MAAM;AAChD,eAAK,QAAQ;AAAA,QACjB;AAIA,QAAAA,SAAQ,UAAU,QAAQ,SAAU,OAAO;AAAE,iBAAO,KAAK,SAAS,KAAK,cAAc,KAAK;AAAA,QAAG;AAK7F,QAAAA,SAAQ,UAAU,OAAO,SAAU,OAAO;AACtC,iBAAO,KAAK,aAAa,OAAO,IAAI,OAAO,YAAY,CAAC;AAAA,QAC5D;AAKA,QAAAA,SAAQ,UAAU,WAAW,SAAU,OAAO;AAC1C,iBAAO,KAAK,YAAY,KAAK,cAAc,KAAK;AAAA,QACpD;AAMA,QAAAA,SAAQ,UAAU,cAAc,SAAU,OAAO;AAAE,iBAAO,KAAK,SAAS,KAAK,eAAe,KAAK;AAAA,QAAG;AAKpG,QAAAA,SAAQ,UAAU,aAAa,SAAU,OAAO;AAC5C,iBAAO,KAAK,cAAc,OAAO,IAAI,OAAO,YAAY,CAAC;AAAA,QAC7D;AAKA,QAAAA,SAAQ,UAAU,iBAAiB,SAAU,OAAO;AAChD,iBAAO,KAAK,YAAY,KAAK,eAAe,KAAK;AAAA,QACrD;AAKA,QAAAA,SAAQ,UAAU,UAAU,SAAU,MAAM;AACxC,cAAI,QAAQ,KAAK,MAAM,IAAI,IAAI;AAC/B,cAAI,CAAC,OAAO;AACR,kBAAM,IAAI,MAAM,0BAA0B,IAAI;AAAA,UAClD;AACA,iBAAO,IAAIA,SAAQ,KAAK,OAAO,OAAO,KAAK,QAAQ,MAAM,IAAI;AAAA,QACjE;AASA,QAAAA,SAAQ,UAAU,aAAa,SAAU,YAAY;AACjD,cAAI,QAAQ,KAAK,WAAW,UAAU;AACtC,iBAAO,IAAIA,SAAQ,KAAK,OAAO,MAAM,SAAS;AAAA,QAClD;AAKA,QAAAA,SAAQ,UAAU,eAAe,SAAU,YAAY;AACnD,cAAI,QAAQ,KAAK,WAAW,UAAU;AACtC,iBAAO,IAAIA,SAAQ,KAAK,OAAO,MAAM,MAAM;AAAA,QAC/C;AAIA,QAAAA,SAAQ,UAAU,UAAU,WAAY;AACpC,cAAI,EAAE,KAAK,iBAAiB,QAAQ,QAAQ;AACxC,kBAAM,IAAI,MAAM,mCAAmC;AAAA,UACvD;AACA,iBAAO,IAAIA,SAAQ,KAAK,OAAO,KAAK,MAAM,SAAS;AAAA,QACvD;AAIA,QAAAA,SAAQ,UAAU,YAAY,WAAY;AACtC,cAAI,EAAE,KAAK,iBAAiB,QAAQ,QAAQ;AACxC,kBAAM,IAAI,MAAM,qCAAqC;AAAA,UACzD;AACA,iBAAO,IAAIA,SAAQ,KAAK,OAAO,KAAK,MAAM,MAAM;AAAA,QACpD;AAIA,QAAAA,SAAQ,UAAU,UAAU,WAAY;AACpC,iBAAO,KAAK;AAAA,QAChB;AAIA,QAAAA,SAAQ,UAAU,WAAW,SAAU,aAAa,OAAO;AACvD,cAAI,UAAU,IAAI,OAAO,YAAY;AACrC,cAAI,CAAC,YAAY,OAAO,OAAO,GAAG;AAC9B,gBAAI,YAAY,IAAI,OAAO,cAAc;AACzC,wBAAY,OAAO,SAAS;AAC5B,kBAAM,UAAU,SAAS,KAAK,KAAK;AAAA,UACvC;AAAA,QACJ;AACA,QAAAA,SAAQ,UAAU,cAAc,SAAU,aAAa,OAAO;AAC1D,cAAI,UAAU,IAAI,OAAO,YAAY;AACrC,cAAI,YAAY,OAAO,OAAO,GAAG;AAC7B,mBAAO;AAAA,UACX;AACA,cAAI,YAAY,IAAI,OAAO,cAAc;AACzC,sBAAY,OAAO,SAAS;AAC5B,iBAAO,UAAU,eAAe,KAAK,KAAK;AAAA,QAC9C;AACA,QAAAA,SAAQ,UAAU,aAAa,SAAU,YAAY;AACjD,cAAI,QAAQ,KAAK,MAAM,IAAI,UAAU;AACrC,cAAI,CAAC,OAAO;AACR,kBAAM,IAAI,MAAM,0BAA0B,UAAU;AAAA,UACxD;AACA,cAAI,EAAE,iBAAiB,QAAQ,QAAQ;AACnC,kBAAM,IAAI,MAAM,cAAc,aAAa,kBAAkB;AAAA,UACjE;AACA,iBAAO;AAAA,QACX;AACA,eAAOA;AAAA,MACX,GAAE;AAAA;AACF,YAAQ,UAAU;AAAA;AAAA;;;AC/NlB,IAGA,GAGa,WASA,kBAIA,SAiBP,mBAKC;AAzCP;AAAA;AAGA,QAAmB;AAGZ,IAAM,YAAc;AAAA,MACvB,MAAI,KAAK;AAAA,MACT,MAAI,YAAY;AAAA,MAChB,MAAI,MAAM;AAAA,MACV,MAAI,SAAS;AAAA,MACb,MAAI,kBAAkB;AAAA,MACtB,MAAI,MAAM;AAAA,IACd;AAEO,IAAM,mBAAqB,QAAM,CAAC,GAAG;AAAA,MAC1C,kBAAkB;AAAA,IACpB,CAAC;AAEM,IAAM,UAAY,QAAM,CAAC,GAAG;AAAA,MACjC,YAAc,QAAM,WAAW;AAAA,MAC/B,qBAAuB,MAAI,SAAS;AAAA,MACpC,YAAc,MAAM,QAAQ,MAAI,SAAS,GAAK,MAAI,WAAW,GAAK,MAAI,UAAU,CAAC,CAAC;AAAA,MAClF,YAAc,MAAI,SAAS;AAAA,MAC3B,iBAAmB,MAAI,QAAQ;AAAA,MAC/B,WAAa,MAAI,QAAQ;AAAA,MACzB,mBAAqB,MAAI,QAAQ;AAAA,MACjC,mBAAqB,MAAI,SAAS;AAAA,MAClC,uBAAyB,MAAI,SAAS;AAAA,MACtC,qCAAuC,MAAI,SAAS;AAAA,MACpD,qCAAuC,MAAI,SAAS;AAAA,MACpD,iCAAmC,MAAI,SAAS;AAAA,MAChD,kBAAoB,MAAI,kBAAkB;AAAA,MAC1C,UAAY,MAAI,QAAQ;AAAA,IAC1B,CAAC;AAED,IAAM,oBAAoB;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,IAAO,4BAAQ;AAAA;AAAA;;;ACyDR,SAAS,gBAAgB,SAAS;AACvC,iBAAe,YAAY,OAAO;AACpC;AApGA,iCAIgB;AAJhB;AAAA;AAAA,kCAA6B;AAE7B;AAEA,KAAM,EAAC,SAAS,uBAAkB,4CAAe,yBAAe;AAAA;AAAA;;;ACYzD,SAAS,cAAc;AAC5B,OAAK;AACL,mBAAiB,KAAK;AACxB;AAEO,SAAS,UAAU,cAAc;AACtC,OAAK;AACL,mBAAiB,YAAY;AAC/B;AAEO,SAAS,uBAAuB,cAAc;AACnD,kBAAgB;AAChB,6BAA2B,YAAY;AACzC;AAEO,SAAS,0BAA0B;AACxC,kBAAgB;AAChB,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACxE;AAEO,SAAS,2BAA2B,cAAc;AACvD,MAAI;AACJ,MAAI,MAAM,eAAe,GAAG;AAC1B,qBAAiB,eAAe;AAAA,EAClC,WAAW,cAAc;AACvB,qBAAiB,eAAe;AAAA,EAClC,OAAO;AACL,qBAAiB,eAAe;AAAA,EAClC;AACA,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB;AACzD;AAGO,SAAS,iBAAiB,cAAc;AAC7C,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAKC,WAAG,OAAO;AAEb,YAAM,YAAY,gBAAgB,CAAC;AACnC,WAAK;AACL,qBAAe,SAAS;AACxB;AAAA,IACF;AAAA,IAEA,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG,MAAM;AACZ,YAAM,OAAOA,WAAG;AAChB,6BAAuB,YAAY;AACnC;AAAA,IACF;AAAA,IAEA,KAAKA,WAAG,UAAU;AAChB,WAAK;AACL;AAAA,QAAiBA,WAAG;AAAA,QAAU;AAAA,QAAc;AAAA;AAAA,MAAqB;AACjE;AAAA,IACF;AAAA,IAEA,KAAKA,WAAG;AACN,eAAS,MAAM,YAAY;AAC3B;AAAA,IAEF;AACE,iBAAW;AAAA,EACf;AACF;AAEO,SAAS,iBACd,OACA,cACA,aAAa,OACb,iBAAiB,OACjB,YAAY,GACZ;AACA,MAAI,QAAQ;AAEZ,MAAI,kBAAkB;AACtB,QAAM,sBAAsB,MAAM,OAAO;AAEzC,SAAO,CAACC,KAAI,KAAK,KAAK,CAAC,MAAM,OAAO;AAClC,QAAI,OAAO;AACT,cAAQ;AAAA,IACV,OAAO;AACL,aAAOD,WAAG,KAAK;AACf,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAGlD,UAAI,CAAC,mBAAmB,MAAM,OAAO,mBAAmB,EAAE,QAAQ;AAChE,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C,0BAAkB;AAAA,MACpB;AAAA,IACF;AACA,QAAI,cAAc,MAAMA,WAAG,KAAK,GAAG;AAAA,IAEnC,WAAWC,KAAI,KAAK,GAAG;AACrB;AAAA,IACF,WAAW,MAAMD,WAAG,QAAQ,GAAG;AAC7B,gBAAU,YAAY;AACtB,mCAA6B;AAE7B,MAAAC,KAAID,WAAU,KAAK;AACnB,aAAO,KAAK;AACZ;AAAA,IACF,OAAO;AACL,8BAAwB,gBAAgB,YAAY;AAAA,IACtD;AAAA,EACF;AACF;AAEA,SAAS,wBAAwB,gBAAgB,cAAc;AAC7D,MAAI,gBAAgB;AAClB,qBAAiB;AAAA,MACf,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AAEA,oBAAkB,YAAY;AAC9B,+BAA6B;AAC7B;AAAA,IAAkB;AAAA,IAAc;AAAA;AAAA,EAA4B;AAC9D;AAEA,SAAS,+BAA+B;AACtC,MAAI,eAAe;AACjB,qCAAiC;AAAA,EACnC,WAAW,qBAAqB;AAC9B,mCAA+B;AAAA,EACjC;AACF;AAGO,SAAS,kBAAkB,cAAc,oBAAoB,OAAO;AACzE,MAAI,CAAC,mBAAmB;AACtB,qBAAiB,YAAY;AAAA,EAC/B;AACA,MAAI,CAACC,KAAID,WAAG,EAAE,GAAG;AACf;AAAA,EACF;AACA,QAAM,UAAU,MAAM,OAAO,SAAS;AACtC,mBAAiB;AACjB,QAAM,OAAO,OAAO,EAAE,cAAc,MAAM,OAAO;AACnD;AA9JA;AAAA;AAAA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;AC0CA,SAAS,iBAAiB;AAGxB,SAAO,MAAME,WAAG,IAAI;AACtB;AAEA,SAAS,wBAAwB;AAC/B,SACE,MAAMA,WAAG,IAAI,KACb,QAAQ,MAAM,OAAOA,WAAU,UAAU,KACzC,MAAMA,WAAG,MAAM,KACf,MAAMA,WAAG,GAAG,KACZ,MAAMA,WAAG,MAAM,KACf,MAAMA,WAAG,OAAO;AAEpB;AAEA,SAAS,+BAA+B;AAKtC,QAAM,WAAW,MAAM,SAAS;AAEhC,OAAK;AACL,QAAM,qBACH,MAAMA,WAAG,QAAQ,KAChB,MAAMA,WAAG,MAAM,KACf,MAAMA,WAAG,IAAI,KACb,MAAMA,WAAG,QAAQ,KACjB,MAAMA,WAAG,IAAI,KACb,sBAAsB,MACxB,CAAC,sBAAsB;AAEzB,MAAI,mBAAmB;AACrB,WAAO;AAAA,EACT,OAAO;AACL,UAAM,oBAAoB,QAAQ;AAClC,WAAO;AAAA,EACT;AACF;AAEO,SAAS,iBAAiB,kBAAkB;AACjD,SAAO,MAAM;AACX,UAAM,WAAW,gBAAgB,gBAAgB;AACjD,QAAI,aAAa,MAAM;AACrB;AAAA,IACF;AAAA,EACF;AACF;AAGO,SAAS,gBACd,kBACA;AACA,MAAI,CAAC,MAAMA,WAAG,IAAI,GAAG;AACnB,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,MAAM;AACvB,MAAI,iBAAiB,QAAQ,QAAQ,MAAM,MAAM,6BAA6B,GAAG;AAC/E,YAAQ,UAAU;AAAA,MAChB,KAAK,kBAAkB;AACrB,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF,KAAK,kBAAkB;AACrB,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF,KAAK,kBAAkB;AACrB,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF,KAAK,kBAAkB;AACrB,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF,KAAK,kBAAkB;AACrB,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF,KAAK,kBAAkB;AACrB,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF,KAAK,kBAAkB;AACrB,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF,KAAK,kBAAkB;AACrB,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF;AACE;AAAA,IACJ;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,oBAAoB;AAC3B,kBAAgB;AAChB,SAAOC,KAAID,WAAG,GAAG,GAAG;AAClB,oBAAgB;AAAA,EAClB;AACF;AAEA,SAAS,uBAAuB;AAC9B,oBAAkB;AAClB,MAAI,CAAC,sBAAsB,KAAK,MAAMA,WAAG,QAAQ,GAAG;AAClD,yBAAqB;AAAA,EACvB;AACF;AAEA,SAAS,2BAA2B;AAClC,OAAK;AACL,wBAAsB;AACxB;AAEA,SAAS,sBAAsB;AAC7B,OAAK;AACP;AAEA,SAAS,mBAAmB;AAC1B,SAAOA,WAAG,OAAO;AACjB,MAAI,MAAMA,WAAG,OAAO,GAAG;AACrB,sBAAkB;AAAA,EACpB,OAAO;AACL,sBAAkB;AAAA,EACpB;AACA,MAAI,CAAC,sBAAsB,KAAK,MAAMA,WAAG,QAAQ,GAAG;AAClD,yBAAqB;AAAA,EACvB;AACF;AAEA,SAAS,oBAAoB;AAC3B,SAAOA,WAAG,OAAO;AACjB,SAAOA,WAAG,MAAM;AAChB,SAAOA,WAAG,MAAM;AAChB,SAAOA,WAAG,MAAM;AAChB,MAAIC,KAAID,WAAG,GAAG,GAAG;AACf,sBAAkB;AAAA,EACpB;AACA,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,yBAAqB;AAAA,EACvB;AACF;AAEA,SAAS,uBAAuB;AAC9B,EAAAC,KAAID,WAAG,MAAM;AACb,QAAM,QAAQC,KAAID,WAAG,GAAG;AACxB,QAAM,SAAS,cAAc,kBAAkB,IAAI;AACnD,EAAAC,KAAID,WAAG,MAAM;AACb,OAAK,SAAS,WAAW,CAAC,MAAMA,WAAG,IAAI,GAAG;AAGxC,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAAA,EAClD,OAAO;AACL,oBAAgB;AAAA,EAClB;AAEA,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,gBAAY;AAAA,EACd;AACA,MAAIC,KAAID,WAAG,EAAE,GAAG;AACd,gBAAY;AAAA,EACd;AACF;AAEO,SAAS,2BAA2B;AACzC,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,0BAAsB;AAAA,EACxB;AACF;AAEA,SAAS,wBAAwB;AAC/B,QAAM,YAAY,gBAAgB,CAAC;AACnC,MAAI,MAAMA,WAAG,QAAQ,KAAK,MAAMA,WAAG,kBAAkB,GAAG;AACtD,SAAK;AAAA,EACP,OAAO;AACL,eAAW;AAAA,EACb;AAEA,SAAO,CAACC,KAAID,WAAG,WAAW,KAAK,CAAC,MAAM,OAAO;AAC3C,yBAAqB;AACrB,IAAAC,KAAID,WAAG,KAAK;AAAA,EACd;AACA,iBAAe,SAAS;AAC1B;AAIA,SAAS,gBAAgB,aAAa;AAEpC,QAAM,sBAAsB,gBAAgBA,WAAG;AAC/C,2BAAyB;AACzB,SAAOA,WAAG,MAAM;AAGhB,QAAM;AACN;AAAA,IAA+B;AAAA;AAAA,EAAwB;AACvD,QAAM;AACN,MAAI,qBAAqB;AACvB,yCAAqC,WAAW;AAAA,EAClD,WAAW,MAAM,WAAW,GAAG;AAC7B,yCAAqC,WAAW;AAAA,EAClD;AACF;AAEA,SAAS,+BAA+B,cAAc;AACpD,mBAAiBA,WAAG,QAAQ,YAAY;AAC1C;AAEA,SAAS,6BAA6B;AACpC,MAAI,CAACC,KAAID,WAAG,KAAK,GAAG;AAClB,cAAU;AAAA,EACZ;AACF;AAEA,SAAS,yBAAyB;AAChC,kBAAgBA,WAAG,KAAK;AACxB,6BAA2B;AAC7B;AAEA,SAAS,kCAAkC;AACzC,QAAM,WAAW,MAAM,SAAS;AAChC,OAAK;AACL,QAAM,mBAAmBC,KAAID,WAAG,IAAI,KAAK,MAAMA,WAAG,KAAK;AACvD,QAAM,oBAAoB,QAAQ;AAClC,SAAO;AACT;AAEA,SAAS,2BAA2B;AAClC,MAAI,EAAE,MAAMA,WAAG,QAAQ,KAAK,gCAAgC,IAAI;AAC9D,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,gBAAgB,CAAC;AAEnC,SAAOA,WAAG,QAAQ;AAClB,kBAAgB;AAChB,wBAAsB;AACtB,SAAOA,WAAG,QAAQ;AAElB,2BAAyB;AACzB,6BAA2B;AAE3B,iBAAe,SAAS;AACxB,SAAO;AACT;AAEA,SAAS,iCAAiC,YAAY;AACpD,EAAAC,KAAID,WAAG,QAAQ;AAEf,MAAI,CAAC,eAAe,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,QAAQ,IAAI;AAC3D,oBAAgBA,WAAG,KAAK;AACxB,+BAA2B;AAAA,EAC7B,OAAO;AACL,6BAAyB;AACzB,+BAA2B;AAAA,EAC7B;AACF;AAEA,SAAS,oBAAoB;AAC3B,MAAI,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,QAAQ,GAAG;AAE1C,2BAAuB;AACvB;AAAA,EACF;AACA,MAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,SAAK;AACL,QAAI,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,QAAQ,GAAG;AAE1C,6BAAuB;AAAA,IACzB,OAAO;AACL,uCAAiC,KAAK;AAAA,IACxC;AACA;AAAA,EACF;AACA,QAAM,WAAW,CAAC,CAAC,gBAAgB,CAAC,kBAAkB,SAAS,CAAC;AAEhE,QAAM,QAAQ,yBAAyB;AACvC,MAAI,OAAO;AACT;AAAA,EACF;AACA,OACG,aAAa,kBAAkB,IAAI,KAAK,aAAa,kBAAkB,IAAI,MAC5E,6BAA6B,GAC7B;AAAA,EAGF;AACA;AAAA,IAAkB;AAAA;AAAA,EAAsC;AACxD,mCAAiC,QAAQ;AAC3C;AAEA,SAAS,qBAAqB;AAC5B,2BAAyB;AAC3B;AAEA,SAAS,2BAA2B;AAClC,SAAOA,WAAG,MAAM;AAChB,SAAO,CAACC,KAAID,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACtC,sBAAkB;AAAA,EACpB;AACF;AAEA,SAAS,iCAAiC;AACxC,QAAM,WAAW,MAAM,SAAS;AAChC,QAAM,sBAAsB,sBAAsB;AAClD,QAAM,oBAAoB,QAAQ;AAClC,SAAO;AACT;AAEA,SAAS,wBAAwB;AAC/B,OAAK;AACL,MAAIC,KAAID,WAAG,IAAI,KAAKC,KAAID,WAAG,KAAK,GAAG;AACjC,WAAO,aAAa,kBAAkB,SAAS;AAAA,EACjD;AACA,MAAI,aAAa,kBAAkB,SAAS,GAAG;AAC7C,SAAK;AAAA,EACP;AACA,MAAI,CAAC,MAAMA,WAAG,QAAQ,GAAG;AACvB,WAAO;AAAA,EACT;AACA,OAAK;AACL,MAAI,CAAC,eAAe,GAAG;AACrB,WAAO;AAAA,EACT;AACA,OAAK;AACL,SAAO,MAAMA,WAAG,GAAG;AACrB;AAEA,SAAS,6BAA6B;AACpC,kBAAgB;AAChB,SAAOA,WAAG,GAAG;AACb,cAAY;AACd;AAEA,SAAS,oBAAoB;AAC3B,SAAOA,WAAG,MAAM;AAChB,MAAI,MAAMA,WAAG,IAAI,KAAK,MAAMA,WAAG,KAAK,GAAG;AACrC,SAAK;AACL,qBAAiB,kBAAkB,SAAS;AAAA,EAC9C,OAAO;AACL,kBAAc,kBAAkB,SAAS;AAAA,EAC3C;AACA,SAAOA,WAAG,QAAQ;AAClB,6BAA2B;AAC3B,MAAI,cAAc,kBAAkB,GAAG,GAAG;AACxC,gBAAY;AAAA,EACd;AACA,SAAOA,WAAG,QAAQ;AAClB,MAAI,MAAMA,WAAG,IAAI,KAAK,MAAMA,WAAG,KAAK,GAAG;AACrC,SAAK;AACL,WAAOA,WAAG,QAAQ;AAAA,EACpB,OAAO;AACL,IAAAC,KAAID,WAAG,QAAQ;AAAA,EACjB;AACA,iBAAe;AACf,YAAU;AACV,SAAOA,WAAG,MAAM;AAClB;AAEA,SAAS,mBAAmB;AAC1B,SAAOA,WAAG,QAAQ;AAClB,SAAO,CAACC,KAAID,WAAG,QAAQ,KAAK,CAAC,MAAM,OAAO;AAExC,4BAAwB;AACxB,IAAAC,KAAID,WAAG,KAAK;AAAA,EACd;AACF;AAEA,SAAS,0BAA0B;AAEjC,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,gBAAY;AAAA,EACd,OAAO;AAEL,gBAAY;AACZ,IAAAC,KAAID,WAAG,QAAQ;AAAA,EACjB;AAGA,MAAIC,KAAID,WAAG,KAAK,GAAG;AAEjB,gBAAY;AAAA,EACd;AACF;AAEA,SAAS,2BAA2B;AAClC,SAAOA,WAAG,MAAM;AAChB,cAAY;AACZ,SAAOA,WAAG,MAAM;AAClB;AAEA,SAAS,6BAA6B;AAEpC,oBAAkB;AAElB,oBAAkB;AAClB,SAAO,CAAC,MAAMA,WAAG,SAAS,KAAK,CAAC,MAAM,OAAO;AAC3C,WAAOA,WAAG,YAAY;AACtB,gBAAY;AAEZ,sBAAkB;AAElB,sBAAkB;AAAA,EACpB;AACA,OAAK;AACP;AAQA,SAAS,iCAAiC,MAAM;AAC9C,MAAI,SAAS,aAAa,2BAA2B;AACnD,qBAAiB,kBAAkB,SAAS;AAAA,EAC9C;AACA,MAAI,SAAS,aAAa,qBAAqB,SAAS,aAAa,2BAA2B;AAC9F,WAAOA,WAAG,IAAI;AAAA,EAChB;AACA,QAAM,uCAAuC,MAAM;AACnD,QAAM,oCAAoC;AAC1C,kBAAgBA,WAAG,KAAK;AACxB,QAAM,oCAAoC;AAC5C;AAEA,SAAS,sBAAsB;AAC7B,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAKA,WAAG;AACN,2BAAqB;AACrB;AAAA,IACF,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AACN,WAAK;AACL;AAAA,IACF,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AACN,mBAAa;AACb;AAAA,IACF,KAAKA,WAAG;AACN,WAAK;AACL,mBAAa;AACb;AAAA,IACF,KAAKA,WAAG,OAAO;AACb,0BAAoB;AACpB,UAAI,aAAa,kBAAkB,GAAG,KAAK,CAAC,sBAAsB,GAAG;AACnE,iCAAyB;AAAA,MAC3B;AACA;AAAA,IACF;AAAA,IACA,KAAKA,WAAG;AACN,uBAAiB;AACjB;AAAA,IACF,KAAKA,WAAG;AACN,wBAAkB;AAClB;AAAA,IACF,KAAKA,WAAG;AACN,UAAI,+BAA+B,GAAG;AACpC,0BAAkB;AAAA,MACpB,OAAO;AACL,2BAAmB;AAAA,MACrB;AACA;AAAA,IACF,KAAKA,WAAG;AACN,uBAAiB;AACjB;AAAA,IACF,KAAKA,WAAG;AACN,+BAAyB;AACzB;AAAA,IACF,KAAKA,WAAG;AACN,iCAA2B;AAC3B;AAAA,IACF;AACE,UAAI,MAAM,OAAOA,WAAU,YAAY;AACrC,aAAK;AACL,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF;AACA;AAAA,EACJ;AAEA,aAAW;AACb;AAEA,SAAS,2BAA2B;AAClC,sBAAoB;AACpB,SAAO,CAAC,sBAAsB,KAAKC,KAAID,WAAG,QAAQ,GAAG;AACnD,QAAI,CAACC,KAAID,WAAG,QAAQ,GAAG;AAErB,kBAAY;AACZ,aAAOA,WAAG,QAAQ;AAAA,IACpB;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB;AAC1B,mBAAiB,kBAAkB,MAAM;AACzC,kBAAgB;AAChB,MAAI,MAAMA,WAAG,QAAQ,GAAG;AAGtB,UAAM,WAAW,MAAM,SAAS;AAChC,WAAOA,WAAG,QAAQ;AAClB,UAAM,uCAAuC,MAAM;AACnD,UAAM,oCAAoC;AAC1C,gBAAY;AACZ,UAAM,oCAAoC;AAC1C,QAAI,MAAM,SAAU,CAAC,MAAM,qCAAqC,MAAMA,WAAG,QAAQ,GAAI;AACnF,YAAM,oBAAoB,QAAQ;AAAA,IACpC;AAAA,EACF;AACF;AAEA,SAAS,8BAA8B;AACrC,MACE,aAAa,kBAAkB,MAAM,KACrC,aAAa,kBAAkB,OAAO,KACtC,aAAa,kBAAkB,SAAS,GACxC;AACA,SAAK;AACL,gCAA4B;AAAA,EAC9B,WAAW,aAAa,kBAAkB,MAAM,GAAG;AACjD,qBAAiB;AAAA,EACnB,OAAO;AACL,UAAM,uCAAuC,MAAM;AACnD,UAAM,oCAAoC;AAC1C,6BAAyB;AACzB,UAAM,oCAAoC;AAAA,EAC5C;AACF;AAEA,SAAS,kCAAkC;AACzC,EAAAC,KAAID,WAAG,UAAU;AACjB,8BAA4B;AAC5B,MAAI,MAAMA,WAAG,UAAU,GAAG;AACxB,WAAOC,KAAID,WAAG,UAAU,GAAG;AACzB,kCAA4B;AAAA,IAC9B;AAAA,EACF;AACF;AAEA,SAAS,2BAA2B;AAClC,EAAAC,KAAID,WAAG,SAAS;AAChB,kCAAgC;AAChC,MAAI,MAAMA,WAAG,SAAS,GAAG;AACvB,WAAOC,KAAID,WAAG,SAAS,GAAG;AACxB,sCAAgC;AAAA,IAClC;AAAA,EACF;AACF;AAEA,SAAS,0BAA0B;AACjC,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,WAAO;AAAA,EACT;AACA,SAAO,MAAMA,WAAG,MAAM,KAAK,8CAA8C;AAC3E;AAEA,SAAS,uBAAuB;AAC9B,MAAI,MAAMA,WAAG,IAAI,KAAK,MAAMA,WAAG,KAAK,GAAG;AACrC,SAAK;AACL,WAAO;AAAA,EACT;AAGA,MAAI,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,QAAQ,GAAG;AAC1C,QAAI,QAAQ;AACZ,SAAK;AACL,WAAO,QAAQ,KAAK,CAAC,MAAM,OAAO;AAChC,UAAI,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,QAAQ,GAAG;AAC1C;AAAA,MACF,WAAW,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,QAAQ,GAAG;AACjD;AAAA,MACF;AACA,WAAK;AAAA,IACP;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,gDAAgD;AACvD,QAAM,WAAW,MAAM,SAAS;AAChC,QAAM,qCAAqC,qCAAqC;AAChF,QAAM,oBAAoB,QAAQ;AAClC,SAAO;AACT;AAEA,SAAS,uCAAuC;AAC9C,OAAK;AACL,MAAI,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,QAAQ,GAAG;AAG1C,WAAO;AAAA,EACT;AACA,MAAI,qBAAqB,GAAG;AAC1B,QAAI,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,QAAQ,KAAK,MAAMA,WAAG,EAAE,GAAG;AAK5E,aAAO;AAAA,IACT;AACA,QAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,WAAK;AACL,UAAI,MAAMA,WAAG,KAAK,GAAG;AAEnB,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,qCAAqC,aAAa;AACzD,QAAM,YAAY,gBAAgB,CAAC;AACnC,SAAO,WAAW;AAClB,QAAM,iBAAiB,oCAAoC;AAC3D,MAAI,CAAC,gBAAgB;AACnB,gBAAY;AAAA,EACd;AACA,iBAAe,SAAS;AAC1B;AAEA,SAAS,0CAA0C;AACjD,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,yCAAqCA,WAAG,KAAK;AAAA,EAC/C;AACF;AAEO,SAAS,2BAA2B;AACzC,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,0BAAsB;AAAA,EACxB;AACF;AAEA,SAAS,iBAAiB;AACxB,MAAIC,KAAID,WAAG,KAAK,GAAG;AACjB,gBAAY;AAAA,EACd;AACF;AAQA,SAAS,sCAAsC;AAC7C,QAAM,WAAW,MAAM,SAAS;AAChC,MAAI,aAAa,kBAAkB,QAAQ,GAAG;AAG5C,SAAK;AACL,QAAI,cAAc,kBAAkB,GAAG,GAAG;AAGxC,kBAAY;AACZ,aAAO;AAAA,IACT,WAAW,eAAe,KAAK,MAAMA,WAAG,KAAK,GAAG;AAC9C,WAAK;AACL,UAAI,cAAc,kBAAkB,GAAG,GAAG;AAExC,oBAAY;AAAA,MACd;AACA,aAAO;AAAA,IACT,OAAO;AAEL,YAAM,oBAAoB,QAAQ;AAClC,aAAO;AAAA,IACT;AAAA,EACF,WAAW,eAAe,KAAK,MAAMA,WAAG,KAAK,GAAG;AAE9C,SAAK;AACL,QAAI,aAAa,kBAAkB,GAAG,KAAK,CAAC,sBAAsB,GAAG;AACnE,WAAK;AACL,kBAAY;AACZ,aAAO;AAAA,IACT,OAAO;AAEL,YAAM,oBAAoB,QAAQ;AAClC,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,wBAAwB;AACtC,QAAM,YAAY,gBAAgB,CAAC;AACnC,SAAOA,WAAG,KAAK;AACf,cAAY;AACZ,iBAAe,SAAS;AAC1B;AAEO,SAAS,cAAc;AAC5B,4BAA0B;AAC1B,MAAI,MAAM,qCAAqC,sBAAsB,KAAK,CAACC,KAAID,WAAG,QAAQ,GAAG;AAC3F;AAAA,EACF;AAEA,QAAM,uCAAuC,MAAM;AACnD,QAAM,oCAAoC;AAC1C,4BAA0B;AAC1B,QAAM,oCAAoC;AAE1C,SAAOA,WAAG,QAAQ;AAElB,cAAY;AACZ,SAAOA,WAAG,KAAK;AAEf,cAAY;AACd;AAEA,SAAS,iCAAiC;AACxC,SAAO,aAAa,kBAAkB,SAAS,KAAK,cAAc,MAAMA,WAAG;AAC7E;AAEO,SAAS,4BAA4B;AAC1C,MAAI,wBAAwB,GAAG;AAC7B,qCAAiC,aAAa,cAAc;AAC5D;AAAA,EACF;AACA,MAAI,MAAMA,WAAG,IAAI,GAAG;AAElB,qCAAiC,aAAa,iBAAiB;AAC/D;AAAA,EACF,WAAW,+BAA+B,GAAG;AAE3C,qCAAiC,aAAa,yBAAyB;AACvE;AAAA,EACF;AACA,2BAAyB;AAC3B;AAEO,SAAS,uBAAuB;AACrC,QAAM,YAAY,gBAAgB,CAAC;AACnC,cAAY;AACZ,SAAOA,WAAG,WAAW;AACrB,iBAAe,SAAS;AACxB,kBAAgB;AAClB;AAEO,SAAS,4BAA4B;AAC1C,MAAIC,KAAID,WAAG,WAAW,GAAG;AACvB,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,UAAM,YAAY,gBAAgB,CAAC;AACnC,WAAO,CAAC,MAAMA,WAAG,WAAW,KAAK,CAAC,MAAM,OAAO;AAC7C,kBAAY;AACZ,MAAAC,KAAID,WAAG,KAAK;AAAA,IACd;AAEA,oBAAgB;AAChB,mBAAe,SAAS;AAAA,EAC1B;AACF;AAEA,SAAS,wBAAwB;AAC/B,SAAO,CAAC,MAAMA,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACxC,uCAAmC;AACnC,IAAAC,KAAID,WAAG,KAAK;AAAA,EACd;AACF;AAEA,SAAS,qCAAqC;AAG5C,oBAAkB;AAClB,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,yBAAqB;AAAA,EACvB;AACF;AAEA,SAAS,8BAA8B;AACrC,yBAAuB,KAAK;AAC5B,2BAAyB;AACzB,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,0BAAsB;AAAA,EACxB;AACA,2BAAyB;AAC3B;AAEA,SAAS,8BAA8B;AACrC,yBAAuB,KAAK;AAC5B,2BAAyB;AACzB,SAAOA,WAAG,EAAE;AACZ,cAAY;AACZ,YAAU;AACZ;AAEA,SAAS,oBAAoB;AAE3B,MAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,iBAAa;AAAA,EACf,OAAO;AACL,oBAAgB;AAAA,EAClB;AACA,MAAIC,KAAID,WAAG,EAAE,GAAG;AACd,UAAM,UAAU,MAAM,OAAO,SAAS;AACtC,qBAAiB;AACjB,UAAM,OAAO,OAAO,EAAE,cAAc,MAAM,OAAO;AAAA,EACnD;AACF;AAEA,SAAS,yBAAyB;AAChC,yBAAuB,KAAK;AAC5B,SAAOA,WAAG,MAAM;AAChB,SAAO,CAACC,KAAID,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACtC,sBAAkB;AAClB,IAAAC,KAAID,WAAG,KAAK;AAAA,EACd;AACF;AAEA,SAAS,qBAAqB;AAC5B,SAAOA,WAAG,MAAM;AAChB;AAAA;AAAA,IAAyBA,WAAG;AAAA,EAAM;AACpC;AAEA,SAAS,sCAAsC;AAC7C,yBAAuB,KAAK;AAC5B,MAAIC,KAAID,WAAG,GAAG,GAAG;AACf,wCAAoC;AAAA,EACtC,OAAO;AACL,uBAAmB;AAAA,EACrB;AACF;AAEA,SAAS,0CAA0C;AACjD,MAAI,aAAa,kBAAkB,OAAO,GAAG;AAC3C,oBAAgB;AAAA,EAClB,WAAW,MAAMA,WAAG,MAAM,GAAG;AAC3B,kBAAc;AAAA,EAChB,OAAO;AACL,eAAW;AAAA,EACb;AAEA,MAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,uBAAmB;AAAA,EACrB,OAAO;AACL,cAAU;AAAA,EACZ;AACF;AAEO,SAAS,iCAAiC;AAC/C,0BAAwB;AACxB,SAAOA,WAAG,EAAE;AACZ,yBAAuB;AACvB,YAAU;AACZ;AAEA,SAAS,8BAA8B;AACrC,SAAO,aAAa,kBAAkB,QAAQ,KAAK,cAAc,MAAMA,WAAG;AAC5E;AAEA,SAAS,yBAAyB;AAChC,MAAI,4BAA4B,GAAG;AACjC,mCAA+B;AAAA,EACjC,OAAO;AACL,sBAAkB;AAAA,EACpB;AACF;AAEA,SAAS,iCAAiC;AACxC,mBAAiB,kBAAkB,QAAQ;AAC3C,SAAOA,WAAG,MAAM;AAChB,MAAI,CAAC,MAAMA,WAAG,MAAM,GAAG;AACrB,eAAW;AAAA,EACb;AACA,eAAa;AACb,SAAOA,WAAG,MAAM;AAClB;AAKA,SAAS,oBAAoB;AAC3B,MAAI,iBAAiB,GAAG;AACtB,WAAO;AAAA,EACT;AACA,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAKA,WAAG,WAAW;AACjB,YAAM,YAAY,gBAAgB,CAAC;AACnC,WAAK;AAGL,YAAM,gBAAgB,MAAM;AAC5B;AAAA,QAAc;AAAA;AAAA,QAAiC;AAAA,MAAI;AACnD,qBAAe,SAAS;AACxB,aAAO;AAAA,IACT;AAAA,IACA,KAAKA,WAAG,QAAQ;AACd,YAAM,YAAY,gBAAgB,CAAC;AACnC;AAAA;AAAA,QAA6B;AAAA;AAAA,QAAuB;AAAA,MAAK;AACzD,qBAAe,SAAS;AACxB,aAAO;AAAA,IACT;AAAA,IACA,KAAKA,WAAG,QAAQ;AACd,UAAI,MAAMA,WAAG,MAAM,KAAK,sBAAsB,kBAAkB,KAAK,GAAG;AACtE,cAAM,YAAY,gBAAgB,CAAC;AAEnC,eAAOA,WAAG,MAAM;AAChB,yBAAiB,kBAAkB,KAAK;AACxC,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,+BAAuB;AACvB,uBAAe,SAAS;AACxB,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA,IAEA,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG,MAAM;AACZ,YAAM,YAAY,gBAAgB,CAAC;AACnC,wBAAkB,MAAM,SAASA,WAAG,IAAI;AACxC,qBAAe,SAAS;AACxB,aAAO;AAAA,IACT;AAAA,IACA,KAAKA,WAAG,MAAM;AACZ,YAAM,YAAY,gBAAgB,CAAC;AACnC,YAAM,oBAAoB,MAAM;AAChC,UAAI,UAAU;AACd,UAAI,sBAAsB,kBAAkB,SAAS;AACnD,gDAAwC;AACxC,kBAAU;AAAA,MACZ,OAAO;AACL,kBAAU;AAAA,UAAmB;AAAA;AAAA,UAAuC;AAAA,QAAI;AAAA,MAC1E;AACA,qBAAe,SAAS;AACxB,aAAO;AAAA,IACT;AAAA,IACA;AACE,aAAO;AAAA,EACX;AACF;AAIA,SAAS,8BAA8B;AACrC,SAAO;AAAA,IAAmB,MAAM;AAAA;AAAA,IAAuC;AAAA,EAAI;AAC7E;AAGA,SAAS,2BAA2B,mBAAmB;AACrD,UAAQ,mBAAmB;AAAA,IACzB,KAAK,kBAAkB,UAAU;AAC/B,YAAM,oBAAoB,MAAM,OAAO,SAAS;AAChD,YAAM,UAAU,kBAAkB;AAClC,UAAI,SAAS;AACX,cAAM,OAAO,iBAAiB,EAAE,OAAOA,WAAG;AAC1C,eAAO;AAAA,MACT;AACA;AAAA,IACF;AAAA,IACA,KAAK,kBAAkB;AAGrB,UAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,2BAAmB;AACnB,eAAO;AAAA,MACT;AACA;AAAA,IAEF;AACE,aAAO;AAAA,QAAmB;AAAA;AAAA,QAAuC;AAAA,MAAK;AAAA,EAC1E;AACA,SAAO;AACT;AAcA,SAAS,mBAAmB,mBAAmB,eAAe;AAC5D,UAAQ,mBAAmB;AAAA,IACzB,KAAK,kBAAkB;AACrB,UAAI,sBAAsB,aAAa,KAAK,MAAMA,WAAG,MAAM,GAAG;AAC5D,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA;AAAA,UAA6B;AAAA;AAAA,UAAuB;AAAA,QAAK;AACzD,eAAO;AAAA,MACT;AACA;AAAA,IAEF,KAAK,kBAAkB;AACrB,UAAI,sBAAsB,aAAa,KAAK,MAAMA,WAAG,IAAI,GAAG;AAC1D,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,+BAAuB;AACvB,eAAO;AAAA,MACT;AACA;AAAA,IAEF,KAAK,kBAAkB;AACrB,UAAI,sBAAsB,aAAa,KAAK,MAAMA,WAAG,IAAI,GAAG;AAG1D,cAAM,YAAY,gBAAgB,gBAAgB,IAAI,CAAC;AACvD,oCAA4B;AAC5B,uBAAe,SAAS;AACxB,eAAO;AAAA,MACT;AACA;AAAA,IAEF,KAAK,kBAAkB;AACrB,UAAI,sBAAsB,aAAa,GAAG;AACxC,YAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,gBAAM,YAAY,gBAAgB,gBAAgB,IAAI,CAAC;AACvD,kDAAwC;AACxC,yBAAe,SAAS;AACxB,iBAAO;AAAA,QACT,WAAW,MAAMA,WAAG,IAAI,GAAG;AACzB,gBAAM,YAAY,gBAAgB,gBAAgB,IAAI,CAAC;AACvD,8CAAoC;AACpC,yBAAe,SAAS;AACxB,iBAAO;AAAA,QACT;AAAA,MACF;AACA;AAAA,IAEF,KAAK,kBAAkB;AACrB,UAAI,sBAAsB,aAAa,KAAK,MAAMA,WAAG,IAAI,GAAG;AAC1D,cAAM,YAAY,gBAAgB,gBAAgB,IAAI,CAAC;AACvD,4CAAoC;AACpC,uBAAe,SAAS;AACxB,eAAO;AAAA,MACT;AACA;AAAA,IAEF,KAAK,kBAAkB;AACrB,UAAI,sBAAsB,aAAa,KAAK,MAAMA,WAAG,IAAI,GAAG;AAC1D,cAAM,YAAY,gBAAgB,gBAAgB,IAAI,CAAC;AACvD,oCAA4B;AAC5B,uBAAe,SAAS;AACxB,eAAO;AAAA,MACT;AACA;AAAA,IAEF;AACE;AAAA,EACJ;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,eAAe;AAC5C,MAAI,eAAe;AAIjB,SAAK;AACL,WAAO;AAAA,EACT,OAAO;AACL,WAAO,CAAC,iBAAiB;AAAA,EAC3B;AACF;AAGA,SAAS,sCAAsC;AAC7C,QAAM,WAAW,MAAM,SAAS;AAEhC,wBAAsB;AACtB,sBAAoB;AACpB,0CAAwC;AACxC,SAAOA,WAAG,KAAK;AAEf,MAAI,MAAM,OAAO;AACf,UAAM,oBAAoB,QAAQ;AAClC,WAAO;AAAA,EACT;AAEA,oBAAkB,IAAI;AACtB,SAAO;AACT;AAWA,SAAS,2CAA2C;AAClD,MAAI,MAAM,SAASA,WAAG,WAAW;AAC/B,UAAM,OAAO;AACb,gBAAYA,WAAG,QAAQ;AAAA,EACzB;AACA,uBAAqB;AACvB;AAEA,SAAS,uBAAuB;AAC9B,QAAM,YAAY,gBAAgB,CAAC;AACnC,SAAOA,WAAG,QAAQ;AAClB,SAAO,CAAC,MAAMA,WAAG,WAAW,KAAK,CAAC,MAAM,OAAO;AAC7C,gBAAY;AACZ,IAAAC,KAAID,WAAG,KAAK;AAAA,EACd;AACA,MAAI,CAAC,WAAW;AAQd,mBAAe,SAAS;AACxB,cAAU;AACV,WAAOA,WAAG,WAAW;AACrB,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAAA,EACjD,OAAO;AACL,WAAOA,WAAG,WAAW;AACrB,mBAAe,SAAS;AAAA,EAC1B;AACF;AAEO,SAAS,uBAAuB;AACrC,MAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,YAAQ,MAAM,mBAAmB;AAAA,MAC/B,KAAK,kBAAkB;AAAA,MACvB,KAAK,kBAAkB;AAAA,MACvB,KAAK,kBAAkB;AAAA,MACvB,KAAK,kBAAkB;AAAA,MACvB,KAAK,kBAAkB;AAAA,MACvB,KAAK,kBAAkB;AAAA,MACvB,KAAK,kBAAkB;AACrB,eAAO;AAAA,MACT;AACE;AAAA,IACJ;AAAA,EACF;AAEA,SAAO;AACT;AAMO,SAAS,6BAA6B,eAAe,eAAe;AAEzE,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,yCAAqCA,WAAG,KAAK;AAAA,EAC/C;AAKA,MAAI,CAAC,MAAMA,WAAG,MAAM,KAAK,iBAAiB,GAAG;AAE3C,QAAI,IAAI,MAAM,OAAO,SAAS;AAC9B,WACE,KAAK,MACJ,MAAM,OAAO,CAAC,EAAE,SAAS,iBACxB,MAAM,OAAO,CAAC,EAAE,SAASA,WAAG,YAC5B,MAAM,OAAO,CAAC,EAAE,SAASA,WAAG,UAC9B;AACA,YAAM,OAAO,CAAC,EAAE,SAAS;AACzB;AAAA,IACF;AACA;AAAA,EACF;AAEA,oBAAkB,OAAO,aAAa;AACxC;AAEO,SAAS,iBACd,iBACA,SACA,WACA;AACA,MAAI,CAAC,sBAAsB,KAAKC,KAAID,WAAG,IAAI,GAAG;AAC5C,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,EACF;AAEA,MAAI,MAAMA,WAAG,QAAQ,KAAK,MAAMA,WAAG,SAAS,GAAG;AAG7C,UAAM,WAAW,MAAM,SAAS;AAEhC,QAAI,CAAC,WAAW,gBAAgB,GAAG;AAGjC,YAAM,eAAe,oCAAoC;AACzD,UAAI,cAAc;AAChB;AAAA,MACF;AAAA,IACF;AACA,6CAAyC;AACzC,QAAI,CAAC,WAAWC,KAAID,WAAG,MAAM,GAAG;AAE9B,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,sBAAsB;AAC5D,mCAA6B;AAAA,IAC/B,WAAW,MAAMA,WAAG,SAAS,GAAG;AAE9B,oBAAc;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKE,MAAM,SAASA,WAAG;AAAA,MAEjB,MAAM,SAASA,WAAG,UACjB,QAAQ,MAAM,OAAOA,WAAU,mBAAmB,KAClD,CAAC,sBAAsB;AAAA,MACzB;AAGA,iBAAW;AAAA,IACb;AAEA,QAAI,MAAM,OAAO;AACf,YAAM,oBAAoB,QAAQ;AAAA,IACpC,OAAO;AACL;AAAA,IACF;AAAA,EACF,WAAW,CAAC,WAAW,MAAMA,WAAG,WAAW,KAAK,cAAc,MAAMA,WAAG,UAAU;AAE/E,SAAK;AACL,UAAM,OAAO,eAAe,EAAE,uBAAuB;AAErD,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,sBAAsB;AAE5D,yBAAqB;AACrB,WAAOA,WAAG,MAAM;AAChB,iCAA6B;AAAA,EAC/B;AACA,qBAAmB,iBAAiB,SAAS,SAAS;AACxD;AAEO,SAAS,mBAAmB;AACjC,MAAIC,KAAID,WAAG,OAAO,GAAG;AAInB,QAAI,aAAa,kBAAkB,KAAK,KAAK,cAAc,MAAMA,WAAG,IAAI;AAEtE,uBAAiB,kBAAkB,KAAK;AAAA,IAC1C;AACA,mCAA+B;AAC/B,WAAO;AAAA,EACT,WAAWC,KAAID,WAAG,EAAE,GAAG;AAErB,oBAAgB;AAChB,cAAU;AACV,WAAO;AAAA,EACT,WAAW,cAAc,kBAAkB,GAAG,GAAG;AAG/C,qBAAiB,kBAAkB,UAAU;AAC7C,oBAAgB;AAChB,cAAU;AACV,WAAO;AAAA,EACT,OAAO;AACL,QAAI,aAAa,kBAAkB,KAAK,GAAG;AACzC,YAAM,WAAW,cAAc;AAI/B,UAAI,aAAaA,WAAG,UAAU,aAAaA,WAAG,MAAM;AAClD,aAAK;AAAA,MACP;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;AAYO,SAAS,yBAAyB;AACvC,kBAAgB;AAChB,MAAI,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,MAAM,GAAG;AAEvC,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE;AAAA,EACF;AACA,kBAAgB;AAChB,MAAI,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,MAAM,GAAG;AAEvC,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C;AAAA,EACF;AACA,kBAAgB;AAChB,MAAI,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,MAAM,GAAG;AAEvC,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE;AAAA,EACF;AACA,kBAAgB;AAEhB,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AACjD;AAMO,SAAS,yBAAyB;AACvC,kBAAgB;AAChB,MAAI,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,MAAM,GAAG;AAEvC,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE;AAAA,EACF;AACA,kBAAgB;AAChB,MAAI,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,MAAM,GAAG;AAEvC,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C;AAAA,EACF;AACA,kBAAgB;AAChB,MAAI,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,MAAM,GAAG;AAEvC,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE;AAAA,EACF;AACA,kBAAgB;AAEhB,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAC/C,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AACjD;AAEO,SAAS,oCAAoC;AAClD,MAAI,aAAa,kBAAkB,SAAS,KAAK,cAAc,MAAMA,WAAG,QAAQ;AAC9E,UAAM,OAAOA,WAAG;AAChB,SAAK;AACL,eAAW,MAAM,IAAI;AACrB,WAAO;AAAA,EACT;AACA,MAAI,aAAa,kBAAkB,UAAU,GAAG;AAE9C,UAAM,YAAY,gBAAgB,CAAC;AACnC,uBAAmB,kBAAkB,YAAY,IAAI;AACrD,mBAAe,SAAS;AACxB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,6BAA6B;AAC3C,MAAI,MAAM,SAASA,WAAG,QAAQ;AAC5B,UAAM,QAAQ,wBAAwB;AACtC,QAAI,MAAM,SAASA,WAAG,QAAQ,MAAM,sBAAsB,kBAAkB,OAAO;AACjF,aAAOA,WAAG,MAAM;AAChB,uBAAiB,kBAAkB,KAAK;AACxC,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,6BAAuB;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,kCAAkC,UAAU;AAC1D,QAAM,8BAA8B,MAAM,OAAO;AACjD,mBAAiB;AAAA,IACf,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,oBAAoB,MAAM,OAAO;AACvC,QAAM,QAAQ,yBAAyB;AACvC,MAAI,OAAO;AAIT,UAAM,mBAAmB,WACrB,8BAA8B,IAC9B;AACJ,aAAS,IAAI,kBAAkB,IAAI,mBAAmB,KAAK;AACzD,YAAM,OAAO,CAAC,EAAE,SAAS;AAAA,IAC3B;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAMO,SAAS,2BAA2B,mBAAmB;AAC5D,QAAM,UAAU,2BAA2B,iBAAiB;AAC5D,MAAI,CAAC,SAAS;AACZ,cAAU;AAAA,EACZ;AACF;AAEO,SAAS,2BAA2B;AAEzC,QAAM,YAAY,cAAc,kBAAkB,QAAQ;AAC1D,MAAI,WAAW;AACb,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAAA,EAClD;AAEA,MAAI,qBAAqB;AACzB,MAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,QAAI,WAAW;AACb,YAAM,YAAY,gBAAgB,CAAC;AACnC,2BAAqB,4BAA4B;AACjD,qBAAe,SAAS;AAAA,IAC1B,OAAO;AACL,2BAAqB,4BAA4B;AAAA,IACnD;AAAA,EACF;AACA,MAAI,CAAC,oBAAoB;AACvB,QAAI,WAAW;AACb,YAAM,YAAY,gBAAgB,CAAC;AACnC,qBAAe,IAAI;AACnB,qBAAe,SAAS;AAAA,IAC1B,OAAO;AACL,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF;AACF;AAEO,SAAS,uBAAuB,UAAU;AAC/C,MAAI,aAAa,MAAMA,WAAG,QAAQ,KAAK,MAAMA,WAAG,SAAS,IAAI;AAC3D,6CAAyC;AAAA,EAC3C;AACA,MAAI,cAAc,kBAAkB,WAAW,GAAG;AAChD,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,UAAM,YAAY,gBAAgB,CAAC;AACnC,0BAAsB;AACtB,mBAAe,SAAS;AAAA,EAC1B;AACF;AAEO,SAAS,2BAA2B;AACzC,2BAAyB;AAC3B;AAEO,SAAS,6BAA6B;AAC3C,2BAAyB;AAC3B;AAGO,SAAS,sBAAsB;AACpC,QAAM,YAAY,gBAAgB,CAAC;AACnC,MAAI,CAAC,sBAAsB,GAAG;AAC5B,IAAAC,KAAID,WAAG,IAAI;AAAA,EACb;AACA,2BAAyB;AACzB,iBAAe,SAAS;AAC1B;AAGO,SAAS,2CAA2C;AACzD,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,0BAAsB;AAAA,EACxB;AACF;AAGO,SAAS,mBAAmB,MAAM,gBAAgB;AAEvD,MAAI,cAAc;AAChB,WAAO,0BAA0B,MAAM,cAAc;AAAA,EACvD,OAAO;AACL,WAAO,6BAA6B,MAAM,cAAc;AAAA,EAC1D;AACF;AAEO,SAAS,0BAA0B,MAAM,gBAAgB;AAC9D,MAAI,CAAC,MAAMA,WAAG,QAAQ,GAAG;AACvB,WAAO,qBAAqB,MAAM,cAAc;AAAA,EAClD;AAGA,QAAM,WAAW,MAAM,SAAS;AAChC,MAAI,WAAW,qBAAqB,MAAM,cAAc;AACxD,MAAI,MAAM,OAAO;AACf,UAAM,oBAAoB,QAAQ;AAAA,EACpC,OAAO;AACL,WAAO;AAAA,EACT;AAGA,QAAM,OAAOA,WAAG;AAEhB,wBAAsB;AACtB,aAAW,qBAAqB,MAAM,cAAc;AACpD,MAAI,CAAC,UAAU;AACb,eAAW;AAAA,EACb;AAEA,SAAO;AACT;AAEO,SAAS,6BAA6B,MAAM,gBAAgB;AACjE,MAAI,CAAC,MAAMA,WAAG,QAAQ,GAAG;AACvB,WAAO,qBAAqB,MAAM,cAAc;AAAA,EAClD;AAEA,QAAM,WAAW,MAAM,SAAS;AAEhC,wBAAsB;AACtB,QAAM,WAAW,qBAAqB,MAAM,cAAc;AAC1D,MAAI,CAAC,UAAU;AACb,eAAW;AAAA,EACb;AACA,MAAI,MAAM,OAAO;AACf,UAAM,oBAAoB,QAAQ;AAAA,EACpC,OAAO;AACL,WAAO;AAAA,EACT;AAKA,SAAO,qBAAqB,MAAM,cAAc;AAClD;AAEO,SAAS,eAAe;AAC7B,MAAI,MAAMA,WAAG,KAAK,GAAG;AAGnB,UAAM,WAAW,MAAM,SAAS;AAEhC,yCAAqCA,WAAG,KAAK;AAC7C,QAAI,mBAAmB,EAAG,YAAW;AACrC,QAAI,CAAC,MAAMA,WAAG,KAAK,EAAG,YAAW;AAEjC,QAAI,MAAM,OAAO;AACf,YAAM,oBAAoB,QAAQ;AAAA,IACpC;AAAA,EACF;AACA,SAAOC,KAAID,WAAG,KAAK;AACrB;AAGO,SAAS,iCAAiC;AAC/C,QAAM,YAAY,gBAAgB,CAAC;AACnC,EAAAC,KAAID,WAAG,QAAQ;AACf,2BAAyB;AACzB,iBAAe,SAAS;AAC1B;AAEO,SAAS,iCAAiC;AAC/C,MAAI,MAAMA,WAAG,QAAQ,KAAK,MAAMA,WAAG,SAAS,GAAG;AAC7C,6CAAyC;AAAA,EAC3C;AACA,mCAAiC;AACnC;AA/lDA,IA8cI;AA9cJ;AAAA;AAAA;AAaA;AACA;AACA;AACA;AAgBA;AACA;AASA;AAYA;AAwZkB,KAAC,SAAUE,eAAc;AACzC,YAAM,iBAAiB;AAAG,MAAAA,cAAaA,cAAa,gBAAgB,IAAI,cAAc,IAAI;AAC1F,YAAM,oBAAoB,iBAAiB;AAAG,MAAAA,cAAaA,cAAa,mBAAmB,IAAI,iBAAiB,IAAI;AACpH,YAAM,4BAA4B,oBAAoB;AAAG,MAAAA,cAAaA,cAAa,2BAA2B,IAAI,yBAAyB,IAAI;AAAA,IACjJ,GAAG,iBAAiB,eAAe,CAAC,EAAE;AAAA;AAAA;;;AC9atC,SAAS,eAAe;AACtB,MAAI,aAAa;AACjB,MAAI,mBAAmB;AACvB,SAAO,MAAM;AACX,QAAI,MAAM,OAAO,MAAM,QAAQ;AAC7B,iBAAW,2BAA2B;AACtC;AAAA,IACF;AAEA,UAAM,KAAK,MAAM,WAAW,MAAM,GAAG;AACrC,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,gBAAgB;AAChE,UAAI,MAAM,QAAQ,MAAM,OAAO;AAC7B,YAAI,OAAO,UAAU,UAAU;AAC7B,gBAAM;AACN,sBAAYC,WAAG,WAAW;AAC1B;AAAA,QACF;AACA,yBAAiB,EAAE;AACnB;AAAA,MACF;AACA,UAAI,cAAc,CAAC,kBAAkB;AACnC,oBAAYA,WAAG,YAAY;AAAA,MAC7B,OAAO;AACL,oBAAYA,WAAG,OAAO;AAAA,MACxB;AACA;AAAA,IACF;AAGA,QAAI,OAAO,UAAU,UAAU;AAC7B,mBAAa;AAAA,IACf,WAAW,OAAO,UAAU,SAAS,OAAO,UAAU,kBAAkB,OAAO,UAAU,KAAK;AAC5F,yBAAmB;AAAA,IACrB;AACA,UAAM;AAAA,EACR;AACF;AAEA,SAAS,cAAc,OAAO;AAC5B,QAAM;AACN,aAAS;AACP,QAAI,MAAM,OAAO,MAAM,QAAQ;AAC7B,iBAAW,8BAA8B;AACzC;AAAA,IACF;AAEA,UAAM,KAAK,MAAM,WAAW,MAAM,GAAG;AACrC,QAAI,OAAO,OAAO;AAChB,YAAM;AACN;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACA,cAAYA,WAAG,MAAM;AACvB;AASA,SAAS,cAAc;AACrB,MAAI;AACJ,KAAG;AACD,QAAI,MAAM,MAAM,MAAM,QAAQ;AAC5B,iBAAW,wCAAwC;AACnD;AAAA,IACF;AACA,SAAK,MAAM,WAAW,EAAE,MAAM,GAAG;AAAA,EACnC,SAAS,mBAAmB,EAAE,KAAK,OAAO,UAAU;AACpD,cAAYA,WAAG,OAAO;AACxB;AAGA,SAAS,qBAAqB;AAC5B,kBAAgB;AAClB;AAGA,SAAS,uBAAuB,gBAAgB;AAC9C,qBAAmB;AACnB,MAAI,CAACC,KAAID,WAAG,KAAK,GAAG;AAElB,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB;AACvD;AAAA,EACF;AAEA,qBAAmB;AACrB;AAIA,SAAS,sBAAsB;AAC7B,QAAM,kBAAkB,MAAM,OAAO;AACrC,yBAAuB,eAAe,MAAM;AAC5C,MAAI,SAAS;AACb,SAAO,MAAMA,WAAG,GAAG,GAAG;AACpB,aAAS;AACT,oBAAgB;AAChB,uBAAmB;AAAA,EACrB;AAKA,MAAI,CAAC,QAAQ;AACX,UAAM,aAAa,MAAM,OAAO,eAAe;AAC/C,UAAM,YAAY,MAAM,WAAW,WAAW,KAAK;AACnD,QAAI,aAAa,UAAU,cAAc,aAAa,UAAU,YAAY;AAC1E,iBAAW,iBAAiB;AAAA,IAC9B;AAAA,EACF;AACF;AAGA,SAAS,yBAAyB;AAChC,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAKA,WAAG;AACN,WAAK;AACL,sBAAgB;AAChB,sBAAgB;AAChB;AAAA,IAEF,KAAKA,WAAG;AACN,sBAAgB;AAChB,sBAAgB;AAChB;AAAA,IAEF,KAAKA,WAAG;AACN,sBAAgB;AAChB;AAAA,IAEF;AACE,iBAAW,+DAA+D;AAAA,EAC9E;AACF;AAIA,SAAS,sBAAsB;AAC7B,SAAOA,WAAG,QAAQ;AAClB,kBAAgB;AAClB;AAKA,SAAS,uBAAuB,mBAAmB;AACjD,MAAI,MAAMA,WAAG,SAAS,GAAG;AAEvB,WAAO;AAAA,EACT;AACA,sBAAoB;AACpB,MAAI,qBAAqB;AACvB,8BAA0B;AAAA,EAC5B;AACA,MAAI,oBAAoB;AACxB,SAAO,CAAC,MAAMA,WAAG,KAAK,KAAK,CAAC,MAAMA,WAAG,SAAS,KAAK,CAAC,MAAM,OAAO;AAC/D,QAAIC,KAAID,WAAG,MAAM,GAAG;AAClB,0BAAoB;AACpB,aAAOA,WAAG,QAAQ;AAClB,uBAAiB;AAEjB,sBAAgB;AAChB;AAAA,IACF;AACA,QACE,qBACA,MAAM,MAAM,MAAM,UAAU,KAC5B,MAAM,WAAW,MAAM,KAAK,MAAM,UAAU,cAC5C,MAAM,WAAW,MAAM,QAAQ,CAAC,MAAM,UAAU,cAChD,MAAM,WAAW,MAAM,QAAQ,CAAC,MAAM,UAAU,YAChD;AACA,YAAM,OAAO,iBAAiB,EAAE,UAAU,QAAQ;AAAA,IACpD;AACA,2BAAuB,eAAe,SAAS;AAC/C,QAAI,MAAMA,WAAG,EAAE,GAAG;AAChB,sBAAgB;AAChB,6BAAuB;AAAA,IACzB;AAAA,EACF;AACA,QAAM,gBAAgB,MAAMA,WAAG,KAAK;AACpC,MAAI,eAAe;AAEjB,oBAAgB;AAAA,EAClB;AACA,SAAO;AACT;AAIA,SAAS,yBAAyB;AAChC,MAAI,MAAMA,WAAG,SAAS,GAAG;AAEvB;AAAA,EACF;AACA,sBAAoB;AACtB;AAKA,SAAS,oBAAoB;AAC3B,QAAM,oBAAoB,MAAM,OAAO,SAAS;AAChD,QAAM,OAAO,iBAAiB,EAAE,UAAU,QAAQ;AAClD,MAAI,sBAAsB;AAC1B,QAAM,gBAAgB,uBAAuB,iBAAiB;AAC9D,MAAI,CAAC,eAAe;AAClB,qBAAiB;AACjB,WAAO,MAAM;AACX,cAAQ,MAAM,MAAM;AAAA,QAClB,KAAKA,WAAG;AACN,0BAAgB;AAChB,cAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,4BAAgB;AAChB,mCAAuB;AAIvB,gBAAI,MAAM,OAAO,iBAAiB,EAAE,YAAY,QAAQ,oBAAoB;AAC1E,kBAAI,wBAAwB,GAAG;AAC7B,sBAAM,OAAO,iBAAiB,EAAE,UAAU,QAAQ;AAAA,cACpD,WAAW,sBAAsB,GAAG;AAClC,sBAAM,OAAO,iBAAiB,EAAE,UAAU,QAAQ;AAAA,cACpD;AAAA,YACF;AACA;AAAA,UACF;AACA;AACA,4BAAkB;AAClB,2BAAiB;AACjB;AAAA,QAEF,KAAKA,WAAG;AACN;AACA,2BAAiB;AACjB;AAAA,QAEF,KAAKA,WAAG;AACN,2BAAiB;AACjB;AAAA,QAEF,KAAKA,WAAG;AACN,eAAK;AACL,cAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,gCAAoB;AACpB,6BAAiB;AAIjB,mCAAuB;AAAA,UACzB,OAAO;AAGL,gBAAI,CAAC,MAAMA,WAAG,MAAM,GAAG;AACrB;AACA,8BAAgB;AAAA,YAClB;AACA,6BAAiB;AAAA,UACnB;AAEA;AAAA;AAAA,QAGF;AACE,qBAAW;AACX;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACF;AAIO,SAAS,kBAAkB;AAChC,kBAAgB;AAChB,oBAAkB;AACpB;AAMO,SAAS,kBAAkB;AAChC,QAAM,OAAO,KAAK,IAAIE,OAAM,CAAC;AAC7B,YAAU;AACV,QAAM,QAAQ,MAAM;AACpB,QAAM,OAAO,MAAM,WAAW,MAAM,GAAG;AAEvC,MAAI,oBAAoB,IAAI,GAAG;AAC7B,gBAAY;AAAA,EACd,WAAW,SAAS,UAAU,iBAAiB,SAAS,UAAU,YAAY;AAC5E,kBAAc,IAAI;AAAA,EACpB,OAAO;AAEL,MAAE,MAAM;AACR,YAAQ,MAAM;AAAA,MACZ,KAAK,UAAU;AACb,oBAAYF,WAAG,SAAS;AACxB;AAAA,MACF,KAAK,UAAU;AACb,oBAAYA,WAAG,WAAW;AAC1B;AAAA,MACF,KAAK,UAAU;AACb,oBAAYA,WAAG,KAAK;AACpB;AAAA,MACF,KAAK,UAAU;AACb,oBAAYA,WAAG,EAAE;AACjB;AAAA,MACF,KAAK,UAAU;AACb,oBAAYA,WAAG,MAAM;AACrB;AAAA,MACF,KAAK,UAAU;AACb,oBAAYA,WAAG,GAAG;AAClB;AAAA,MACF,KAAK,UAAU;AACb,oBAAYA,WAAG,KAAK;AACpB;AAAA,MACF;AACE,mBAAW;AAAA,IACf;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB;AAC1B,QAAM,OAAO,KAAK,IAAIE,OAAM,CAAC;AAC7B,QAAM,QAAQ,MAAM;AACpB,eAAa;AACf;AA9WA;AAAA;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACLO,SAAS,sBAAsB,MAAM;AAI1C,MAAI,MAAMC,WAAG,QAAQ,GAAG;AACtB,UAAM,WAAW,cAAc;AAC/B,QAAI,aAAaA,WAAG,SAAS,aAAaA,WAAG,SAAS,aAAaA,WAAG,QAAQ;AAC5E;AAAA,IACF;AAAA,EACF;AACA,uBAAqB,IAAI;AAC3B;AAIO,SAAS,sBAAsB;AACpC,eAAaA,WAAG,QAAQ;AACxB,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,QAAI,qBAAqB;AACvB,4BAAsB;AAAA,IACxB,WAAW,eAAe;AACxB,8BAAwB;AAAA,IAC1B;AAAA,EACF;AACF;AApCA,IAAAC,cAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACiGO,SAAS,gBAAgB,OAAO,OAAO;AAC5C,mBAAiB,IAAI;AACrB,MAAI,MAAMC,WAAG,KAAK,GAAG;AACnB,WAAOC,KAAID,WAAG,KAAK,GAAG;AACpB,uBAAiB,IAAI;AAAA,IACvB;AAAA,EACF;AACF;AASO,SAAS,iBAAiB,OAAO,OAAO,iBAAiB,OAAO;AACrE,MAAI,qBAAqB;AACvB,WAAO,mBAAmB,MAAM,cAAc;AAAA,EAChD,WAAW,eAAe;AACxB,WAAO,qBAAqB,MAAM,cAAc;AAAA,EAClD,OAAO;AACL,WAAO,qBAAqB,MAAM,cAAc;AAAA,EAClD;AACF;AAKO,SAAS,qBAAqB,MAAM,gBAAgB;AACzD,MAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,eAAW;AACX,WAAO;AAAA,EACT;AAEA,MAAI,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,IAAI,KAAK,MAAMA,WAAG,MAAM,GAAG;AAC1D,UAAM,mBAAmB,MAAM;AAAA,EACjC;AAEA,QAAM,WAAW,sBAAsB,IAAI;AAC3C,MAAI,gBAAgB;AAClB,mBAAe;AAAA,EACjB;AACA,MAAI,MAAM,OAAOA,WAAU,WAAW;AACpC,SAAK;AACL,qBAAiB,IAAI;AACrB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAIA,SAAS,sBAAsB,MAAM;AACnC,QAAM,WAAW,aAAa,IAAI;AAClC,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,mBAAiB,IAAI;AACrB,SAAO;AACT;AAEA,SAAS,iBAAiB,MAAM;AAC9B,MAAI,uBAAuB,eAAe;AACxC,0BAAsB,IAAI;AAAA,EAC5B,OAAO;AACL,yBAAqB,IAAI;AAAA,EAC3B;AACF;AAEO,SAAS,qBAAqB,MAAM;AACzC,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,qBAAiB;AACjB,WAAOA,WAAG,KAAK;AACf,qBAAiB,IAAI;AAAA,EACvB;AACF;AAIA,SAAS,aAAa,MAAM;AAC1B,QAAM,kBAAkB,MAAM,OAAO;AACrC,QAAM,WAAW,gBAAgB;AACjC,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,cAAY,iBAAiB,IAAI,IAAI;AACrC,SAAO;AACT;AAOA,SAAS,YAAY,iBAAiB,SAAS,MAAM;AACnD,MACE,wBACCA,WAAG,MAAMA,WAAU,mBAAmB,WACvC,CAAC,sBAAsB,MACtB,cAAc,kBAAkB,GAAG,KAAK,cAAc,kBAAkB,UAAU,IACnF;AACA,UAAM,YAAY,gBAAgB,CAAC;AACnC,gBAAY;AACZ,mBAAe,SAAS;AACxB,cAAU;AACV,gBAAY,iBAAiB,SAAS,IAAI;AAC1C;AAAA,EACF;AAEA,QAAM,OAAO,MAAM,OAAOA,WAAU;AACpC,MAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAMA,WAAG,GAAG,IAAI;AACzC,QAAI,OAAO,SAAS;AAClB,YAAM,KAAK,MAAM;AACjB,WAAK;AACL,UAAI,OAAOA,WAAG,mBAAmB;AAC/B,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,oBAAoB;AAAA,MAC5D;AAEA,YAAM,qBAAqB,MAAM,OAAO;AACxC,sBAAgB;AAEhB,kBAAY,oBAAoB,KAAKA,WAAU,uBAAuB,OAAO,IAAI,MAAM,IAAI;AAC3F,UAAI,OAAOA,WAAG,mBAAmB;AAC/B,cAAM,OAAO,eAAe,EAAE;AAC9B,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE;AAAA,MACxC;AAEA,kBAAY,iBAAiB,SAAS,IAAI;AAAA,IAC5C;AAAA,EACF;AACF;AAIO,SAAS,kBAAkB;AAChC,MAAI,uBAAuB,CAAC,gBAAgBC,KAAID,WAAG,QAAQ,GAAG;AAC5D,yBAAqB;AACrB,WAAO;AAAA,EACT;AACA,MACE,aAAa,kBAAkB,OAAO,KACtC,kBAAkB,MAAM,UAAU,kBAClC,CAAC,sBAAsB,GACvB;AACA,0BAAsB;AACtB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,OAAOA,WAAU,WAAW;AACpC,SAAK;AACL,oBAAgB;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,oBAAoB;AACrC,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,SAAO,MAAM,OAAOA,WAAU,cAAc,CAAC,mBAAmB,GAAG;AAGjE,QAAI,MAAM,SAASA,WAAG,WAAW;AAC/B,YAAM,OAAOA,WAAG;AAAA,IAClB;AACA,SAAK;AAAA,EACP;AACA,SAAO;AACT;AAIO,SAAS,sBAAsB;AACpC,QAAM,kBAAkB,MAAM,OAAO;AACrC,QAAM,WAAW,cAAc;AAC/B,MAAI,UAAU;AACZ,WAAO;AAAA,EACT;AACA,kBAAgB,eAAe;AAG/B,MAAI,MAAM,OAAO,SAAS,mBAAmB,MAAM,OAAO,eAAe,EAAE,sBAAsB;AAC/F,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,qBAAqB;AAAA,EAC7D;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,iBAAiB,UAAU,OAAO;AACzD,MAAI,eAAe;AACjB,wBAAoB,iBAAiB,OAAO;AAAA,EAC9C,OAAO;AACL,wBAAoB,iBAAiB,OAAO;AAAA,EAC9C;AACF;AAEO,SAAS,oBAAoB,iBAAiB,UAAU,OAAO;AACpE,QAAM,YAAY,IAAI,UAAU,KAAK;AACrC,KAAG;AACD,mBAAe,iBAAiB,SAAS,SAAS;AAAA,EACpD,SAAS,CAAC,UAAU,QAAQ,CAAC,MAAM;AACrC;AAEA,SAAS,eAAe,iBAAiB,SAAS,WAAW;AAC3D,MAAI,qBAAqB;AACvB,qBAAiB,iBAAiB,SAAS,SAAS;AAAA,EACtD,WAAW,eAAe;AACxB,uBAAmB,iBAAiB,SAAS,SAAS;AAAA,EACxD,OAAO;AACL,uBAAmB,iBAAiB,SAAS,SAAS;AAAA,EACxD;AACF;AAGO,SAAS,mBACd,iBACA,SACA,WACA;AACA,MAAI,CAAC,WAAWC,KAAID,WAAG,WAAW,GAAG;AACnC,oBAAgB;AAChB,cAAU,OAAO;AAGjB,oBAAgB,iBAAiB,OAAO;AAAA,EAC1C,WAAW,MAAMA,WAAG,WAAW,GAAG;AAChC,UAAM,OAAO,eAAe,EAAE,uBAAuB;AACrD,QAAI,WAAW,cAAc,MAAMA,WAAG,QAAQ;AAC5C,gBAAU,OAAO;AACjB;AAAA,IACF;AACA,SAAK;AACL,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,sBAAsB;AAE5D,QAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,sBAAgB;AAChB,aAAOA,WAAG,QAAQ;AAAA,IACpB,WAAWC,KAAID,WAAG,MAAM,GAAG;AACzB,mCAA6B;AAAA,IAC/B,OAAO;AACL,4BAAsB;AAAA,IACxB;AAAA,EACF,WAAWC,KAAID,WAAG,GAAG,GAAG;AACtB,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,sBAAsB;AAC5D,0BAAsB;AAAA,EACxB,WAAWC,KAAID,WAAG,QAAQ,GAAG;AAC3B,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,sBAAsB;AAC5D,oBAAgB;AAChB,WAAOA,WAAG,QAAQ;AAAA,EACpB,WAAW,CAAC,WAAW,MAAMA,WAAG,MAAM,GAAG;AACvC,QAAI,gBAAgB,GAAG;AAGrB,YAAM,WAAW,MAAM,SAAS;AAChC,YAAM,uBAAuB,MAAM,OAAO;AAC1C,WAAK;AACL,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,sBAAsB;AAE5D,YAAM,gBAAgB,iBAAiB;AAEvC,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAClD,mCAA6B;AAC7B,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAElD,UAAI,sBAAsB,GAAG;AAE3B,cAAM,oBAAoB,QAAQ;AAClC,kBAAU,OAAO;AACjB,cAAM;AAEN,4BAAoB;AACpB,0CAAkC,oBAAoB;AAAA,MACxD;AAAA,IACF,OAAO;AACL,WAAK;AACL,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,sBAAsB;AAC5D,YAAM,gBAAgB,iBAAiB;AACvC,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAClD,mCAA6B;AAC7B,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAAA,IACpD;AAAA,EACF,WAAW,MAAMA,WAAG,SAAS,GAAG;AAE9B,kBAAc;AAAA,EAChB,OAAO;AACL,cAAU,OAAO;AAAA,EACnB;AACF;AAEO,SAAS,kBAAkB;AAGhC,SACE,MAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,sBAAsB,kBAAkB,UAC9E,CAAC,mBAAmB;AAExB;AAEO,SAAS,+BAA+B;AAC7C,MAAI,QAAQ;AACZ,SAAO,CAACC,KAAID,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACtC,QAAI,OAAO;AACT,cAAQ;AAAA,IACV,OAAO;AACL,aAAOA,WAAG,KAAK;AACf,UAAIC,KAAID,WAAG,MAAM,GAAG;AAClB;AAAA,MACF;AAAA,IACF;AAEA,sBAAkB,KAAK;AAAA,EACzB;AACF;AAEA,SAAS,wBAAwB;AAC/B,SAAO,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,KAAK;AAC1C;AAEA,SAAS,kCAAkC,iBAAiB;AAC1D,MAAI,qBAAqB;AACvB,6CAAyC;AAAA,EAC3C,WAAW,eAAe;AACxB,+CAA2C;AAAA,EAC7C;AACA,SAAOA,WAAG,KAAK;AACf,uBAAqB,eAAe;AACtC;AAIA,SAAS,kBAAkB;AACzB,QAAM,kBAAkB,MAAM,OAAO;AACrC,gBAAc;AACd,kBAAgB,iBAAiB,IAAI;AACvC;AAOO,SAAS,gBAAgB;AAC9B,MAAIC,KAAID,WAAG,MAAM,GAAG;AAGlB,oBAAgB;AAChB,WAAO;AAAA,EACT;AAEA,MAAI,MAAMA,WAAG,OAAO,KAAK,MAAMA,WAAG,YAAY,GAAG;AAC/C,iBAAa;AACb,WAAO;AAAA,EACT,WAAW,MAAMA,WAAG,QAAQ,KAAK,cAAc;AAC7C,UAAM,OAAOA,WAAG;AAChB,oBAAgB;AAChB,SAAK;AACL,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,MAAM,qBAAqB,MAAM;AACpD,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AACN,6BAAuB;AAAA;AAAA,IAGzB,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AACN,WAAK;AACL,aAAO;AAAA,IAET,KAAKA,WAAG;AACN,WAAK;AACL,UAAI,MAAMA,WAAG,GAAG,GAAG;AAEjB,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,aAAK;AACL,wBAAgB;AAAA,MAClB;AACA,aAAO;AAAA,IAET,KAAKA,WAAG,MAAM;AACZ,YAAM,kBAAkB,MAAM,OAAO;AACrC,YAAM,gBAAgB,MAAM;AAC5B,YAAM,oBAAoB,MAAM;AAChC,sBAAgB;AAChB,UAAI,sBAAsB,kBAAkB,QAAQ;AAClD,mBAAW;AACX,eAAO;AAAA,MACT,WACE,sBAAsB,kBAAkB,UACxC,MAAMA,WAAG,SAAS,KAClB,CAAC,mBAAmB,GACpB;AACA,aAAK;AACL,sBAAc,eAAe,KAAK;AAClC,eAAO;AAAA,MACT,WACE,cACA,sBAAsB,kBAAkB,UACxC,CAAC,mBAAmB,KACpB,MAAMA,WAAG,IAAI,GACb;AACA,cAAM;AACN,+BAAuB,KAAK;AAC5B,eAAOA,WAAG,KAAK;AAEf,6BAAqB,eAAe;AACpC,eAAO;AAAA,MACT,WAAW,MAAMA,WAAG,GAAG,KAAK,CAAC,mBAAmB,GAAG;AACjD,aAAK;AACL,mBAAW;AACX,eAAO;AAAA,MACT;AAEA,UAAI,cAAc,CAAC,mBAAmB,KAAK,MAAMA,WAAG,KAAK,GAAG;AAC1D,cAAM;AACN,mCAA2B,KAAK;AAChC,eAAOA,WAAG,KAAK;AACf,6BAAqB,eAAe;AACpC,eAAO;AAAA,MACT;AAEA,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,aAAO;AAAA,IACT;AAAA,IAEA,KAAKA,WAAG,KAAK;AACX,WAAK;AACL,iBAAW;AACX,aAAO;AAAA,IACT;AAAA,IAEA,KAAKA,WAAG,QAAQ;AACd,YAAM,WAAW,mCAAmC,UAAU;AAC9D,aAAO;AAAA,IACT;AAAA,IAEA,KAAKA,WAAG;AACN,WAAK;AACL,oBAAcA,WAAG,UAAU,IAAI;AAC/B,aAAO;AAAA,IAET,KAAKA,WAAG;AACN,eAAS,OAAO,KAAK;AACrB,aAAO;AAAA,IAET,KAAKA,WAAG;AACN,8BAAwB;AACxB,aAAO;AAAA,IAET,KAAKA,WAAG;AACN,sBAAgB;AAAA;AAAA,IAGlB,KAAKA,WAAG;AACN,iBAAW,KAAK;AAChB,aAAO;AAAA,IAET,KAAKA,WAAG;AACN,eAAS;AACT,aAAO;AAAA,IAET,KAAKA,WAAG;AACN,oBAAc;AACd,aAAO;AAAA,IAET,KAAKA,WAAG,aAAa;AACnB,WAAK;AACL,sBAAgB;AAChB,aAAO;AAAA,IACT;AAAA,IAEA,KAAKA,WAAG,MAAM;AACZ,YAAM,OAAO,kBAAkB;AAC/B,UAAI,oBAAoB,IAAI,KAAK,SAAS,UAAU,WAAW;AAC7D,8BAAsB;AAAA,MACxB,OAAO;AACL,aAAK;AAAA,MACP;AAEA,aAAO;AAAA,IACT;AAAA,IAEA;AACE,iBAAW;AACX,aAAO;AAAA,EACX;AACF;AAEA,SAAS,wBAAwB;AAC/B,EAAAC,KAAID,WAAG,IAAI;AACX,kBAAgB;AAClB;AAEA,SAAS,0BAA0B;AACjC,QAAM,gBAAgB,MAAM;AAC5B,kBAAgB;AAChB,MAAIC,KAAID,WAAG,GAAG,GAAG;AAEf,oBAAgB;AAAA,EAClB;AACA,gBAAc,eAAe,KAAK;AACpC;AAEO,SAAS,eAAe;AAC7B,OAAK;AACP;AAEO,SAAS,uBAAuB;AACrC,SAAOA,WAAG,MAAM;AAChB,kBAAgB;AAChB,SAAOA,WAAG,MAAM;AAClB;AAGA,SAAS,mCAAmC,YAAY;AAGtD,QAAM,WAAW,MAAM,SAAS;AAEhC,QAAM,kBAAkB,MAAM,OAAO;AACrC,SAAOA,WAAG,MAAM;AAEhB,MAAI,QAAQ;AAEZ,SAAO,CAAC,MAAMA,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACxC,QAAI,OAAO;AACT,cAAQ;AAAA,IACV,OAAO;AACL,aAAOA,WAAG,KAAK;AACf,UAAI,MAAMA,WAAG,MAAM,GAAG;AACpB;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB;AAAA,QAAU;AAAA;AAAA,MAAwB;AAClC,qBAAe;AACf;AAAA,IACF,OAAO;AACL,uBAAiB,OAAO,IAAI;AAAA,IAC9B;AAAA,EACF;AAEA,SAAOA,WAAG,MAAM;AAEhB,MAAI,cAAc,iBAAiB,GAAG;AACpC,UAAM,WAAW,WAAW;AAC5B,QAAI,UAAU;AAGZ,YAAM,oBAAoB,QAAQ;AAClC,YAAM;AAEN,0BAAoB;AACpB,iBAAW;AACX,2BAAqB,eAAe;AACpC,UAAI,MAAM,OAAO;AAKf,cAAM,oBAAoB,QAAQ;AAClC,2CAAmC,KAAK;AACxC,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,mBAAmB;AAC1B,SAAO,MAAMA,WAAG,KAAK,KAAK,CAAC,mBAAmB;AAChD;AAGO,SAAS,aAAa;AAC3B,MAAI,qBAAqB;AACvB,WAAO,aAAa;AAAA,EACtB,WAAW,eAAe;AACxB,WAAO,eAAe;AAAA,EACxB,OAAO;AACL,WAAOC,KAAID,WAAG,KAAK;AAAA,EACrB;AACF;AAEA,SAAS,iBAAiB;AACxB,MAAI,uBAAuB,eAAe;AACxC,wBAAoB;AAAA,EACtB;AACF;AAOA,SAAS,WAAW;AAClB,SAAOA,WAAG,IAAI;AACd,MAAIC,KAAID,WAAG,GAAG,GAAG;AAEf,oBAAgB;AAChB;AAAA,EACF;AACA,iBAAe;AACf,MAAI,eAAe;AACjB,+BAA2B;AAAA,EAC7B;AACA,MAAIC,KAAID,WAAG,MAAM,GAAG;AAClB,kBAAcA,WAAG,MAAM;AAAA,EACzB;AACF;AAEA,SAAS,iBAAiB;AACxB,kBAAgB;AAChB,EAAAC,KAAID,WAAG,WAAW;AACpB;AAEO,SAAS,gBAAgB;AAE9B,oBAAkB;AAElB,oBAAkB;AAClB,SAAO,CAAC,MAAMA,WAAG,SAAS,KAAK,CAAC,MAAM,OAAO;AAC3C,WAAOA,WAAG,YAAY;AACtB,oBAAgB;AAEhB,sBAAkB;AAElB,sBAAkB;AAAA,EACpB;AACA,OAAK;AACP;AAGO,SAAS,SAAS,WAAW,cAAc;AAEhD,QAAM,YAAY,iBAAiB;AACnC,MAAI,QAAQ;AAEZ,OAAK;AACL,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAElD,SAAO,CAACC,KAAID,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACtC,QAAI,OAAO;AACT,cAAQ;AAAA,IACV,OAAO;AACL,aAAOA,WAAG,KAAK;AACf,UAAIC,KAAID,WAAG,MAAM,GAAG;AAClB;AAAA,MACF;AAAA,IACF;AAEA,QAAI,cAAc;AAClB,QAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,YAAM,gBAAgB,MAAM,OAAO;AACnC,kBAAY;AACZ,UAAI,WAAW;AAEb,YAAI,MAAM,OAAO,WAAW,gBAAgB,GAAG;AAC7C,qCAA2B,YAAY;AAAA,QACzC;AACA,YAAIC,KAAID,WAAG,MAAM,GAAG;AAClB;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAEA,QAAI,CAAC,WAAW;AACd,oBAAcC,KAAID,WAAG,IAAI;AAAA,IAC3B;AAEA,QAAI,CAAC,aAAa,aAAa,kBAAkB,MAAM,GAAG;AACxD,UAAI,YAAa,YAAW;AAE5B,sBAAgB;AAChB,UACE,MAAMA,WAAG,KAAK,KACd,MAAMA,WAAG,MAAM,KACf,MAAMA,WAAG,MAAM,KACf,MAAMA,WAAG,EAAE,KACX,MAAMA,WAAG,KAAK,GACd;AAAA,MAEF,OAAO;AACL,YAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,eAAK;AACL,wBAAc;AAAA,QAChB;AACA,0BAAkB,SAAS;AAAA,MAC7B;AAAA,IACF,OAAO;AACL,wBAAkB,SAAS;AAAA,IAC7B;AAEA,sBAAkB,WAAW,cAAc,SAAS;AAAA,EACtD;AAEA,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AACpD;AAEA,SAAS,uBAAuB,WAAW;AAGzC,SACE,CAAC,cACA,MAAMA,WAAG,MAAM;AAAA,EACd,MAAMA,WAAG,GAAG;AAAA,EACZ,MAAMA,WAAG,QAAQ;AAAA,EACjB,MAAMA,WAAG,IAAI;AAAA,EACb,CAAC,EAAE,MAAM,OAAOA,WAAU;AAEhC;AAGA,SAAS,kBAAkB,WAAW,iBAAiB;AAGrD,QAAM,gBAAgB,MAAM;AAC5B,MAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,QAAI,UAAW,YAAW;AAC1B;AAAA,MAAY;AAAA;AAAA,MAAmC;AAAA,IAAK;AACpD,WAAO;AAAA,EACT;AAEA,MAAI,uBAAuB,SAAS,GAAG;AACrC,sBAAkB,eAAe;AACjC;AAAA,MAAY;AAAA;AAAA,MAAmC;AAAA,IAAK;AACpD,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,oBAAoB,WAAW,cAAc;AACpD,MAAIC,KAAID,WAAG,KAAK,GAAG;AACjB,QAAI,WAAW;AACb,wBAAkB,YAAY;AAAA,IAChC,OAAO;AACL,uBAAiB,KAAK;AAAA,IACxB;AACA;AAAA,EACF;AAOA,MAAI;AACJ,MAAI,WAAW;AACb,QAAI,MAAM,eAAe,GAAG;AAC1B,uBAAiB,eAAe;AAAA,IAClC,WAAW,cAAc;AACvB,uBAAiB,eAAe;AAAA,IAClC,OAAO;AACL,uBAAiB,eAAe;AAAA,IAClC;AAAA,EACF,OAAO;AACL,qBAAiB,eAAe;AAAA,EAClC;AACA,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB;AAIvD,oBAAkB,cAAc,IAAI;AACtC;AAEA,SAAS,kBACP,WACA,cACA,iBACA;AACA,MAAI,qBAAqB;AACvB,6BAAyB;AAAA,EAC3B,WAAW,eAAe;AACxB,+BAA2B;AAAA,EAC7B;AACA,QAAM,YAAY,kBAAkB,WAAW,eAAe;AAC9D,MAAI,CAAC,WAAW;AACd,wBAAoB,WAAW,YAAY;AAAA,EAC7C;AACF;AAEO,SAAS,kBAAkB,iBAAiB;AACjD,MAAI,eAAe;AACjB,sBAAkB;AAAA,EACpB;AACA,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAClD,qBAAiB;AACjB,WAAOA,WAAG,QAAQ;AAClB,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAAA,EACpD,OAAO;AACL,QAAI,MAAMA,WAAG,GAAG,KAAK,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,OAAO,GAAG;AAC9E,oBAAc;AAAA,IAChB,OAAO;AACL,4BAAsB;AAAA,IACxB;AAEA,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAAA,EACpD;AACF;AAGO,SAAS,YAAY,eAAe,eAAe;AACxD,QAAM,gBAAgB,iBAAiB;AAEvC,QAAM;AACN,QAAM,kBAAkB,MAAM,OAAO;AACrC,QAAM,iBAAiB;AACvB,sBAAoB,gBAAgB,aAAa;AACjD,6BAA2B,eAAe,aAAa;AACvD,QAAM,gBAAgB,MAAM,OAAO;AACnC,QAAM,OAAO,KAAK,IAAIE,OAAM,iBAAiB,eAAe,IAAI,CAAC;AACjE,QAAM;AACR;AAKO,SAAS,qBAAqB,iBAAiB;AACpD,oBAAkB,IAAI;AACtB,QAAM,gBAAgB,MAAM,OAAO;AACnC,QAAM,OAAO,KAAK,IAAIA,OAAM,iBAAiB,eAAe,IAAI,CAAC;AACjE,QAAM;AACR;AAEO,SAAS,2BAA2B,eAAe,gBAAgB,GAAG;AAC3E,MAAI,qBAAqB;AACvB,iCAA6B,eAAe,aAAa;AAAA,EAC3D,WAAW,eAAe;AACxB,mCAA+B,aAAa;AAAA,EAC9C,OAAO;AACL,sBAAkB,OAAO,aAAa;AAAA,EACxC;AACF;AAEO,SAAS,kBAAkB,iBAAiB,gBAAgB,GAAG;AACpE,QAAM,eAAe,mBAAmB,CAAC,MAAMF,WAAG,MAAM;AAExD,MAAI,cAAc;AAChB,qBAAiB;AAAA,EACnB,OAAO;AACL,eAAW,MAA4B,aAAa;AAAA,EACtD;AACF;AAQA,SAAS,cAAc,OAAO,aAAa,OAAO;AAChD,MAAI,QAAQ;AACZ,SAAO,CAACC,KAAI,KAAK,KAAK,CAAC,MAAM,OAAO;AAClC,QAAI,OAAO;AACT,cAAQ;AAAA,IACV,OAAO;AACL,aAAOD,WAAG,KAAK;AACf,UAAIC,KAAI,KAAK,EAAG;AAAA,IAClB;AACA,sBAAkB,UAAU;AAAA,EAC9B;AACF;AAEA,SAAS,kBAAkB,YAAY;AACrC,MAAI,cAAc,MAAMD,WAAG,KAAK,GAAG;AAAA,EAEnC,WAAW,MAAMA,WAAG,QAAQ,GAAG;AAC7B,gBAAY;AACZ,mBAAe;AAAA,EACjB,WAAW,MAAMA,WAAG,QAAQ,GAAG;AAE7B,SAAK;AAAA,EACP,OAAO;AACL,qBAAiB,OAAO,IAAI;AAAA,EAC9B;AACF;AAGO,SAAS,kBAAkB;AAChC,OAAK;AACL,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAClD;AAGA,SAAS,aAAa;AACpB,kBAAgB;AAClB;AAGA,SAAS,aAAa;AACpB,OAAK;AACL,MAAI,CAAC,MAAMA,WAAG,IAAI,KAAK,CAAC,mBAAmB,GAAG;AAC5C,IAAAC,KAAID,WAAG,IAAI;AACX,qBAAiB;AAAA,EACnB;AACF;AAGA,SAAS,wBAAwB;AAC/B,mBAAiB,kBAAkB,OAAO;AAC1C,SAAOA,WAAG,MAAM;AAIhB,iBAAeA,WAAG,MAAM;AAC1B;AA7/BA,IAwFa;AAxFb;AAAA;AAoBA;AAWA;AACA,IAAAG;AACA;AAUA;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;AAQA;AAWO,IAAM,YAAN,MAAgB;AAAA,MAErB,YAAY,MAAM;AAChB,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AAAA;AAAA;;;AC5CA,SAAS,qBAAqBC,YAAW;AACvC,UACGA,WAAU,SAASC,WAAG,QAAQ,CAAC,EAAED,WAAU,OAAOC,WAAU,gBAC7DD,WAAU,sBAAsB,kBAAkB;AAEtD;AAEA,SAAS,yBAAyB,KAAK;AACrC,QAAM,YAAY,gBAAgB,CAAC;AACnC,SAAO,OAAOC,WAAG,KAAK;AACtB,gBAAc;AACd,iBAAe,SAAS;AAC1B;AAEA,SAAS,qBAAqB;AAC5B,SAAOA,WAAG,MAAM;AAChB,mBAAiB,kBAAkB,OAAO;AAC1C,MAAIC,KAAID,WAAG,MAAM,GAAG;AAClB,oBAAgB;AAChB,WAAOA,WAAG,MAAM;AAAA,EAClB;AACF;AAEA,SAAS,uCAAuC;AAC9C,QAAM,YAAY,gBAAgB,CAAC;AACnC,SAAOA,WAAG,KAAK;AACf,MAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,uBAAmB;AAAA,EACrB,OAAO;AACL,kBAAc;AACd,QAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,yBAAmB;AAAA,IACrB;AAAA,EACF;AACA,iBAAe,SAAS;AAC1B;AAEA,SAAS,wBAAwB;AAC/B,OAAK;AACL;AAAA;AAAA,IAAoC;AAAA,EAAI;AAC1C;AAEA,SAAS,2BAA2B;AAClC,OAAK;AACL,kBAAgB;AAEhB,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,sCAAkC;AAAA,EACpC;AAEA,SAAOA,WAAG,MAAM;AAChB,8BAA4B;AAC5B,SAAOA,WAAG,MAAM;AAEhB,uCAAqC;AAErC,YAAU;AACZ;AAEA,SAAS,mBAAmB;AAC1B,MAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,0BAAsB;AAAA,EACxB,WAAW,MAAMA,WAAG,SAAS,GAAG;AAC9B,6BAAyB;AAAA,EAC3B,WAAW,MAAMA,WAAG,IAAI,GAAG;AACzB,6BAAyB;AAAA,EAC3B,WAAW,cAAc,kBAAkB,OAAO,GAAG;AACnD,QAAIC,KAAID,WAAG,GAAG,GAAG;AACf,oCAA8B;AAAA,IAChC,OAAO;AACL,6BAAuB;AAAA,IACzB;AAAA,EACF,WAAW,aAAa,kBAAkB,KAAK,GAAG;AAChD,8BAA0B;AAAA,EAC5B,WAAW,aAAa,kBAAkB,OAAO,GAAG;AAClD,+BAA2B;AAAA,EAC7B,WAAW,aAAa,kBAAkB,UAAU,GAAG;AACrD,8BAA0B;AAAA,EAC5B,WAAW,MAAMA,WAAG,OAAO,GAAG;AAC5B,sCAAkC;AAAA,EACpC,OAAO;AACL,eAAW;AAAA,EACb;AACF;AAEA,SAAS,2BAA2B;AAClC,OAAK;AACL,qCAAmC;AACnC,YAAU;AACZ;AAEA,SAAS,yBAAyB;AAChC,MAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,kBAAc;AAAA,EAChB,OAAO;AACL,oBAAgB;AAAA,EAClB;AAEA,SAAOA,WAAG,MAAM;AAChB,SAAO,CAAC,MAAMA,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACxC,QAAI,MAAMA,WAAG,OAAO,GAAG;AACrB,WAAK;AACL,kBAAY;AAAA,IACd,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AACA,SAAOA,WAAG,MAAM;AAClB;AAEA,SAAS,oCAAoC;AAC3C,SAAOA,WAAG,OAAO;AAEjB,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,QAAI,MAAMA,WAAG,SAAS,KAAK,MAAMA,WAAG,MAAM,GAAG;AAG3C,uBAAiB;AAAA,IACnB,OAAO;AAEL,oBAAc;AACd,gBAAU;AAAA,IACZ;AAAA,EACF,WACE,MAAMA,WAAG,IAAI;AAAA,EACb,MAAMA,WAAG,SAAS;AAAA,EAClB,MAAMA,WAAG,MAAM;AAAA,EACf,aAAa,kBAAkB,OAAO,GACtC;AACA,qBAAiB;AAAA,EACnB,WACE,MAAMA,WAAG,IAAI;AAAA,EACb,MAAMA,WAAG,MAAM;AAAA,EACf,aAAa,kBAAkB,UAAU;AAAA,EACzC,aAAa,kBAAkB,KAAK;AAAA,EACpC,aAAa,kBAAkB,OAAO,GACtC;AACA,gBAAY;AAAA,EACd,OAAO;AACL,eAAW;AAAA,EACb;AACF;AAEA,SAAS,gCAAgC;AACvC,mBAAiB,kBAAkB,QAAQ;AAC3C,0BAAwB;AACxB,YAAU;AACZ;AAEA,SAAS,4BAA4B;AACnC,OAAK;AACL,qBAAmB;AACrB;AAEA,SAAS,6BAA6B;AACpC,OAAK;AACL,sBAAoB,IAAI;AAC1B;AAEA,SAAS,4BAA4B;AACnC,OAAK;AACL,wBAAsB;AACxB;AAIA,SAAS,sBAAsB,UAAU,OAAO;AAC9C,gCAA8B;AAE9B,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,sCAAkC;AAAA,EACpC;AAEA,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,OAAG;AACD,gCAA0B;AAAA,IAC5B,SAAS,CAAC,WAAWC,KAAID,WAAG,KAAK;AAAA,EACnC;AAEA,MAAI,aAAa,kBAAkB,OAAO,GAAG;AAC3C,SAAK;AACL,OAAG;AACD,gCAA0B;AAAA,IAC5B,SAASC,KAAID,WAAG,KAAK;AAAA,EACvB;AAEA,MAAI,aAAa,kBAAkB,WAAW,GAAG;AAC/C,SAAK;AACL,OAAG;AACD,gCAA0B;AAAA,IAC5B,SAASC,KAAID,WAAG,KAAK;AAAA,EACvB;AAEA,sBAAoB,SAAS,OAAO,OAAO;AAC7C;AAEA,SAAS,4BAA4B;AACnC,mCAAiC,KAAK;AACtC,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,wCAAoC;AAAA,EACtC;AACF;AAEA,SAAS,qBAAqB;AAC5B,wBAAsB;AACxB;AAEA,SAAS,gCAAgC;AACvC,kBAAgB;AAClB;AAEA,SAAS,qBAAqB;AAC5B,gCAA8B;AAE9B,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,sCAAkC;AAAA,EACpC;AAEA,2BAAyBA,WAAG,EAAE;AAC9B,YAAU;AACZ;AAEA,SAAS,oBAAoB,SAAS;AACpC,mBAAiB,kBAAkB,KAAK;AACxC,gCAA8B;AAE9B,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,sCAAkC;AAAA,EACpC;AAGA,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,6BAAyBA,WAAG,KAAK;AAAA,EACnC;AAEA,MAAI,CAAC,SAAS;AACZ,6BAAyBA,WAAG,EAAE;AAAA,EAChC;AACA,YAAU;AACZ;AAEA,SAAS,yBAAyB;AAChC,oBAAkB;AAClB,qCAAmC;AAEnC,MAAIC,KAAID,WAAG,EAAE,GAAG;AACd,kBAAc;AAAA,EAChB;AACF;AAEO,SAAS,oCAAoC;AAClD,QAAM,YAAY,gBAAgB,CAAC;AAEnC,MAAI,MAAMA,WAAG,QAAQ,KAAK,MAAMA,WAAG,kBAAkB,GAAG;AACtD,SAAK;AAAA,EACP,OAAO;AACL,eAAW;AAAA,EACb;AAEA,KAAG;AACD,2BAAuB;AACvB,QAAI,CAAC,MAAMA,WAAG,WAAW,GAAG;AAC1B,aAAOA,WAAG,KAAK;AAAA,IACjB;AAAA,EACF,SAAS,CAAC,MAAMA,WAAG,WAAW,KAAK,CAAC,MAAM;AAC1C,SAAOA,WAAG,WAAW;AACrB,iBAAe,SAAS;AAC1B;AAEA,SAAS,sCAAsC;AAC7C,QAAM,YAAY,gBAAgB,CAAC;AACnC,SAAOA,WAAG,QAAQ;AAClB,SAAO,CAAC,MAAMA,WAAG,WAAW,KAAK,CAAC,MAAM,OAAO;AAC7C,kBAAc;AACd,QAAI,CAAC,MAAMA,WAAG,WAAW,GAAG;AAC1B,aAAOA,WAAG,KAAK;AAAA,IACjB;AAAA,EACF;AACA,SAAOA,WAAG,WAAW;AACrB,iBAAe,SAAS;AAC1B;AAEA,SAAS,yBAAyB;AAChC,mBAAiB,kBAAkB,UAAU;AAC7C,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,OAAG;AACD,gCAA0B;AAAA,IAC5B,SAASC,KAAID,WAAG,KAAK;AAAA,EACvB;AACA,sBAAoB,OAAO,OAAO,KAAK;AACzC;AAEA,SAAS,6BAA6B;AACpC,MAAI,MAAMA,WAAG,GAAG,KAAK,MAAMA,WAAG,MAAM,GAAG;AACrC,kBAAc;AAAA,EAChB,OAAO;AACL,oBAAgB;AAAA,EAClB;AACF;AAEA,SAAS,6BAA6B;AAEpC,MAAI,cAAc,MAAMA,WAAG,OAAO;AAChC,+BAA2B;AAC3B,6BAAyB;AAAA,EAC3B,OAAO;AACL,kBAAc;AAAA,EAChB;AACA,SAAOA,WAAG,QAAQ;AAClB,2BAAyB;AAC3B;AAEA,SAAS,kCAAkC;AAEzC,6BAA2B;AAC3B,SAAOA,WAAG,QAAQ;AAClB,SAAOA,WAAG,QAAQ;AAClB,MAAI,MAAMA,WAAG,QAAQ,KAAK,MAAMA,WAAG,MAAM,GAAG;AAC1C,iCAA6B;AAAA,EAC/B,OAAO;AACL,IAAAC,KAAID,WAAG,QAAQ;AACf,6BAAyB;AAAA,EAC3B;AACF;AAEA,SAAS,+BAA+B;AACtC,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,sCAAkC;AAAA,EACpC;AAEA,SAAOA,WAAG,MAAM;AAChB,SAAO,CAAC,MAAMA,WAAG,MAAM,KAAK,CAAC,MAAMA,WAAG,QAAQ,KAAK,CAAC,MAAM,OAAO;AAC/D,+BAA2B;AAC3B,QAAI,CAAC,MAAMA,WAAG,MAAM,GAAG;AACrB,aAAOA,WAAG,KAAK;AAAA,IACjB;AAAA,EACF;AAEA,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,+BAA2B;AAAA,EAC7B;AACA,SAAOA,WAAG,MAAM;AAChB,2BAAyB;AAC3B;AAEA,SAAS,kCAAkC;AACzC,+BAA6B;AAC/B;AAEA,SAAS,oBAAoB,aAAa,YAAY,YAAY;AAChE,MAAI;AACJ,MAAI,cAAc,MAAMA,WAAG,SAAS,GAAG;AACrC,WAAOA,WAAG,SAAS;AACnB,eAAWA,WAAG;AAAA,EAChB,OAAO;AACL,WAAOA,WAAG,MAAM;AAChB,eAAWA,WAAG;AAAA,EAChB;AAEA,SAAO,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,OAAO;AACvC,QAAI,cAAc,aAAa,kBAAkB,MAAM,GAAG;AACxD,YAAMD,aAAY,cAAc;AAChC,UAAIA,eAAcC,WAAG,SAASD,eAAcC,WAAG,UAAU;AACvD,aAAK;AACL,sBAAc;AAAA,MAChB;AAAA,IACF;AACA,QAAI,eAAe,aAAa,kBAAkB,OAAO,GAAG;AAC1D,YAAMD,aAAY,cAAc;AAChC,UAAIA,eAAcC,WAAG,SAASD,eAAcC,WAAG,UAAU;AACvD,aAAK;AAAA,MACP;AAAA,IACF;AAEA,sBAAkB;AAElB,QAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,UAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,wCAAgC;AAAA,MAClC,OAAO;AACL,mCAA2B;AAAA,MAC7B;AAAA,IACF,WAAW,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,QAAQ,GAAG;AACjD,sCAAgC;AAAA,IAClC,OAAO;AACL,UAAI,aAAa,kBAAkB,IAAI,KAAK,aAAa,kBAAkB,IAAI,GAAG;AAChF,cAAMD,aAAY,cAAc;AAChC,YAAIA,eAAcC,WAAG,QAAQD,eAAcC,WAAG,UAAUD,eAAcC,WAAG,KAAK;AAC5E,eAAK;AAAA,QACP;AAAA,MACF;AAEA,kCAA4B;AAAA,IAC9B;AAEA,4BAAwB;AAAA,EAC1B;AAEA,SAAO,QAAQ;AACjB;AAEA,SAAS,8BAA8B;AACrC,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,WAAOA,WAAG,QAAQ;AAClB,QAAI,CAACC,KAAID,WAAG,KAAK,GAAG;AAClB,MAAAC,KAAID,WAAG,IAAI;AAAA,IACb;AAEA,QAAI,MAAMA,WAAG,MAAM,GAAG;AACpB;AAAA,IACF;AACA,kBAAc;AAAA,EAChB,OAAO;AACL,+BAA2B;AAC3B,QAAI,MAAMA,WAAG,QAAQ,KAAK,MAAMA,WAAG,MAAM,GAAG;AAE1C,mCAA6B;AAAA,IAC/B,OAAO;AACL,MAAAC,KAAID,WAAG,QAAQ;AACf,+BAAyB;AAAA,IAC3B;AAAA,EACF;AACF;AAEA,SAAS,0BAA0B;AACjC,MAAI,CAACC,KAAID,WAAG,IAAI,KAAK,CAACC,KAAID,WAAG,KAAK,KAAK,CAAC,MAAMA,WAAG,MAAM,KAAK,CAAC,MAAMA,WAAG,SAAS,GAAG;AAChF,eAAW;AAAA,EACb;AACF;AAEA,SAAS,iCAAiC,wBAAwB;AAChE,MAAI,CAAC,wBAAwB;AAC3B,oBAAgB;AAAA,EAClB;AACA,SAAOC,KAAID,WAAG,GAAG,GAAG;AAClB,oBAAgB;AAAA,EAClB;AACF;AAEA,SAAS,uBAAuB;AAC9B,mCAAiC,IAAI;AACrC,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,wCAAoC;AAAA,EACtC;AACF;AAEA,SAAS,sBAAsB;AAC7B,SAAOA,WAAG,OAAO;AACjB,uBAAqB;AACvB;AAEA,SAAS,qBAAqB;AAC5B,SAAOA,WAAG,QAAQ;AAElB,SAAO,MAAM,MAAM,MAAM,UAAU,CAAC,MAAMA,WAAG,QAAQ,GAAG;AACtD,kBAAc;AACd,QAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB;AAAA,IACF;AACA,WAAOA,WAAG,KAAK;AAAA,EACjB;AACA,SAAOA,WAAG,QAAQ;AACpB;AAEA,SAAS,6BAA6B;AACpC,QAAMD,aAAY,cAAc;AAChC,MAAIA,eAAcC,WAAG,SAASD,eAAcC,WAAG,UAAU;AACvD,oBAAgB;AAChB,IAAAC,KAAID,WAAG,QAAQ;AACf,6BAAyB;AAAA,EAC3B,OAAO;AACL,kBAAc;AAAA,EAChB;AACF;AAEA,SAAS,8BAA8B;AACrC,SAAO,CAAC,MAAMA,WAAG,MAAM,KAAK,CAAC,MAAMA,WAAG,QAAQ,KAAK,CAAC,MAAM,OAAO;AAC/D,+BAA2B;AAC3B,QAAI,CAAC,MAAMA,WAAG,MAAM,GAAG;AACrB,aAAOA,WAAG,KAAK;AAAA,IACjB;AAAA,EACF;AACA,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,+BAA2B;AAAA,EAC7B;AACF;AAKA,SAAS,uBAAuB;AAC9B,MAAI,gBAAgB;AACpB,QAAM,wBAAwB,MAAM;AAEpC,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAKA,WAAG,MAAM;AACZ,UAAI,aAAa,kBAAkB,UAAU,GAAG;AAC9C,+BAAuB;AACvB;AAAA,MACF;AACA,sBAAgB;AAChB,2BAAqB;AACrB;AAAA,IACF;AAAA,IAEA,KAAKA,WAAG;AACN,0BAAoB,OAAO,OAAO,KAAK;AACvC;AAAA,IAEF,KAAKA,WAAG;AACN,0BAAoB,OAAO,MAAM,KAAK;AACtC;AAAA,IAEF,KAAKA,WAAG;AACN,yBAAmB;AACnB;AAAA,IAEF,KAAKA,WAAG;AACN,wCAAkC;AAClC,aAAOA,WAAG,MAAM;AAChB,kCAA4B;AAC5B,aAAOA,WAAG,MAAM;AAChB,aAAOA,WAAG,KAAK;AACf,oBAAc;AACd;AAAA,IAEF,KAAKA,WAAG;AACN,WAAK;AAGL,UAAI,CAAC,MAAMA,WAAG,MAAM,KAAK,CAAC,MAAMA,WAAG,QAAQ,GAAG;AAC5C,YAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,gBAAM,QAAQ,cAAc;AAC5B,0BAAgB,UAAUA,WAAG,YAAY,UAAUA,WAAG;AAAA,QACxD,OAAO;AACL,0BAAgB;AAAA,QAClB;AAAA,MACF;AAEA,UAAI,eAAe;AACjB,cAAM,qBAAqB;AAC3B,sBAAc;AACd,cAAM,qBAAqB;AAG3B,YACE,MAAM,sBACN,EAAE,MAAMA,WAAG,KAAK,KAAM,MAAMA,WAAG,MAAM,KAAK,cAAc,MAAMA,WAAG,QACjE;AACA,iBAAOA,WAAG,MAAM;AAChB;AAAA,QACF,OAAO;AAEL,UAAAC,KAAID,WAAG,KAAK;AAAA,QACd;AAAA,MACF;AAEA,kCAA4B;AAE5B,aAAOA,WAAG,MAAM;AAChB,aAAOA,WAAG,KAAK;AACf,oBAAc;AACd;AAAA,IAEF,KAAKA,WAAG;AACN,WAAK;AACL,mBAAa;AACb;AAAA,IAEF,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AACN,WAAK;AACL;AAAA,IAEF;AACE,UAAI,MAAM,SAASA,WAAG,SAAS;AAC7B,4BAAoB;AACpB;AAAA,MACF,WAAW,MAAM,OAAOA,WAAU,YAAY;AAC5C,aAAK;AACL,cAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD;AAAA,MACF;AAAA,EACJ;AAEA,aAAW;AACb;AAEA,SAAS,uBAAuB;AAC9B,uBAAqB;AACrB,SAAO,CAAC,mBAAmB,MAAM,MAAMA,WAAG,QAAQ,KAAK,MAAMA,WAAG,WAAW,IAAI;AAC7E,IAAAC,KAAID,WAAG,WAAW;AAClB,WAAOA,WAAG,QAAQ;AAClB,QAAIC,KAAID,WAAG,QAAQ,GAAG;AAAA,IAEtB,OAAO;AAEL,oBAAc;AACd,aAAOA,WAAG,QAAQ;AAAA,IACpB;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB;AAC7B,MAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB,wBAAoB;AAAA,EACtB,OAAO;AACL,yBAAqB;AAAA,EACvB;AACF;AAEA,SAAS,qCAAqC;AAC5C,sBAAoB;AACpB,MAAI,CAAC,MAAM,sBAAsBC,KAAID,WAAG,KAAK,GAAG;AAC9C,kBAAc;AAAA,EAChB;AACF;AAEA,SAAS,4BAA4B;AACnC,EAAAC,KAAID,WAAG,UAAU;AACjB,qCAAmC;AACnC,SAAOC,KAAID,WAAG,UAAU,GAAG;AACzB,uCAAmC;AAAA,EACrC;AACF;AAEA,SAAS,qBAAqB;AAC5B,EAAAC,KAAID,WAAG,SAAS;AAChB,4BAA0B;AAC1B,SAAOC,KAAID,WAAG,SAAS,GAAG;AACxB,8BAA0B;AAAA,EAC5B;AACF;AAEA,SAAS,gBAAgB;AACvB,qBAAmB;AACrB;AAEO,SAAS,0BAA0B;AACxC,2BAAyB;AAC3B;AAEA,SAAS,qCAAqC;AAC5C,kBAAgB;AAChB,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,4BAAwB;AAAA,EAC1B;AACF;AAEO,SAAS,oBAAoB;AAClC,MAAI,MAAMA,WAAG,IAAI,KAAK,MAAMA,WAAG,KAAK,GAAG;AACrC,SAAK;AACL,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,SAAS;AAAA,EACjD;AACF;AAMO,SAAS,+BAA+B,eAAe;AAE5D,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,yCAAqC;AAAA,EACvC;AAEA,oBAAkB,OAAO,aAAa;AACxC;AAEO,SAAS,mBACd,iBACA,SACA,WACA;AACA,MAAI,MAAMA,WAAG,WAAW,KAAK,cAAc,MAAMA,WAAG,UAAU;AAC5D,QAAI,SAAS;AACX,gBAAU,OAAO;AACjB;AAAA,IACF;AACA,SAAK;AACL,wCAAoC;AACpC,WAAOA,WAAG,MAAM;AAChB,iCAA6B;AAC7B;AAAA,EACF,WAAW,CAAC,WAAW,MAAMA,WAAG,QAAQ,GAAG;AACzC,UAAM,WAAW,MAAM,SAAS;AAChC,wCAAoC;AACpC,WAAOA,WAAG,MAAM;AAChB,iCAA6B;AAC7B,QAAI,MAAM,OAAO;AACf,YAAM,oBAAoB,QAAQ;AAAA,IACpC,OAAO;AACL;AAAA,IACF;AAAA,EACF;AACA,qBAAmB,iBAAiB,SAAS,SAAS;AACxD;AAEO,SAAS,6BAA6B;AAC3C,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,UAAM,WAAW,MAAM,SAAS;AAChC,wCAAoC;AACpC,QAAI,MAAM,OAAO;AACf,YAAM,oBAAoB,QAAQ;AAAA,IACpC;AAAA,EACF;AACF;AAGO,SAAS,wBAAwB;AACtC,MAAI,MAAMA,WAAG,IAAI,KAAK,MAAM,sBAAsB,kBAAkB,YAAY;AAC9E,UAAM,YAAY,gBAAgB,CAAC;AACnC,SAAK;AACL,uBAAmB;AACnB,mBAAe,SAAS;AACxB,WAAO;AAAA,EACT,WAAW,aAAa,kBAAkB,KAAK,GAAG;AAChD,6BAAyB;AACzB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEO,SAAS,sCAAsC;AACpD,MAAI,aAAa,kBAAkB,KAAK,GAAG;AACzC,6BAAyB;AACzB,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAGO,SAAS,6BAA6B,mBAAmB;AAC9D,MAAI,sBAAsB,kBAAkB,UAAU;AACpD,QACE,MAAMA,WAAG,MAAM,KACf,MAAMA,WAAG,IAAI,KACb,MAAMA,WAAG,SAAS,KAClB,MAAMA,WAAG,IAAI,KACb,MAAMA,WAAG,OAAO,GAChB;AACA,YAAM,YAAY,gBAAgB,CAAC;AACnC,uBAAiB;AACjB,qBAAe,SAAS;AAAA,IAC1B;AAAA,EACF,WAAW,MAAMA,WAAG,IAAI,GAAG;AACzB,QAAI,sBAAsB,kBAAkB,YAAY;AACtD,YAAM,YAAY,gBAAgB,CAAC;AACnC,yBAAmB;AACnB,qBAAe,SAAS;AAAA,IAC1B,WAAW,sBAAsB,kBAAkB,OAAO;AACxD,YAAM,YAAY,gBAAgB,CAAC;AACnC,yBAAmB;AACnB,qBAAe,SAAS;AAAA,IAC1B,WAAW,sBAAsB,kBAAkB,SAAS;AAC1D,YAAM,YAAY,gBAAgB,CAAC;AACnC,0BAAoB,KAAK;AACzB,qBAAe,SAAS;AAAA,IAC1B;AAAA,EACF;AACA,YAAU;AACZ;AAGO,SAAS,mCAAmC;AACjD,SACE,aAAa,kBAAkB,KAAK,KACpC,aAAa,kBAAkB,UAAU,KACzC,aAAa,kBAAkB,OAAO,KACtC,aAAa,kBAAkB,KAAK;AAExC;AAEO,SAAS,2CAA2C;AACzD,SACE,MAAMA,WAAG,IAAI,MACZ,MAAM,sBAAsB,kBAAkB,SAC7C,MAAM,sBAAsB,kBAAkB,cAC9C,MAAM,sBAAsB,kBAAkB,WAC9C,MAAM,sBAAsB,kBAAkB;AAEpD;AAEO,SAAS,6BAA6B;AAC3C,MAAI,aAAa,kBAAkB,KAAK,GAAG;AACzC,UAAM,YAAY,gBAAgB,CAAC;AACnC,SAAK;AAEL,QAAI,MAAMA,WAAG,MAAM,GAAG;AAEpB,4BAAsB;AACtB,sBAAgB;AAAA,IAClB,OAAO;AAEL,yBAAmB;AAAA,IACrB;AACA,mBAAe,SAAS;AAAA,EAC1B,WAAW,aAAa,kBAAkB,OAAO,GAAG;AAClD,UAAM,YAAY,gBAAgB,CAAC;AACnC,SAAK;AAEL,wBAAoB,KAAK;AACzB,mBAAe,SAAS;AAAA,EAC1B,WAAW,aAAa,kBAAkB,UAAU,GAAG;AACrD,UAAM,YAAY,gBAAgB,CAAC;AACnC,SAAK;AACL,uBAAmB;AACnB,mBAAe,SAAS;AAAA,EAC1B,OAAO;AACL,mBAAe,IAAI;AAAA,EACrB;AACF;AAEO,SAAS,4BAA4B;AAC1C,SAAO,MAAMA,WAAG,IAAI,KAAM,aAAa,kBAAkB,KAAK,KAAK,cAAc,MAAMA,WAAG;AAC5F;AAEO,SAAS,sBAAsB;AACpC,MAAI,cAAc,kBAAkB,KAAK,GAAG;AAC1C,UAAM,YAAY,gBAAgB,CAAC;AACnC,wBAAoB;AACpB,mBAAe,SAAS;AAAA,EAC1B,OAAO;AACL,wBAAoB;AAAA,EACtB;AACF;AAGO,SAAS,yBAAyB,UAAU;AACjD,MAAI,YAAY,MAAMA,WAAG,QAAQ,GAAG;AAClC,wCAAoC;AAAA,EACtC;AACA,MAAI,aAAa,kBAAkB,WAAW,GAAG;AAC/C,UAAM,YAAY,gBAAgB,CAAC;AACnC,SAAK;AACL,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,OAAG;AACD,oCAA8B;AAC9B,UAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,4CAAoC;AAAA,MACtC;AAAA,IACF,SAASC,KAAID,WAAG,KAAK;AACrB,mBAAe,SAAS;AAAA,EAC1B;AACF;AAGO,SAAS,6BAA6B;AAE3C,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,sCAAkC;AAClC,QAAI,CAAC,MAAMA,WAAG,MAAM,EAAG,YAAW;AAAA,EACpC;AACF;AAEO,SAAS,mCAAmC;AACjD,QAAM,YAAY,gBAAgB,CAAC;AACnC,EAAAC,KAAID,WAAG,QAAQ;AACf,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,4BAAwB;AAAA,EAC1B;AACA,iBAAe,SAAS;AAC1B;AAGO,SAAS,iCAAiC;AAC/C,MAAI,MAAMA,WAAG,OAAO,KAAK,aAAa,kBAAkB,KAAK,GAAG;AAC9D,UAAM,KAAK,wBAAwB;AACnC,QAAI,qBAAqB,EAAE,KAAK,GAAG,SAASA,WAAG,UAAU,GAAG,SAASA,WAAG,MAAM;AAC5E,WAAK;AAAA,IACP;AAAA,EACF;AACF;AAGO,SAAS,2BAA2B;AACzC,QAAM,gBACJ,MAAM,sBAAsB,kBAAkB,SAAS,MAAM,SAASA,WAAG;AAC3E,MAAI,eAAe;AACjB,SAAK;AAAA,EACP,OAAO;AACL,oBAAgB;AAAA,EAClB;AAEA,MAAI,aAAa,kBAAkB,GAAG,KAAK,CAAC,sBAAsB,kBAAkB,GAAG,GAAG;AACxF,oBAAgB;AAChB,QAAI,iBAAiB,CAAC,MAAMA,WAAG,IAAI,KAAK,EAAE,MAAM,OAAOA,WAAU,aAAa;AAAA,IAE9E,OAAO;AAEL,sBAAgB;AAAA,IAClB;AAAA,EACF,OAAO;AACL,QAAI,kBAAkB,MAAMA,WAAG,IAAI,KAAK,CAAC,EAAE,MAAM,OAAOA,WAAU,cAAc;AAE9E,sBAAgB;AAAA,IAClB;AACA,QAAI,cAAc,kBAAkB,GAAG,GAAG;AACxC,sBAAgB;AAAA,IAClB;AAAA,EACF;AACF;AAGO,SAAS,+BAA+B;AAG7C,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,UAAM,YAAY,gBAAgB,CAAC;AACnC,sCAAkC;AAClC,mBAAe,SAAS;AAAA,EAC1B;AACF;AAGO,SAAS,wBAAwB;AACtC,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,4BAAwB;AAAA,EAC1B;AACF;AAGO,SAAS,6CAA6C;AAC3D,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,UAAM,wBAAwB,MAAM;AACpC,UAAM,qBAAqB;AAC3B,4BAAwB;AACxB,UAAM,qBAAqB;AAAA,EAC7B;AACF;AAYO,SAAS,qBAAqB,MAAM,gBAAgB;AACzD,MAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,UAAM,WAAW,MAAM,SAAS;AAChC,QAAI,WAAW,qBAAqB,MAAM,cAAc;AACxD,QAAI,MAAM,OAAO;AACf,YAAM,oBAAoB,QAAQ;AAClC,YAAM,OAAOA,WAAG;AAAA,IAClB,OAAO;AACL,aAAO;AAAA,IACT;AAEA,UAAM,YAAY,gBAAgB,CAAC;AACnC,sCAAkC;AAClC,mBAAe,SAAS;AACxB,eAAW,qBAAqB,MAAM,cAAc;AACpD,QAAI,UAAU;AACZ,aAAO;AAAA,IACT;AACA,eAAW;AAAA,EACb;AAEA,SAAO,qBAAqB,MAAM,cAAc;AAClD;AAGO,SAAS,iBAAiB;AAC/B,MAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,UAAM,YAAY,gBAAgB,CAAC;AACnC,UAAM,WAAW,MAAM,SAAS;AAEhC,UAAM,wBAAwB,MAAM;AACpC,UAAM,qBAAqB;AAC3B,yCAAqC;AACrC,UAAM,qBAAqB;AAE3B,QAAI,mBAAmB,EAAG,YAAW;AACrC,QAAI,CAAC,MAAMA,WAAG,KAAK,EAAG,YAAW;AAEjC,QAAI,MAAM,OAAO;AACf,YAAM,oBAAoB,QAAQ;AAAA,IACpC;AACA,mBAAe,SAAS;AAAA,EAC1B;AACA,SAAOC,KAAID,WAAG,KAAK;AACrB;AAEO,SAAS,oBAAoB,iBAAiB,UAAU,OAAO;AACpE,MACE,MAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,sBAAsB,kBAAkB,UAC9E,MAAMA,WAAG,QAAQ,GACjB;AACA,UAAM,WAAW,MAAM,SAAS;AAChC,UAAM,WAAW,kCAAkC;AACnD,QAAI,YAAY,CAAC,MAAM,OAAO;AAC5B;AAAA,IACF;AACA,UAAM,oBAAoB,QAAQ;AAAA,EACpC;AAEA,sBAAoB,iBAAiB,OAAO;AAC9C;AAGA,SAAS,oCAAoC;AAC3C,QAAM;AACN,QAAM,kBAAkB,MAAM,OAAO;AACrC,sBAAoB;AACpB,MAAI,CAAC,WAAW,GAAG;AACjB,WAAO;AAAA,EACT;AACA,uBAAqB,eAAe;AACpC,SAAO;AACT;AAEA,SAAS,2BAA2B;AAClC,mBAAiB,kBAAkB,KAAK;AACxC,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,kBAAgB;AAChB,oBAAkB;AACpB;AAEA,SAAS,oBAAoB;AAC3B,MAAI,cAAc,kBAAkB,GAAG,GAAG;AACxC,SAAK;AAAA,EACP;AACA,SAAOA,WAAG,MAAM;AAChB,uBAAqB;AACrB,SAAOA,WAAG,MAAM;AAClB;AAEA,SAAS,uBAAuB;AAC9B,SAAO,CAAC,MAAMA,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACxC,QAAIC,KAAID,WAAG,QAAQ,GAAG;AACpB;AAAA,IACF;AACA,wBAAoB;AACpB,QAAI,CAAC,MAAMA,WAAG,MAAM,GAAG;AACrB,aAAOA,WAAG,KAAK;AAAA,IACjB;AAAA,EACF;AACF;AAEA,SAAS,sBAAsB;AAC7B,kBAAgB;AAChB,MAAIC,KAAID,WAAG,EAAE,GAAG;AAEd,SAAK;AAAA,EACP;AACF;AAhlCA;AAAA;AAEA;AAUA;AACA;AACA;AACA;AAcA;AASA;AAAA;AAAA;;;ACoDO,SAAS,gBAAgB;AAC9B,iBAAeE,WAAG,GAAG;AACrB,QAAM,OAAO,KAAK,IAAIC,OAAM,GAAG,MAAM,OAAO,QAAQ,IAAI,CAAC;AACzD,MAAI,MAAM,eAAe,GAAG;AAC1B,UAAM,IAAI,MAAM,uCAAuC,MAAM,UAAU,EAAE;AAAA,EAC3E;AACA,SAAO,IAAI,KAAK,MAAM,QAAQ,MAAM,MAAM;AAC5C;AASO,SAAS,eAAe,aAAa;AAC1C,MAAI,eAAe;AACjB,QAAI,sBAAsB,GAAG;AAC3B;AAAA,IACF;AAAA,EACF;AACA,MAAI,MAAMD,WAAG,EAAE,GAAG;AAChB,oBAAgB;AAAA,EAClB;AACA,wBAAsB,WAAW;AACnC;AAEA,SAAS,sBAAsB,aAAa;AAC1C,MAAI,qBAAqB;AACvB,QAAI,2BAA2B,GAAG;AAChC;AAAA,IACF;AAAA,EACF;AAEA,QAAM,YAAY,MAAM;AAMxB,UAAQ,WAAW;AAAA,IACjB,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AACN,kCAA4B;AAC5B;AAAA,IACF,KAAKA,WAAG;AACN,6BAAuB;AACvB;AAAA,IACF,KAAKA,WAAG;AACN,uBAAiB;AACjB;AAAA,IACF,KAAKA,WAAG;AACN,wBAAkB;AAClB;AAAA,IACF,KAAKA,WAAG;AACN,UAAI,cAAc,MAAMA,WAAG,IAAK;AAChC,UAAI,CAAC,YAAa,YAAW;AAC7B,6BAAuB;AACvB;AAAA,IAEF,KAAKA,WAAG;AACN,UAAI,CAAC,YAAa,YAAW;AAC7B,iBAAW,IAAI;AACf;AAAA,IAEF,KAAKA,WAAG;AACN,uBAAiB;AACjB;AAAA,IACF,KAAKA,WAAG;AACN,2BAAqB;AACrB;AAAA,IACF,KAAKA,WAAG;AACN,2BAAqB;AACrB;AAAA,IACF,KAAKA,WAAG;AACN,0BAAoB;AACpB;AAAA,IACF,KAAKA,WAAG;AACN,wBAAkB;AAClB;AAAA,IAEF,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG;AACN,UAAI,CAAC,YAAa,YAAW;AAAA;AAAA,IAE/B,KAAKA,WAAG;AACN,wBAAkB,cAAcA,WAAG,IAAI;AACvC;AAAA,IAEF,KAAKA,WAAG;AACN,0BAAoB;AACpB;AAAA,IACF,KAAKA,WAAG;AACN,iBAAW;AACX;AAAA,IACF,KAAKA,WAAG;AACN,0BAAoB;AACpB;AAAA,IACF,KAAKA,WAAG;AAAA,IACR,KAAKA,WAAG,SAAS;AACf,YAAM,WAAW,cAAc;AAC/B,UAAI,aAAaA,WAAG,UAAU,aAAaA,WAAG,KAAK;AACjD;AAAA,MACF;AACA,WAAK;AACL,UAAI,cAAcA,WAAG,SAAS;AAC5B,oBAAY;AAAA,MACd,OAAO;AACL,oBAAY;AAAA,MACd;AACA;AAAA,IACF;AAAA,IACA,KAAKA,WAAG;AACN,UAAI,MAAM,sBAAsB,kBAAkB,QAAQ;AACxD,cAAM,gBAAgB,MAAM;AAE5B,cAAM,WAAW,MAAM,SAAS;AAChC,aAAK;AACL,YAAI,MAAMA,WAAG,SAAS,KAAK,CAAC,mBAAmB,GAAG;AAChD,iBAAOA,WAAG,SAAS;AACnB,wBAAc,eAAe,IAAI;AACjC;AAAA,QACF,OAAO;AACL,gBAAM,oBAAoB,QAAQ;AAAA,QACpC;AAAA,MACF,WACE,MAAM,sBAAsB,kBAAkB,UAC9C,CAAC,sBAAsB;AAAA;AAAA,MAGvB,cAAc,MAAMA,WAAG,MACvB;AACA,0BAAkB,IAAI;AACtB;AAAA,MACF,WAAW,iBAAiB,GAAG;AAC7B,yBAAiB,kBAAkB,MAAM;AACzC,0BAAkB,IAAI;AACtB;AAAA,MACF;AAAA,IACF;AAEE;AAAA,EACJ;AAOA,QAAM,sBAAsB,MAAM,OAAO;AACzC,kBAAgB;AAChB,MAAI,aAAa;AACjB,MAAI,MAAM,OAAO,WAAW,sBAAsB,GAAG;AACnD,UAAM,QAAQ,MAAM,OAAO,MAAM,OAAO,SAAS,CAAC;AAClD,QAAI,MAAM,SAASA,WAAG,MAAM;AAC1B,mBAAa,MAAM;AAAA,IACrB;AAAA,EACF;AACA,MAAI,cAAc,MAAM;AACtB,cAAU;AACV;AAAA,EACF;AACA,MAAIE,KAAIF,WAAG,KAAK,GAAG;AACjB,0BAAsB;AAAA,EACxB,OAAO;AAEL,6BAAyB,UAAU;AAAA,EACrC;AACF;AAuBA,SAAS,mBAAmB;AAC1B,MAAI,CAAC,aAAa,kBAAkB,MAAM,GAAG;AAC3C,WAAO;AAAA,EACT;AACA,QAAM,WAAW,MAAM,SAAS;AAEhC,OAAK;AACL,MAAI,CAAC,aAAa,kBAAkB,MAAM,KAAK,sBAAsB,GAAG;AACtE,UAAM,oBAAoB,QAAQ;AAClC,WAAO;AAAA,EACT;AAEA,OAAK;AACL,MAAI,CAAC,MAAMA,WAAG,IAAI,KAAK,sBAAsB,GAAG;AAC9C,UAAM,oBAAoB,QAAQ;AAClC,WAAO;AAAA,EACT;AACA,QAAM,oBAAoB,QAAQ;AAClC,SAAO;AACT;AAEO,SAAS,kBAAkB;AAChC,SAAO,MAAMA,WAAG,EAAE,GAAG;AACnB,mBAAe;AAAA,EACjB;AACF;AAEA,SAAS,iBAAiB;AACxB,OAAK;AACL,MAAIE,KAAIF,WAAG,MAAM,GAAG;AAClB,oBAAgB;AAChB,WAAOA,WAAG,MAAM;AAAA,EAClB,OAAO;AACL,oBAAgB;AAChB,WAAOE,KAAIF,WAAG,GAAG,GAAG;AAClB,sBAAgB;AAAA,IAClB;AACA,iCAA6B;AAAA,EAC/B;AACF;AAEA,SAAS,+BAA+B;AACtC,MAAI,qBAAqB;AACvB,mCAA+B;AAAA,EACjC,OAAO;AACL,qCAAiC;AAAA,EACnC;AACF;AAEO,SAAS,mCAAmC;AACjD,MAAIE,KAAIF,WAAG,MAAM,GAAG;AAClB,iCAA6B;AAAA,EAC/B;AACF;AAEA,SAAS,8BAA8B;AACrC,OAAK;AACL,MAAI,CAAC,iBAAiB,GAAG;AACvB,oBAAgB;AAChB,cAAU;AAAA,EACZ;AACF;AAEA,SAAS,yBAAyB;AAChC,OAAK;AACL,YAAU;AACZ;AAEA,SAAS,mBAAmB;AAC1B,OAAK;AACL,iBAAe,KAAK;AACpB,SAAOA,WAAG,MAAM;AAChB,uBAAqB;AACrB,EAAAE,KAAIF,WAAG,IAAI;AACb;AAEA,SAAS,oBAAoB;AAC3B,QAAM;AACN,QAAM,kBAAkB,MAAM,OAAO;AACrC,6BAA2B;AAC3B,QAAM,gBAAgB,MAAM,OAAO;AACnC,QAAM,OAAO,KAAK,IAAIC,OAAM,iBAAiB,eAAe,KAAK,CAAC;AAClE,QAAM;AACR;AAOA,SAAS,gBAAgB;AACvB,MAAI,CAAC,aAAa,kBAAkB,MAAM,GAAG;AAC3C,WAAO;AAAA,EACT;AAGA,MAAI,sBAAsB,kBAAkB,GAAG,GAAG;AAChD,WAAO;AAAA,EACT;AACA,SAAO;AACT;AASA,SAAS,6BAA6B;AACpC,OAAK;AAEL,MAAI,WAAW;AACf,MAAI,aAAa,kBAAkB,MAAM,GAAG;AAC1C,eAAW;AACX,SAAK;AAAA,EACP;AACA,SAAOD,WAAG,MAAM;AAEhB,MAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,QAAI,UAAU;AACZ,iBAAW;AAAA,IACb;AACA,aAAS;AACT;AAAA,EACF;AAEA,QAAM,eAAe,iBAAiB;AACtC,MAAI,gBAAgB,MAAMA,WAAG,IAAI,KAAK,MAAMA,WAAG,IAAI,KAAK,MAAMA,WAAG,MAAM,KAAK,cAAc,GAAG;AAC3F,QAAI,cAAc;AAChB,uBAAiB,kBAAkB,MAAM;AAAA,IAC3C;AACA,SAAK;AACL,aAAS,MAAM,MAAM,SAASA,WAAG,IAAI;AACrC,QAAI,MAAMA,WAAG,GAAG,KAAK,aAAa,kBAAkB,GAAG,GAAG;AACxD,iBAAW,QAAQ;AACnB;AAAA,IACF;AACA,aAAS;AACT;AAAA,EACF;AAEA,kBAAgB,IAAI;AACpB,MAAI,MAAMA,WAAG,GAAG,KAAK,aAAa,kBAAkB,GAAG,GAAG;AACxD,eAAW,QAAQ;AACnB;AAAA,EACF;AACA,MAAI,UAAU;AACZ,eAAW;AAAA,EACb;AACA,WAAS;AACX;AAEA,SAAS,yBAAyB;AAChC,QAAM,gBAAgB,MAAM;AAC5B,OAAK;AACL,gBAAc,eAAe,IAAI;AACnC;AAEA,SAAS,mBAAmB;AAC1B,OAAK;AACL,uBAAqB;AACrB,iBAAe,KAAK;AACpB,MAAIE,KAAIF,WAAG,KAAK,GAAG;AACjB,mBAAe,KAAK;AAAA,EACtB;AACF;AAEA,SAAS,uBAAuB;AAC9B,OAAK;AAML,MAAI,CAAC,iBAAiB,GAAG;AACvB,oBAAgB;AAChB,cAAU;AAAA,EACZ;AACF;AAEA,SAAS,uBAAuB;AAC9B,OAAK;AACL,uBAAqB;AACrB,QAAM;AACN,QAAM,kBAAkB,MAAM,OAAO;AACrC,SAAOA,WAAG,MAAM;AAGhB,SAAO,CAAC,MAAMA,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACxC,QAAI,MAAMA,WAAG,KAAK,KAAK,MAAMA,WAAG,QAAQ,GAAG;AACzC,YAAM,SAAS,MAAMA,WAAG,KAAK;AAC7B,WAAK;AACL,UAAI,QAAQ;AACV,wBAAgB;AAAA,MAClB;AACA,aAAOA,WAAG,KAAK;AAAA,IACjB,OAAO;AACL,qBAAe,IAAI;AAAA,IACrB;AAAA,EACF;AACA,OAAK;AACL,QAAM,gBAAgB,MAAM,OAAO;AACnC,QAAM,OAAO,KAAK,IAAIC,OAAM,iBAAiB,eAAe,KAAK,CAAC;AAClE,QAAM;AACR;AAEA,SAAS,sBAAsB;AAC7B,OAAK;AACL,kBAAgB;AAChB,YAAU;AACZ;AAEA,SAAS,wBAAwB;AAC/B;AAAA,IAAiB;AAAA;AAAA,EAAuB;AAExC,MAAI,qBAAqB;AACvB,6BAAyB;AAAA,EAC3B;AACF;AAEA,SAAS,oBAAoB;AAC3B,OAAK;AAEL,aAAW;AAEX,MAAI,MAAMD,WAAG,MAAM,GAAG;AACpB,SAAK;AACL,QAAI,8BAA8B;AAClC,QAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,YAAM;AACN,oCAA8B,MAAM,OAAO;AAC3C,aAAOA,WAAG,MAAM;AAChB,4BAAsB;AACtB,aAAOA,WAAG,MAAM;AAAA,IAClB;AACA,eAAW;AACX,QAAI,+BAA+B,MAAM;AAGvC,YAAM,gBAAgB,MAAM,OAAO;AACnC,YAAM,OAAO,KAAK,IAAIC,OAAM,6BAA6B,eAAe,KAAK,CAAC;AAC9E,YAAM;AAAA,IACR;AAAA,EACF;AACA,MAAIC,KAAIF,WAAG,QAAQ,GAAG;AACpB,eAAW;AAAA,EACb;AACF;AAEO,SAAS,kBAAkB,cAAc;AAC9C,OAAK;AACL,WAAS,OAAO,YAAY;AAC5B,YAAU;AACZ;AAEA,SAAS,sBAAsB;AAC7B,OAAK;AACL,uBAAqB;AACrB,iBAAe,KAAK;AACtB;AAEA,SAAS,sBAAsB;AAC7B,OAAK;AACP;AAEA,SAAS,wBAAwB;AAC/B,iBAAe,IAAI;AACrB;AAMA,SAAS,yBAAyB,mBAAmB;AACnD,MAAI,qBAAqB;AACvB,+BAA2B,iBAAiB;AAAA,EAC9C,WAAW,eAAe;AACxB,iCAA6B,iBAAiB;AAAA,EAChD,OAAO;AACL,cAAU;AAAA,EACZ;AACF;AAGO,SAAS,WAAW,kBAAkB,OAAO,YAAY,GAAG;AACjE,QAAM,kBAAkB,MAAM,OAAO;AACrC,QAAM;AACN,SAAOA,WAAG,MAAM;AAChB,MAAI,WAAW;AACb,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAAA,EACpD;AACA,iBAAeA,WAAG,MAAM;AACxB,MAAI,WAAW;AACb,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAAA,EACpD;AACA,QAAM,gBAAgB,MAAM,OAAO;AACnC,QAAM,OAAO,KAAK,IAAIC,OAAM,iBAAiB,eAAe,eAAe,CAAC;AAC5E,QAAM;AACR;AAEO,SAAS,eAAe,KAAK;AAClC,SAAO,CAACC,KAAI,GAAG,KAAK,CAAC,MAAM,OAAO;AAChC,mBAAe,IAAI;AAAA,EACrB;AACF;AAMA,SAAS,WAAW;AAClB,SAAOF,WAAG,IAAI;AACd,MAAI,CAAC,MAAMA,WAAG,IAAI,GAAG;AACnB,oBAAgB;AAAA,EAClB;AACA,SAAOA,WAAG,IAAI;AACd,MAAI,CAAC,MAAMA,WAAG,MAAM,GAAG;AACrB,oBAAgB;AAAA,EAClB;AACA,SAAOA,WAAG,MAAM;AAChB,iBAAe,KAAK;AACtB;AAKA,SAAS,WAAW,UAAU;AAC5B,MAAI,UAAU;AACZ,kBAAc,kBAAkB,GAAG;AAAA,EACrC,OAAO;AACL,SAAK;AAAA,EACP;AACA,kBAAgB;AAChB,SAAOA,WAAG,MAAM;AAChB,iBAAe,KAAK;AACtB;AAIA,SAAS,SAAS,OAAO,cAAc;AACrC,SAAO,MAAM;AACX,iBAAa,YAAY;AACzB,QAAIE,KAAIF,WAAG,EAAE,GAAG;AACd,YAAM,UAAU,MAAM,OAAO,SAAS;AACtC,uBAAiB,KAAK;AACtB,YAAM,OAAO,OAAO,EAAE,cAAc,MAAM,OAAO;AAAA,IACnD;AACA,QAAI,CAACE,KAAIF,WAAG,KAAK,GAAG;AAClB;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,aAAa,cAAc;AAClC,mBAAiB,YAAY;AAC7B,MAAI,qBAAqB;AACvB,wBAAoB;AAAA,EACtB,WAAW,eAAe;AACxB,0BAAsB;AAAA,EACxB;AACF;AAKO,SAAS,cACd,eACA,aACA,aAAa,OACb;AACA,MAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,SAAK;AAAA,EACP;AAEA,MAAI,eAAe,CAAC,cAAc,CAAC,MAAMA,WAAG,IAAI,KAAK,CAAC,MAAMA,WAAG,MAAM,GAAG;AACtE,eAAW;AAAA,EACb;AAEA,MAAI,2BAA2B;AAE/B,MAAI,MAAMA,WAAG,IAAI,GAAG;AAGlB,QAAI,CAAC,aAAa;AAChB,iCAA2B,MAAM,OAAO;AACxC,YAAM;AAAA,IACR;AACA,2BAAuB,KAAK;AAAA,EAC9B;AAEA,QAAM,kBAAkB,MAAM,OAAO;AACrC,QAAM;AACN,sBAAoB;AACpB,6BAA2B,aAAa;AACxC,QAAM,gBAAgB,MAAM,OAAO;AAGnC,QAAM,OAAO,KAAK,IAAIC,OAAM,iBAAiB,eAAe,IAAI,CAAC;AACjE,QAAM;AACN,MAAI,6BAA6B,MAAM;AACrC,UAAM,OAAO,KAAK,IAAIA,OAAM,0BAA0B,eAAe,IAAI,CAAC;AAC1E,UAAM;AAAA,EACR;AACF;AAEO,SAAS,oBACd,iBAAiB,OACjB,gBAAgB,GAChB;AACA,MAAI,qBAAqB;AACvB,+BAA2B;AAAA,EAC7B,WAAW,eAAe;AACxB,iCAA6B;AAAA,EAC/B;AAEA,SAAOD,WAAG,MAAM;AAChB,MAAI,eAAe;AACjB,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAAA,EACpD;AACA;AAAA,IACEA,WAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,eAAe;AACjB,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAAA,EACpD;AACF;AAKO,SAAS,WAAW,aAAa,aAAa,OAAO;AAG1D,QAAM,YAAY,iBAAiB;AAEnC,OAAK;AACL,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAClD,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,eAAe,CAAC;AAItD,MAAI,2BAA2B;AAC/B,MAAI,CAAC,aAAa;AAChB,+BAA2B,MAAM,OAAO;AACxC,UAAM;AAAA,EACR;AACA,eAAa,aAAa,UAAU;AACpC,kBAAgB;AAChB,QAAM,iBAAiB,MAAM,OAAO;AACpC,iBAAe,SAAS;AACxB,MAAI,MAAM,OAAO;AACf;AAAA,EACF;AACA,QAAM,OAAO,cAAc,EAAE,YAAY;AACzC,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAClD,MAAI,6BAA6B,MAAM;AACrC,UAAM,gBAAgB,MAAM,OAAO;AACnC,UAAM,OAAO,KAAK,IAAIC,OAAM,0BAA0B,eAAe,KAAK,CAAC;AAC3E,UAAM;AAAA,EACR;AACF;AAEA,SAAS,kBAAkB;AACzB,SAAO,MAAMD,WAAG,EAAE,KAAK,MAAMA,WAAG,IAAI,KAAK,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,IAAI,KAAK,MAAMA,WAAG,KAAK;AAC/F;AAEA,SAAS,gBAAgB;AACvB,SAAO,MAAMA,WAAG,MAAM,KAAK,MAAMA,WAAG,QAAQ;AAC9C;AAEA,SAAS,eAAe,gBAAgB;AACtC,SAAOA,WAAG,MAAM;AAEhB,SAAO,CAACE,KAAIF,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACtC,QAAIE,KAAIF,WAAG,IAAI,GAAG;AAChB;AAAA,IACF;AAEA,QAAI,MAAMA,WAAG,EAAE,GAAG;AAChB,qBAAe;AACf;AAAA,IACF;AACA,UAAM,cAAc,MAAM;AAC1B,qBAAiB,aAAa,cAAc;AAAA,EAC9C;AACF;AAEA,SAAS,iBAAiB,aAAa,gBAAgB;AACrD,MAAI,qBAAqB;AACvB,qBAAiB;AAAA,MACf,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACA,MAAI,WAAW;AACf,MAAI,MAAMA,WAAG,IAAI,KAAK,MAAM,sBAAsB,kBAAkB,SAAS;AAC3E,oBAAgB;AAChB,QAAI,cAAc,GAAG;AACnB;AAAA,QAAiB;AAAA;AAAA,QAAiC;AAAA,MAAK;AACvD;AAAA,IACF,WAAW,gBAAgB,GAAG;AAC5B,yBAAmB;AACnB;AAAA,IACF;AAEA,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,eAAW;AAEX,QAAI,MAAMA,WAAG,MAAM,GAAG;AAGpB,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,YAAY;AAClD,iBAAW;AACX;AAAA,IACF;AAAA,EACF;AAEA,+BAA6B,aAAa,UAAU,cAAc;AACpE;AAEA,SAAS,6BACP,aACA,UACA,gBACA;AACA,MAAI,qBAAqB;AACvB,QAAI,kCAAkC,QAAQ,GAAG;AAC/C;AAAA,IACF;AAAA,EACF;AACA,MAAIE,KAAIF,WAAG,IAAI,GAAG;AAEhB,2BAAuB,cAAc;AACrC;AAAA,MAAiB;AAAA;AAAA,MAAiC;AAAA,IAAK;AACvD;AAAA,EACF;AAIA,yBAAuB,cAAc;AACrC,MAAI,gBAAgB;AACpB,QAAM,QAAQ,MAAM,OAAO,MAAM,OAAO,SAAS,CAAC;AAElD,MAAI,MAAM,sBAAsB,kBAAkB,cAAc;AAC9D,oBAAgB;AAAA,EAClB;AACA,+BAA6B;AAE7B,MAAI,cAAc,GAAG;AACnB,qBAAiB,aAAa,aAAa;AAAA,EAC7C,WAAW,gBAAgB,GAAG;AAC5B,uBAAmB;AAAA,EACrB,WAAW,MAAM,sBAAsB,kBAAkB,UAAU,CAAC,iBAAiB,GAAG;AACtF,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAEhD,UAAM,cAAc,MAAMA,WAAG,IAAI;AACjC,QAAI,aAAa;AACf,WAAK;AAAA,IACP;AAGA,2BAAuB,cAAc;AACrC,iCAA6B;AAC7B;AAAA,MAAiB;AAAA,MAAa;AAAA;AAAA,IAAyB;AAAA,EACzD,YACG,MAAM,sBAAsB,kBAAkB,QAC7C,MAAM,sBAAsB,kBAAkB,SAChD,EAAE,iBAAiB,KAAK,MAAMA,WAAG,IAAI,IACrC;AACA,QAAI,MAAM,sBAAsB,kBAAkB,MAAM;AACtD,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAAA,IAClD,OAAO;AACL,YAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAAA,IAClD;AAIA,2BAAuB,cAAc;AACrC;AAAA,MAAiB;AAAA;AAAA,MAAiC;AAAA,IAAK;AAAA,EACzD,WAAW,MAAM,sBAAsB,kBAAkB,aAAa,CAAC,iBAAiB,GAAG;AACzF,2BAAuB,cAAc;AACrC,uBAAmB;AAAA,EACrB,WAAW,iBAAiB,GAAG;AAE7B,uBAAmB;AAAA,EACrB,OAAO;AACL,eAAW;AAAA,EACb;AACF;AAEA,SAAS,iBAAiB,eAAe,eAAe;AACtD,MAAI,qBAAqB;AACvB,6BAAyB;AAAA,EAC3B,WAAW,eAAe;AACxB,QAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,wCAAkC;AAAA,IACpC;AAAA,EACF;AACA,cAAY,eAAe,aAAa;AAC1C;AAGO,SAAS,uBAAuB,gBAAgB;AACrD,oBAAkB,cAAc;AAClC;AAEO,SAAS,+BAA+B;AAC7C,MAAI,qBAAqB;AACvB,UAAM,YAAY,gBAAgB,CAAC;AACnC,IAAAE,KAAIF,WAAG,QAAQ;AACf,mBAAe,SAAS;AAAA,EAC1B;AACF;AAEO,SAAS,qBAAqB;AACnC,MAAI,qBAAqB;AACvB,iBAAaA,WAAG,IAAI;AACpB,6BAAyB;AAAA,EAC3B,WAAW,eAAe;AACxB,QAAI,MAAMA,WAAG,KAAK,GAAG;AACnB,8BAAwB;AAAA,IAC1B;AAAA,EACF;AAEA,MAAI,MAAMA,WAAG,EAAE,GAAG;AAChB,UAAM,mBAAmB,MAAM,OAAO;AACtC,SAAK;AACL,qBAAiB;AACjB,UAAM,OAAO,gBAAgB,EAAE,cAAc,MAAM,OAAO;AAAA,EAC5D;AACA,YAAU;AACZ;AAEA,SAAS,aAAa,aAAa,aAAa,OAAO;AACrD,MACE,wBACC,CAAC,eAAe,eACjB,aAAa,kBAAkB,WAAW,GAC1C;AACA;AAAA,EACF;AAEA,MAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,2BAAuB,IAAI;AAAA,EAC7B;AAEA,MAAI,qBAAqB;AACvB,6BAAyB;AAAA,EAC3B,WAAW,eAAe;AACxB,QAAI,MAAMA,WAAG,QAAQ,GAAG;AACtB,wCAAkC;AAAA,IACpC;AAAA,EACF;AACF;AAGA,SAAS,kBAAkB;AACzB,MAAI,WAAW;AACf,MAAIE,KAAIF,WAAG,QAAQ,GAAG;AACpB,wBAAoB;AACpB,eAAW;AAAA,EACb,OAAO;AACL,eAAW;AAAA,EACb;AACA,MAAI,qBAAqB;AACvB,2BAAuB,QAAQ;AAAA,EACjC,WAAW,eAAe;AACxB,6BAAyB,QAAQ;AAAA,EACnC;AACF;AAIO,SAAS,cAAc;AAC5B,QAAM,cAAc,MAAM,OAAO,SAAS;AAC1C,MAAI,qBAAqB;AACvB,QAAI,iBAAiB,GAAG;AACtB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,sBAAsB,GAAG;AAC3B,oBAAgB;AAAA,EAClB,WAAW,yBAAyB,GAAG;AAErC,oBAAgB;AAChB,QAAI,MAAMA,WAAG,KAAK,KAAK,cAAc,MAAMA,WAAG,MAAM;AAClD,aAAOA,WAAG,KAAK;AACf,aAAOA,WAAG,IAAI;AACd,uBAAiB,kBAAkB,GAAG;AACtC,sBAAgB;AAAA,IAClB,OAAO;AACL,iCAA2B;AAAA,IAC7B;AACA,oBAAgB;AAAA,EAClB,WAAWE,KAAIF,WAAG,QAAQ,GAAG;AAE3B,iCAA6B;AAAA,EAC/B,WAAW,6BAA6B,GAAG;AACzC,2BAAuB;AAAA,EACzB,OAAO;AAEL,0BAAsB;AACtB,oBAAgB;AAAA,EAClB;AACA,QAAM,OAAO,WAAW,EAAE,cAAc,MAAM,OAAO;AACvD;AAEA,SAAS,+BAA+B;AACtC,MAAI,qBAAqB;AACvB,QAAI,kCAAkC,GAAG;AACvC;AAAA,IACF;AAAA,EACF;AACA,MAAI,eAAe;AACjB,QAAI,oCAAoC,GAAG;AACzC;AAAA,IACF;AAAA,EACF;AACA,QAAM,gBAAgB,MAAM;AAC5B,MAAIE,KAAIF,WAAG,SAAS,GAAG;AACrB,kBAAc,eAAe,MAAM,IAAI;AAAA,EACzC,WAAW,aAAa,kBAAkB,MAAM,KAAK,cAAc,MAAMA,WAAG,WAAW;AAErF,kBAAc,kBAAkB,MAAM;AACtC,IAAAE,KAAIF,WAAG,SAAS;AAChB,kBAAc,eAAe,MAAM,IAAI;AAAA,EACzC,WAAW,MAAMA,WAAG,MAAM,GAAG;AAC3B,eAAW,MAAM,IAAI;AAAA,EACvB,WAAW,MAAMA,WAAG,EAAE,GAAG;AACvB,oBAAgB;AAChB,eAAW,MAAM,IAAI;AAAA,EACvB,OAAO;AACL,qBAAiB;AACjB,cAAU;AAAA,EACZ;AACF;AAEA,SAAS,yBAAyB;AAChC,MAAI,qBAAqB;AACvB,6BAAyB;AAAA,EAC3B,WAAW,eAAe;AACxB,+BAA2B;AAAA,EAC7B,OAAO;AACL,mBAAe,IAAI;AAAA,EACrB;AACF;AAEA,SAAS,2BAA2B;AAClC,MAAI,uBAAuB,qBAAqB,GAAG;AACjD,WAAO;AAAA,EACT,WAAW,iBAAiB,yCAAyC,GAAG;AACtE,WAAO;AAAA,EACT;AACA,MAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,WAAO,MAAM,sBAAsB,kBAAkB;AAAA,EACvD;AAEA,MAAI,CAAC,MAAMA,WAAG,QAAQ,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,eAAe;AAC7B,QAAMG,aAAY,wBAAwB;AAC1C,QAAM,UACJA,WAAU,SAASH,WAAG,QAAQG,WAAU,sBAAsB,kBAAkB;AAClF,MAAIA,WAAU,SAASH,WAAG,OAAO;AAC/B,WAAO;AAAA,EACT;AAEA,MAAI,SAAS;AACX,UAAM,gBAAgB,MAAM,WAAW,oBAAoB,QAAQ,CAAC,CAAC;AACrE,WAAO,kBAAkB,UAAU,iBAAiB,kBAAkB,UAAU;AAAA,EAClF;AACA,SAAO;AACT;AAEA,SAAS,6BAA6B;AACpC,MAAIE,KAAIF,WAAG,KAAK,GAAG;AACjB,0BAAsB;AAAA,EACxB;AACF;AAEO,SAAS,kBAAkB;AAChC,MAAI,cAAc,kBAAkB,KAAK,GAAG;AAC1C,kBAAc;AACd,+BAA2B;AAAA,EAC7B;AACA,YAAU;AACZ;AAEA,SAAS,wBAAwB;AAC/B,MAAI,eAAe;AACjB,WAAO,0BAA0B;AAAA,EACnC,OAAO;AACL,WAAO,MAAMA,WAAG,IAAI;AAAA,EACtB;AACF;AAEA,SAAS,kBAAkB;AACzB,MAAI,eAAe;AACjB,wBAAoB;AAAA,EACtB,OAAO;AACL,wBAAoB;AAAA,EACtB;AACF;AAEO,SAAS,sBAAsB;AACpC,SAAOA,WAAG,IAAI;AAEd,MAAI,aAAa,kBAAkB,GAAG,GAAG;AACvC,yBAAqB;AAAA,EACvB,OAAO;AACL,oBAAgB;AAAA,EAClB;AACF;AAEA,SAAS,uBAAuB;AAC9B,OAAK;AACL,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,OAAOA,WAAG;AAChD,kBAAgB;AAChB,6BAA2B;AAC3B,kBAAgB;AAClB;AAEA,SAAS,+BAA+B;AACtC,SACG,uBAAuB,qBAAqB,KAC5C,iBAAiB,iCAAiC,KACnD,MAAM,SAASA,WAAG,QAClB,MAAM,SAASA,WAAG,UAClB,MAAM,SAASA,WAAG,QAClB,MAAM,SAASA,WAAG,aAClB,MAAM,SAASA,WAAG,UAClB,aAAa,kBAAkB,MAAM,KACrC,MAAMA,WAAG,EAAE;AAEf;AAGO,SAAS,wBAAwB;AACtC,MAAI,QAAQ;AAGZ,SAAOA,WAAG,MAAM;AAEhB,SAAO,CAACE,KAAIF,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACtC,QAAI,OAAO;AACT,cAAQ;AAAA,IACV,OAAO;AACL,aAAOA,WAAG,KAAK;AACf,UAAIE,KAAIF,WAAG,MAAM,GAAG;AAClB;AAAA,MACF;AAAA,IACF;AACA,yBAAqB;AAAA,EACvB;AACF;AAEA,SAAS,uBAAuB;AAC9B,MAAI,qBAAqB;AACvB,2BAAuB;AACvB;AAAA,EACF;AACA,kBAAgB;AAChB,QAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,MAAI,cAAc,kBAAkB,GAAG,GAAG;AACxC,oBAAgB;AAAA,EAClB;AACF;AAcA,SAAS,qBAAqB;AAC5B,QAAM,WAAW,MAAM,SAAS;AAChC,mBAAiB,kBAAkB,OAAO;AAC1C,MAAI,cAAc,kBAAkB,KAAK,GAAG;AAC1C,QAAI,aAAa,kBAAkB,KAAK,GAAG;AACzC,YAAM,oBAAoB,QAAQ;AAClC,aAAO;AAAA,IACT,OAAO;AACL,YAAM,oBAAoB,QAAQ;AAClC,aAAO;AAAA,IACT;AAAA,EACF,WAAW,MAAMA,WAAG,KAAK,GAAG;AAC1B,UAAM,oBAAoB,QAAQ;AAClC,WAAO;AAAA,EACT,OAAO;AACL,UAAM,oBAAoB,QAAQ;AAClC,WAAO;AAAA,EACT;AACF;AAMA,SAAS,6BAA6B;AAGpC,MAAI,aAAa,kBAAkB,OAAO,KAAK,mBAAmB,GAAG;AACnE,SAAK;AAAA,EACP;AACF;AAIO,SAAS,cAAc;AAC5B,MAAI,uBAAuB,MAAMA,WAAG,IAAI,KAAK,cAAc,MAAMA,WAAG,IAAI;AACtE,mCAA+B;AAC/B;AAAA,EACF;AACA,MAAI,uBAAuB,aAAa,kBAAkB,KAAK,GAAG;AAChE,UAAMG,aAAY,wBAAwB;AAC1C,QAAIA,WAAU,SAASH,WAAG,QAAQG,WAAU,sBAAsB,kBAAkB,OAAO;AAIzF,uBAAiB,kBAAkB,KAAK;AACxC,UAAI,cAAc,MAAMH,WAAG,IAAI;AAC7B,uCAA+B;AAC/B;AAAA,MACF;AAAA,IAGF,WAAWG,WAAU,SAASH,WAAG,QAAQG,WAAU,SAASH,WAAG,QAAQ;AAKrE,uBAAiB,kBAAkB,KAAK;AAAA,IAC1C;AAAA,EAEF;AAGA,MAAI,MAAMA,WAAG,MAAM,GAAG;AACpB,kBAAc;AAAA,EAChB,OAAO;AACL,+BAA2B;AAC3B,0BAAsB;AACtB,qBAAiB,kBAAkB,KAAK;AACxC,kBAAc;AAAA,EAChB;AACA,6BAA2B;AAC3B,YAAU;AACZ;AAGA,SAAS,2BAA2B;AAClC,SAAO,MAAMA,WAAG,IAAI;AACtB;AAEA,SAAS,4BAA4B;AACnC,0BAAwB;AAC1B;AAGA,SAAS,wBAAwB;AAC/B,MAAI,eAAe;AACjB,mCAA+B;AAAA,EACjC;AAEA,MAAI,QAAQ;AACZ,MAAI,yBAAyB,GAAG;AAE9B,8BAA0B;AAE1B,QAAI,CAACE,KAAIF,WAAG,KAAK,EAAG;AAAA,EACtB;AAEA,MAAI,MAAMA,WAAG,IAAI,GAAG;AAClB,SAAK;AACL,qBAAiB,kBAAkB,GAAG;AAEtC,8BAA0B;AAE1B;AAAA,EACF;AAEA,SAAOA,WAAG,MAAM;AAChB,SAAO,CAACE,KAAIF,WAAG,MAAM,KAAK,CAAC,MAAM,OAAO;AACtC,QAAI,OAAO;AACT,cAAQ;AAAA,IACV,OAAO;AAEL,UAAIE,KAAIF,WAAG,KAAK,GAAG;AACjB;AAAA,UACE;AAAA,QACF;AAAA,MACF;AAEA,aAAOA,WAAG,KAAK;AACf,UAAIE,KAAIF,WAAG,MAAM,GAAG;AAClB;AAAA,MACF;AAAA,IACF;AAEA,yBAAqB;AAAA,EACvB;AACF;AAEA,SAAS,uBAAuB;AAC9B,MAAI,qBAAqB;AACvB,2BAAuB;AACvB;AAAA,EACF;AACA,MAAI,eAAe;AACjB,6BAAyB;AACzB;AAAA,EACF;AACA,0BAAwB;AACxB,MAAI,aAAa,kBAAkB,GAAG,GAAG;AACvC,UAAM,OAAO,MAAM,OAAO,SAAS,CAAC,EAAE,iBAAiB,eAAe;AACtE,SAAK;AACL,4BAAwB;AAAA,EAC1B;AACF;AASA,SAAS,6BAA6B;AACpC,MAAI,MAAMA,WAAG,KAAK,KAAM,aAAa,kBAAkB,OAAO,KAAK,CAAC,sBAAsB,GAAI;AAC5F,SAAK;AACL,aAAS,OAAO,KAAK;AAAA,EACvB;AACF;AAnzCA;AAAA;AAEA;AACA;AAiBA;AAmBA;AAaA;AACA;AACA;AACA;AACA;AACA;AAaA;AAMA;AAAA;AAAA;;;ACtEO,SAAS,YAAY;AAE1B,MACE,MAAM,QAAQ,KACd,MAAM,WAAW,CAAC,MAAM,UAAU,cAClC,MAAM,WAAW,CAAC,MAAM,UAAU,iBAClC;AACA,oBAAgB,CAAC;AAAA,EACnB;AACA,YAAU;AACV,SAAO,cAAc;AACvB;AAjBA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACWO,SAASI,OACdC,QACAC,eACAC,sBACAC,gBACA;AACA,MAAIA,kBAAiBD,sBAAqB;AACxC,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AACA,aAAWF,QAAOC,eAAcC,sBAAqBC,cAAa;AAClE,QAAM,SAAS,UAAU;AACzB,MAAI,MAAM,OAAO;AACf,UAAM,aAAa,MAAM,KAAK;AAAA,EAChC;AACA,SAAO;AACT;AA9BA,IAKa;AALb;AAAA;AAEA;AACA;AAEO,IAAM,OAAN,MAAW;AAAA,MAIhB,YAAY,QAAQ,QAAQ;AAC1B,aAAK,SAAS;AACd,aAAK,SAAS;AAAA,MAChB;AAAA,IACF;AAAA;AAAA;;;ACDe,SAAR,iBAAkC,QAAQ;AAC/C,MAAI,QAAQ,OAAO,aAAa;AAChC,MAAI,QAAQ;AACZ,QAAM,aAAa,OAAO,aAAa;AACvC,KAAG;AACD,UAAM,QAAQ,OAAO,OAAO,KAAK;AACjC,QAAI,MAAM,sBAAsB;AAC9B;AAAA,IACF;AACA,QAAI,MAAM,oBAAoB;AAC5B;AAAA,IACF;AACA,aAAS,MAAM;AACf,aAAS,MAAM;AAEf,QACE,MAAM,sBAAsB,kBAAkB,UAC9C,MAAM,kBAAkB,QACxB,MAAM,eAAe,WAAW,YAChC;AACA,aAAO;AAAA,IACT;AACA,aAAS;AAAA,EACX,SAAS,QAAQ,KAAK,QAAQ,OAAO,OAAO;AAC5C,SAAO;AACT;AArCA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAgBqB;AAhBrB;AAAA;AAGA;AACA;AAYA,IAAqB,iBAArB,MAAqB,gBAAe;AAAA,MACjC,SAAS;AAAC,aAAK,aAAa;AAAA,MAAE;AAAA;AAAA;AAAA,MAG9B,UAAU;AAAC,aAAK,iBAAiB,IAAI,MAAM,KAAK,OAAO,MAAM;AAAA,MAAC;AAAA,MAC9D,UAAU;AAAC,aAAK,aAAa;AAAA,MAAC;AAAA,MAE/B,YACG,MACA,QACAC,gBACA,qBACA,eACD;AAAC;AAAC,aAAK,OAAO;AAAK,aAAK,SAAS;AAAO,aAAK,gBAAgBA;AAAc,aAAK,sBAAsB;AAAoB,aAAK,gBAAgB;AAAc,wBAAe,UAAU,OAAO,KAAK,IAAI;AAAE,wBAAe,UAAU,QAAQ,KAAK,IAAI;AAAE,wBAAe,UAAU,QAAQ,KAAK,IAAI;AAAA,MAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASlS,WAAW;AACT,eAAO;AAAA,UACL,YAAY,KAAK;AAAA,UACjB,YAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,kBAAkB,UAAU;AAC1B,aAAK,aAAa,SAAS;AAC3B,aAAK,aAAa,SAAS;AAAA,MAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,yCAAyC,UAAU;AACjD,cAAM,SAAS,KAAK,WAAW,MAAM,SAAS,WAAW,MAAM;AAC/D,aAAK,aAAa,SAAS;AAC3B,eAAO;AAAA,MACT;AAAA,MAEA,QAAQ;AACN,aAAK,aAAa;AAClB,aAAK,iBAAiB,IAAI,MAAM,KAAK,OAAO,MAAM;AAClD,aAAK,aAAa;AAAA,MACpB;AAAA,MAEA,yBAAyB,OAAO,mBAAmB;AACjD,eACE,KAAK,gBAAgB,OAAOC,WAAG,IAAI,KACnC,KAAK,OAAO,KAAK,EAAE,sBAAsB;AAAA,MAE7C;AAAA,MAEA,sBAAsB,OAAO;AAG3B,eAAO,KAAK,uBAAuB,KAAK,OAAO,KAAK,CAAC;AAAA,MACvD;AAAA,MAEA,8BAA8B,eAAe;AAC3C,eAAO,KAAK,uBAAuB,KAAK,qBAAqB,aAAa,CAAC;AAAA,MAC7E;AAAA,MAEA,iBAAiB;AACf,eAAO,KAAK,uBAAuB,KAAK,aAAa,CAAC;AAAA,MACxD;AAAA,MAEA,uBAAuB,OAAO;AAC5B,eAAO,KAAK,KAAK,MAAM,MAAM,OAAO,MAAM,GAAG;AAAA,MAC/C;AAAA,MAEA,gBAAgB,OAAO;AACrB,eAAO,KAAK,KAAK,MAAM,MAAM,OAAO,MAAM,GAAG;AAAA,MAC/C;AAAA,MAEA,mBAAmB,OAAO;AACxB,eAAO,KAAK,oBAAoB,KAAK,OAAO,KAAK,CAAC;AAAA,MACpD;AAAA,MAEA,cAAc;AACZ,eAAO,KAAK,oBAAoB,KAAK,aAAa,CAAC;AAAA,MACrD;AAAA,MAEA,oBAAoB,OAAO;AAIzB,eAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;AAAA,MACvD;AAAA,MAEA,gBAAgB,OAAO,IAAI;AACzB,eAAO,KAAK,OAAO,KAAK,EAAE,SAAS;AAAA,MACrC;AAAA,MAEA,gBAAgB,OAAO,IAAI,IAAI;AAC7B,eAAO,KAAK,OAAO,KAAK,EAAE,SAAS,MAAM,KAAK,OAAO,QAAQ,CAAC,EAAE,SAAS;AAAA,MAC3E;AAAA,MAEA,gBAAgB,OAAO,IAAI,IAAI,IAAI;AACjC,eACE,KAAK,OAAO,KAAK,EAAE,SAAS,MAC5B,KAAK,OAAO,QAAQ,CAAC,EAAE,SAAS,MAChC,KAAK,OAAO,QAAQ,CAAC,EAAE,SAAS;AAAA,MAEpC;AAAA,MAEA,SAAS,IAAI;AACX,eAAO,KAAK,OAAO,KAAK,UAAU,EAAE,SAAS;AAAA,MAC/C;AAAA,MAEA,SAAS,IAAI,IAAI;AACf,eAAO,KAAK,OAAO,KAAK,UAAU,EAAE,SAAS,MAAM,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS;AAAA,MAC/F;AAAA,MAEA,SAAS,IAAI,IAAI,IAAI;AACnB,eACE,KAAK,OAAO,KAAK,UAAU,EAAE,SAAS,MACtC,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS,MAC1C,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS;AAAA,MAE9C;AAAA,MAEA,SAAS,IAAI,IAAI,IAAI,IAAI;AACvB,eACE,KAAK,OAAO,KAAK,UAAU,EAAE,SAAS,MACtC,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS,MAC1C,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS,MAC1C,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS;AAAA,MAE9C;AAAA,MAEA,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI;AAC3B,eACE,KAAK,OAAO,KAAK,UAAU,EAAE,SAAS,MACtC,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS,MAC1C,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS,MAC1C,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS,MAC1C,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,SAAS;AAAA,MAE9C;AAAA,MAEA,kBAAkB,mBAAmB;AACnC,eAAO,KAAK,yBAAyB,KAAK,YAAY,iBAAiB;AAAA,MACzE;AAAA,MAEA,yBAAyB,MAAM,WAAW;AACxC,eAAO,KAAK,SAAS,IAAI,KAAK,KAAK,aAAa,EAAE,cAAc;AAAA,MAClE;AAAA,MAEA,gCAAgC;AAC9B,YAAI,wBAAwB,KAAK,KAAK;AAAA,UACpC,KAAK,aAAa,IAAI,KAAK,OAAO,KAAK,aAAa,CAAC,EAAE,MAAM;AAAA,UAC7D,KAAK,aAAa,KAAK,OAAO,SAAS,KAAK,OAAO,KAAK,UAAU,EAAE,QAAQ,KAAK,KAAK;AAAA,QACxF;AACA,YAAI,KAAK,eAAe;AACtB,kCAAwB,sBAAsB,QAAQ,UAAU,EAAE;AAAA,QACpE;AACA,eAAO;AAAA,MACT;AAAA,MAEA,aAAa,SAAS;AACpB,aAAK,cAAc,KAAK,8BAA8B;AACtD,aAAK,kBAAkB;AACvB,aAAK,eAAe,KAAK,UAAU,IAAI,KAAK,WAAW;AACvD,aAAK,cAAc;AACnB,aAAK,kBAAkB;AACvB,aAAK;AAAA,MACP;AAAA,MAEA,mCAAmC,SAAS;AAC1C,aAAK,cAAc,KAAK,8BAA8B,EAAE,QAAQ,YAAY,EAAE;AAC9E,aAAK,kBAAkB;AACvB,aAAK,eAAe,KAAK,UAAU,IAAI,KAAK,WAAW;AACvD,aAAK,cAAc;AACnB,aAAK,kBAAkB;AACvB,aAAK;AAAA,MACP;AAAA,MAEA,qBAAqB;AACnB,aAAK,aAAa,EAAE;AAAA,MACtB;AAAA,MAEA,cAAc;AACZ,aAAK,mCAAmC,EAAE;AAAA,MAC5C;AAAA;AAAA;AAAA;AAAA,MAKA,qBAAqB;AACnB,YAAI,aAAa;AACjB,eAAO,CAAC,KAAK,QAAQ,GAAG;AACtB,cAAI,KAAK,SAASA,WAAG,MAAM,GAAG;AAC5B;AAAA,UACF,WAAW,KAAK,SAASA,WAAG,MAAM,GAAG;AACnC,gBAAI,eAAe,GAAG;AACpB;AAAA,YACF;AACA;AAAA,UACF;AACA,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,kBAAkB,WAAW;AAC3B,YAAI,KAAK,OAAO,KAAK,UAAU,EAAE,SAAS,WAAW;AACnD,gBAAM,IAAI,MAAM,kBAAkB,SAAS,EAAE;AAAA,QAC/C;AACA,aAAK,UAAU;AAAA,MACjB;AAAA,MAEA,YAAY;AACV,aAAK,cAAc,KAAK,8BAA8B;AACtD,aAAK,kBAAkB;AACvB,aAAK,eAAe,KAAK,UAAU,IAAI,KAAK,WAAW;AACvD,aAAK,cAAc,KAAK,KAAK;AAAA,UAC3B,KAAK,OAAO,KAAK,UAAU,EAAE;AAAA,UAC7B,KAAK,OAAO,KAAK,UAAU,EAAE;AAAA,QAC/B;AACA,aAAK,kBAAkB;AACvB,aAAK;AAAA,MACP;AAAA,MAEA,oBAAoB,QAAQ;AAC1B,aAAK,cAAc,KAAK,8BAA8B;AACtD,aAAK,kBAAkB;AACvB,aAAK,cAAc;AACnB,aAAK,eAAe,KAAK,UAAU,IAAI,KAAK,WAAW;AACvD,aAAK,cAAc,KAAK,KAAK;AAAA,UAC3B,KAAK,OAAO,KAAK,UAAU,EAAE;AAAA,UAC7B,KAAK,OAAO,KAAK,UAAU,EAAE;AAAA,QAC/B;AACA,aAAK,kBAAkB;AACvB,aAAK;AAAA,MACP;AAAA,MAEC,oBAAoB;AACnB,cAAM,QAAQ,KAAK,aAAa;AAChC,YAAI,MAAM,4BAA4B,MAAM,sBAAsB;AAChE,gBAAM,mBAAmB,iBAAiB,IAAI;AAAA,QAChD;AACA,YAAI,KAAK,qBAAqB;AAC5B;AAAA,QACF;AACA,YAAI,MAAM,0BAA0B;AAClC,mBAAS,IAAI,GAAG,IAAI,MAAM,0BAA0B,KAAK;AACvD,gBAAI,MAAM,kBAAkB;AAC1B,mBAAK,cAAc;AACnB,mBAAK,cAAc,KAAK,cAAc,cAAc,sBAAsB;AAAA,YAC5E,OAAO;AACL,mBAAK,cAAc,KAAK,cAAc,cAAc,iBAAiB;AAAA,YACvE;AACA,iBAAK,cAAc;AAAA,UACrB;AAAA,QACF;AACA,YAAI,MAAM,sBAAsB;AAC9B,cAAI,MAAM,kBAAkB;AAC1B,iBAAK,cAAc;AAAA,UACrB;AACA,cAAI,KAAK,aAAa,KAAK,KAAK,qBAAqB,EAAE,EAAE,SAASA,WAAG,SAAS;AAC5E,gBAAI,MAAM,kBAAkB;AAC1B,mBAAK,cAAc,KAAK,cAAc,cAAc,0BAA0B;AAAA,YAChF,OAAO;AACL,mBAAK,cAAc,KAAK,cAAc,cAAc,qBAAqB;AAAA,YAC3E;AAAA,UACF,WAAW,MAAM,kBAAkB;AACjC,iBAAK,cAAc,KAAK,cAAc,cAAc,oBAAoB;AAAA,UAC1E,OAAO;AACL,iBAAK,cAAc,KAAK,cAAc,cAAc,eAAe;AAAA,UACrE;AACA,eAAK,cAAc;AAAA,QACrB;AAAA,MACF;AAAA,MAEC,oBAAoB;AACnB,cAAM,QAAQ,KAAK,aAAa;AAChC,YAAI,MAAM,sBAAsB,CAAC,KAAK,qBAAqB;AACzD,eAAK,cAAc;AAAA,QACrB;AACA,YAAI,MAAM,0BAA0B,CAAC,KAAK,qBAAqB;AAC7D,mBAAS,IAAI,GAAG,IAAI,MAAM,wBAAwB,KAAK;AACrD,iBAAK,cAAc;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,WAAW,MAAM;AACf,aAAK,cAAc;AAAA,MACrB;AAAA,MAEA,eAAe;AACb,eAAO,KAAK,OAAO,KAAK,UAAU;AAAA,MACpC;AAAA,MAEA,mBAAmB;AACjB,cAAM,QAAQ,KAAK,aAAa;AAChC,eAAO,KAAK,KAAK,MAAM,MAAM,OAAO,MAAM,GAAG;AAAA,MAC/C;AAAA,MAEA,qBAAqB,eAAe;AAClC,eAAO,KAAK,OAAO,KAAK,aAAa,aAAa;AAAA,MACpD;AAAA,MAEA,eAAe;AACb,eAAO,KAAK;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,YAAY;AACV,YAAI,KAAK,eAAe,KAAK,OAAO,QAAQ;AAC1C,gBAAM,IAAI,MAAM,oCAAoC;AAAA,QACtD;AACA,aAAK;AAAA,MACP;AAAA,MAEA,gBAAgB;AACd,aAAK;AAAA,MACP;AAAA,MAEA,SAAS;AACP,YAAI,KAAK,eAAe,KAAK,OAAO,QAAQ;AAC1C,gBAAM,IAAI,MAAM,4DAA4D;AAAA,QAC9E;AACA,aAAK,cAAc,KAAK,8BAA8B;AACtD,eAAO,EAAC,MAAM,KAAK,YAAY,UAAU,KAAK,eAAc;AAAA,MAC9D;AAAA,MAEA,UAAU;AACR,eAAO,KAAK,eAAe,KAAK,OAAO;AAAA,MACzC;AAAA,IACF;AAAA;AAAA;;;ACrTe,SAAR,aACL,iBACA,QACA,aACA,qBACA;AACA,QAAM,WAAW,OAAO,SAAS;AAEjC,QAAM,aAAa,mBAAmB,MAAM;AAE5C,MAAI,mCAAmC,CAAC;AACxC,QAAM,2BAA2B,CAAC;AAClC,QAAM,yBAAyB,CAAC;AAChC,MAAI,uBAAuB;AAC3B,QAAM,SAAS,CAAC;AAChB,QAAM,iBAAiB,CAAC;AAExB,QAAM,iBAAiB,OAAO,aAAa,EAAE;AAC7C,MAAI,kBAAkB,MAAM;AAC1B,UAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AAEA,SAAO,UAAU;AACjB,SAAO,CAAC,OAAO,yBAAyBC,WAAG,QAAQ,cAAc,GAAG;AAClE,QAAI,OAAO,kBAAkB,kBAAkB,YAAY,KAAK,CAAC,OAAO,aAAa,EAAE,QAAQ;AAC7F,OAAC,EAAC,kCAAkC,qBAAoB,IAAI,mBAAmB,MAAM;AAAA,IACvF,WAAW,OAAO,SAASA,WAAG,IAAI,GAAG;AACnC,UAAI,CAAC,qBAAqB;AACxB,uBAAe,KAAK,EAAC,OAAO,OAAO,aAAa,GAAG,KAAK,OAAO,aAAa,IAAI,EAAC,CAAC;AAAA,MACpF;AACA,aAAO,UAAU;AAAA,IACnB,WAAW,OAAO,aAAa,EAAE,QAAQ;AACvC,aAAO,UAAU;AAAA,IACnB,OAAO;AAEL,YAAM,sBAAsB,OAAO,aAAa;AAChD,UAAI,WAAW;AACf,UAAI,cAAc;AAClB,UAAI,sBAAsB;AAC1B,aAAO,iBAAiB,OAAO,aAAa,CAAC,GAAG;AAC9C,YAAI,OAAO,SAASA,WAAG,OAAO,GAAG;AAC/B,qBAAW;AAAA,QACb;AACA,YAAI,OAAO,SAASA,WAAG,IAAI,GAAG;AAC5B,wBAAc;AAAA,QAChB;AACA,YAAI,OAAO,SAASA,WAAG,QAAQ,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AACjE,gCAAsB;AAAA,QACxB;AACA,eAAO,UAAU;AAAA,MACnB;AACA,UAAI,YAAY,OAAO,SAASA,WAAG,MAAM,GAAG;AAE1C,+BAAuB,QAAQ,cAAc;AAC7C;AAAA,MACF;AACA,UAAI,aAAa;AAEf,+BAAuB,QAAQ,cAAc;AAC7C;AAAA,MACF;AACA,UACE,OAAO,kBAAkB,kBAAkB,YAAY,KACvD,CAAC,OAAO,aAAa,EAAE,QACvB;AACA,SAAC,EAAC,kCAAkC,qBAAoB,IAAI,mBAAmB,MAAM;AACrF;AAAA,MACF;AAEA,YAAM,iBAAiB,OAAO,aAAa;AAC3C,oBAAc,MAAM;AACpB,UAAI,OAAO,SAASA,WAAG,QAAQ,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAE9D,+BAAuB,QAAQ,cAAc;AAC7C;AAAA,MACF;AAEA,aAAO,OAAO,aAAa,EAAE,QAAQ;AACnC,eAAO,UAAU;AAAA,MACnB;AACA,UAAI,OAAO,SAASA,WAAG,EAAE,GAAG;AAC1B,cAAM,cAAc,OAAO,aAAa;AAExC,cAAM,WAAW,OAAO,aAAa,EAAE;AACvC,YAAI,YAAY,MAAM;AACpB,gBAAM,IAAI,MAAM,iDAAiD;AAAA,QACnE;AACA,eAAO,UAAU;AACjB,eAAO,OAAO,aAAa,IAAI,UAAU;AACvC,0BAAgB,aAAa;AAAA,QAC/B;AACA,YAAI;AACJ,YAAI,UAAU;AACZ,4BAAkB,YAAY,cAAc,cAAc;AAC1D,iCAAuB,KAAK,eAAe;AAAA,QAC7C,OAAO;AACL,4BAAkB,YAAY,cAAc,QAAQ;AACpD,mCAAyB,KAAK,eAAe;AAAA,QAC/C;AAEA,eAAO,KAAK;AAAA,UACV;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,KAAK,OAAO,aAAa;AAAA,QAC3B,CAAC;AAAA,MACH,WAAW,CAAC,uBAAuB,qBAAqB;AAMtD,uBAAe,KAAK,EAAC,OAAO,qBAAqB,KAAK,OAAO,aAAa,EAAC,CAAC;AAAA,MAC9E;AAAA,IACF;AAAA,EACF;AAEA,SAAO,kBAAkB,QAAQ;AACjC,MAAI,qBAAqB;AASvB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,0BAA0B,CAAC;AAAA,MAC3B,wBAAwB,CAAC;AAAA,MACzB;AAAA,MACA,QAAQ,CAAC;AAAA,MACT;AAAA,IACF;AAAA,EACF,OAAO;AACL,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AASA,SAAS,uBAAuB,QAAQ,gBAAgB;AACtD,SAAO,UAAU;AACjB,SAAO,OAAO,aAAa,EAAE,cAAc,gBAAgB;AACzD,WAAO,UAAU;AAAA,EACnB;AACA,SAAO,iBAAiB,OAAO,qBAAqB,EAAE,CAAC,GAAG;AACxD,WAAO,cAAc;AAAA,EACvB;AACF;AAEA,SAAS,mBAAmB,QAAQ;AAClC,QAAM,aAAa,OAAO,aAAa;AACvC,QAAM,YAAY,WAAW;AAC7B,MAAI,aAAa,MAAM;AACrB,UAAM,IAAI,MAAM,qCAAqC;AAAA,EACvD;AACA,QAAM,eAAe,WAAW;AAChC,MAAI,gBAAgB,MAAM;AACxB,UAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AACA,MAAI,YAAY;AAChB,MAAI,gBAAgB;AACpB,SAAO,UAAU;AACjB,MAAI,OAAO,SAASA,WAAG,IAAI,GAAG;AAC5B,gBAAY,OAAO,eAAe;AAAA,EACpC;AACA,SAAO,CAAC,OAAO,yBAAyBA,WAAG,QAAQ,SAAS,GAAG;AAK7D,QAAI,OAAO,SAASA,WAAG,QAAQ,KAAK,CAAC,OAAO,aAAa,EAAE,QAAQ;AACjE,sBAAgB;AAAA,IAClB;AACA,WAAO,UAAU;AAAA,EACnB;AACA,SAAO,EAAC,cAAc,WAAW,cAAa;AAChD;AAKA,SAAS,mBAAmB,QAG3B;AACC,QAAM,mCAAmC,CAAC;AAE1C,SAAO,UAAU;AACjB,QAAM,uBAAuB,OAAO,aAAa,EAAE;AACnD,MAAI,wBAAwB,MAAM;AAChC,UAAM,IAAI,MAAM,gEAAgE;AAAA,EAClF;AAEA,SAAO,CAAC,OAAO,yBAAyBA,WAAG,QAAQ,oBAAoB,GAAG;AACxE,QAAI,OAAO,aAAa,EAAE,cAAc,sBAAsB;AAG5D,aAAO,UAAU;AACjB,UAAI,iBAAiB,OAAO,aAAa,CAAC,GAAG;AAC3C,eAAO,UAAU;AACjB,eAAO,iBAAiB,OAAO,aAAa,CAAC,GAAG;AAC9C,iBAAO,UAAU;AAAA,QACnB;AACA,cAAM,QAAQ,OAAO,aAAa;AAClC,YAAI,MAAM,SAASA,WAAG,MAAM;AAC1B,gBAAM,IAAI,MAAM,gEAAgE;AAAA,QAClF;AACA,cAAM,OAAO,OAAO,uBAAuB,KAAK;AAChD,yCAAiC,KAAK,QAAQ,IAAI,MAAM,IAAI,EAAE;AAAA,MAChE;AAAA,IACF,OAAO;AACL,aAAO,UAAU;AAAA,IACnB;AAAA,EACF;AAEA,SAAO,UAAU;AAGjB,SAAO,OAAO,aAAa,EAAE,QAAQ;AACnC,WAAO,UAAU;AAAA,EACnB;AACA,MAAI,uBAAuB,OAAO,aAAa;AAG/C,MAAI,iBAAiB;AACrB,SAAO,CAAC,OAAO,yBAAyBA,WAAG,QAAQ,oBAAoB,GAAG;AACxE,QAAI,CAAC,kBAAkB,OAAO,SAASA,WAAG,QAAQA,WAAG,MAAM,GAAG;AAC5D,aAAO,UAAU;AACjB,YAAM,qBAAqB,OAAO,aAAa,EAAE;AACjD,UAAI,sBAAsB,MAAM;AAC9B,cAAM,IAAI,MAAM,yCAAyC;AAAA,MAC3D;AACA,aAAO,CAAC,OAAO,yBAAyBA,WAAG,QAAQ,kBAAkB,GAAG;AACtE,eAAO,UAAU;AAAA,MACnB;AACA,6BAAuB,OAAO,aAAa;AAC3C,uBAAiB;AAAA,IACnB;AACA,WAAO,UAAU;AAAA,EACnB;AAEA,SAAO,UAAU;AAEjB,SAAO,EAAC,kCAAkC,qBAAoB;AAChE;AAKA,SAAS,iBAAiB,OAAO;AAC/B,SAAO;AAAA,IACLA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,IACHA,WAAG;AAAA,EACL,EAAE,SAAS,MAAM,IAAI;AACvB;AAMA,SAAS,cAAc,QAAQ;AAC7B,MAAI,OAAO,SAASA,WAAG,QAAQ,GAAG;AAChC,UAAM,aAAa,OAAO,aAAa;AACvC,UAAM,iBAAiB,WAAW;AAClC,QAAI,kBAAkB,MAAM;AAC1B,YAAM,IAAI,MAAM,0DAA0D;AAAA,IAC5E;AACA,WAAO,CAAC,OAAO,yBAAyBA,WAAG,UAAU,cAAc,GAAG;AACpE,aAAO,UAAU;AAAA,IACnB;AACA,WAAO,UAAU;AAAA,EACnB,OAAO;AACL,WAAO,UAAU;AAAA,EACnB;AACF;AA/VA;AAAA;AAEA;AACA;AAAA;AAAA;;;ACAe,SAAR,kBAAmC,QAAQ;AAEhD,SAAO,mBAAmB;AAE1B,SAAO,YAAY;AAEnB,SAAO,YAAY;AAEnB,SAAO,YAAY;AAEnB,MAAI,OAAO,SAASC,WAAG,MAAM,GAAG;AAE9B,WAAO,YAAY;AAEnB,WAAO,YAAY;AAEnB,WAAO,YAAY;AAAA,EACrB,OAAO;AACL,WAAO,OAAO,SAASA,WAAG,GAAG,GAAG;AAE9B,aAAO,YAAY;AAEnB,aAAO,YAAY;AAAA,IACrB;AAAA,EACF;AACF;AA5BA;AAAA;AAAA;AAAA;AAAA;;;ACyBe,SAAR,mBAAoC,QAAQ;AACjD,QAAM,mBAAmB,oBAAI,IAAI;AACjC,QAAM,oBAAoB,oBAAI,IAAI;AAClC,WAAS,IAAI,GAAG,IAAI,OAAO,OAAO,QAAQ,KAAK;AAC7C,UAAM,QAAQ,OAAO,OAAO,CAAC;AAC7B,QAAI,MAAM,SAASC,WAAG,QAAQ,sBAAsB,KAAK,GAAG;AAC1D,UAAI,MAAM,QAAQ;AAChB,yBAAiB,IAAI,OAAO,uBAAuB,KAAK,CAAC;AAAA,MAC3D,OAAO;AACL,0BAAkB,IAAI,OAAO,uBAAuB,KAAK,CAAC;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAC,kBAAkB,kBAAiB;AAC7C;AAvCA,IASa;AATb;AAAA;AAAA;AACA;AAQO,IAAM,yBAAyB;AAAA,MACpC,kBAAkB,oBAAI,IAAI;AAAA,MAC1B,mBAAmB,oBAAI,IAAI;AAAA,IAC7B;AAAA;AAAA;;;ACJe,SAAR,aAA8B,QAAQ;AAC3C,MAAI,kBAAkB,OAAO,aAAa;AAC1C,SAAO,CAAC,OAAO,gBAAgB,iBAAiBC,WAAG,MAAM,GAAG;AAC1D;AAAA,EACF;AACA,SACE,OAAO,yBAAyB,kBAAkB,GAAG,kBAAkB,KAAK,KAC5E,OAAO,gBAAgB,kBAAkB,GAAGA,WAAG,MAAM;AAEzD;AAjBA;AAAA;AAAA;AACA;AAAA;AAAA;;;ACOO,SAAS,4BAA4B,QAAQ;AAClD,MACE,OAAO,SAASC,WAAG,OAAOA,WAAG,MAAM,KAClC,OAAO,SAASA,WAAG,MAAMA,WAAG,MAAM,KAAK,OAAO,kBAAkB,kBAAkB,OAAO,GAC1F;AAEA,WAAO,YAAY;AAEnB,WAAO,YAAY;AACnB,WAAO,mBAAmB;AAE1B,WAAO,YAAY;AAAA,EACrB;AACF;AArBA;AAAA;AAAA;AACA;AAAA;AAAA;;;ACMe,SAAR,yBACL,8BACA,mBACA,QACA,iBACA;AACA,MAAI,CAAC,gCAAgC,mBAAmB;AACtD,WAAO;AAAA,EACT;AACA,QAAM,cAAc,OAAO,aAAa;AACxC,MAAI,YAAY,eAAe,MAAM;AACnC,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,QAAM,YAAY,YAAY,cAAc,OAAO,aAAa;AAChE,MACE,cAAc,KACd,EAAE,cAAc,KAAK,OAAO,gBAAgB,YAAY,cAAc,GAAGC,WAAG,IAAI,IAChF;AACA,WAAO;AAAA,EACT;AACA,QAAM,kBAAkB,OAAO,qBAAqB,CAAC;AACrD,MAAI,gBAAgB,SAASA,WAAG,MAAM;AACpC,WAAO;AAAA,EACT;AACA,QAAM,eAAe,OAAO,uBAAuB,eAAe;AAClE,SACE,gBAAgB,iBAAiB,IAAI,YAAY,KACjD,CAAC,gBAAgB,kBAAkB,IAAI,YAAY;AAEvD;AArCA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAuBqB;AAvBrB;AAAA;AAGA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AAGA;AAKA,IAAqB,uBAArB,MAAqB,8BAA6B,YAAY;AAAA,MAC3D,SAAS;AAAC,aAAK,YAAY;AAAA,MAAK;AAAA,MAChC,UAAU;AAAC,aAAK,iBAAiB;AAAA,MAAK;AAAA,MACtC,UAAU;AAAC,aAAK,mBAAmB;AAAA,MAAK;AAAA,MAGzC,YACG,iBACA,QACA,iBACA,aACA,eACA,2BACA,iCACA,qCACA,8BACA,wBACA,uBACA,mBACD;AACA,cAAM;AAAE,aAAK,kBAAkB;AAAgB,aAAK,SAAS;AAAO,aAAK,kBAAkB;AAAgB,aAAK,cAAc;AAAY,aAAK,gBAAgB;AAAc,aAAK,4BAA4B;AAA0B,aAAK,kCAAkC;AAAgC,aAAK,sCAAsC;AAAoC,aAAK,+BAA+B;AAA6B,aAAK,yBAAyB;AAAuB,aAAK,wBAAwB;AAAsB,aAAK,oBAAoB;AAAkB,8BAAqB,UAAU,OAAO,KAAK,IAAI;AAAE,8BAAqB,UAAU,QAAQ,KAAK,IAAI;AAAE,8BAAqB,UAAU,QAAQ,KAAK,IAAI;AAAE;AACvuB,aAAK,kBAAkB,+BACnB,mBAAmB,MAAM,IACzB;AAAA,MACN;AAAA,MAEA,gBAAgB;AACd,YAAI,SAAS;AACb,YAAI,KAAK,WAAW;AAClB,oBAAU;AAAA,QACZ;AACA,eAAO;AAAA,MACT;AAAA,MAEA,gBAAgB;AACd,YAAI,KAAK,mCAAmC,KAAK,oBAAoB,CAAC,KAAK,gBAAgB;AACzF,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,MAEA,UAAU;AAER,YAAI,KAAK,OAAO,SAASC,WAAG,SAASA,WAAG,MAAMA,WAAG,EAAE,GAAG;AACpD,iBAAO,KAAK,oBAAoB;AAAA,QAClC;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,OAAO,GAAG;AACpC,eAAK,cAAc;AACnB,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,EAAE,GAAG;AAC3C,eAAK,OAAO,aAAa,gBAAgB;AACzC,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,OAAO,KAAK,CAAC,KAAK,OAAO,aAAa,EAAE,QAAQ;AAC1E,eAAK,YAAY;AACjB,iBAAO,KAAK,cAAc;AAAA,QAC5B;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,MAAMA,WAAG,UAAU,GAAG;AAEhD,cAAI,KAAK,kBAAkB,GAAG;AAC5B,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,IAAI,KAAK,KAAK,OAAO,SAASA,WAAG,OAAO,GAAG;AACrE,iBAAO,KAAK,kBAAkB;AAAA,QAChC;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,EAAE,GAAG;AAC/B,iBAAO,KAAK,kBAAkB;AAAA,QAChC;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,iBAAO,KAAK,yBAAyB;AAAA,QACvC;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AACtC,iBAAO,KAAK,iBAAiB;AAAA,QAC/B;AACA,eAAO;AAAA,MACT;AAAA,MAEC,sBAAsB;AACrB,cAAM,aAAa,KAAK,OAAO,sBAAsB,KAAK,OAAO,aAAa,IAAI,CAAC;AACnF,YAAI,KAAK,gBAAgB,qCAAqC,UAAU,GAAG;AAEzE,4BAAkB,KAAK,MAAM;AAAA,QAC/B,OAAO;AAEL,eAAK,OAAO,aAAa,OAAO;AAAA,QAClC;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWC,gBAAgB;AACf,YAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,MAAM,GAAG;AAC/C,cAAI,KAAK,uBAAuB;AAE9B,iBAAK,OAAO,UAAU;AACtB;AAAA,UACF;AACA,gBAAM,iBAAiB,KAAK,sCACxB,KACA,GAAG,KAAK,cAAc,cAAc,wBAAwB,CAAC;AACjE,eAAK,OAAO,aAAa,gCAAgC,cAAc,SAAS;AAChF,gBAAM,YAAY,KAAK,OAAO,aAAa,EAAE;AAC7C,cAAI,aAAa,MAAM;AACrB,kBAAM,IAAI,MAAM,mDAAmD;AAAA,UACrE;AACA,eAAK,OAAO,UAAU;AACtB,iBAAO,CAAC,KAAK,OAAO,yBAAyBA,WAAG,QAAQ,SAAS,GAAG;AAClE,iBAAK,gBAAgB,aAAa;AAAA,UACpC;AACA,eAAK,OAAO,aAAa,iBAAiB,QAAQ,IAAI;AACtD;AAAA,QACF;AAEA,cAAM,oBAAoB,KAAK,mCAAmC;AAClE,YAAI,mBAAmB;AACrB,eAAK,OAAO,YAAY;AAAA,QAC1B,OAAO;AACL,gBAAM,OAAO,KAAK,OAAO,YAAY;AACrC,eAAK,OAAO,mCAAmC,KAAK,gBAAgB,gBAAgB,IAAI,CAAC;AACzF,eAAK,OAAO,WAAW,KAAK,gBAAgB,gBAAgB,IAAI,CAAC;AAAA,QACnE;AACA,oCAA4B,KAAK,MAAM;AACvC,YAAI,KAAK,OAAO,SAASA,WAAG,IAAI,GAAG;AACjC,eAAK,OAAO,YAAY;AAAA,QAC1B;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmBC,qCAAqC;AACpC,aAAK,OAAO,mBAAmB;AAC/B,YACE,KAAK,OAAO,kBAAkB,kBAAkB,KAAK,KACrD,CAAC,KAAK,OAAO,gBAAgB,KAAK,OAAO,aAAa,IAAI,GAAGA,WAAG,KAAK,KACrE,CAAC,KAAK,OAAO,yBAAyB,KAAK,OAAO,aAAa,IAAI,GAAG,kBAAkB,KAAK,GAC7F;AAEA,eAAK,sBAAsB;AAC3B,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,OAAO,SAASA,WAAG,IAAI,KAAK,KAAK,OAAO,SAASA,WAAG,IAAI,GAAG;AAGlE,eAAK,sBAAsB;AAC3B,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAEnC,iBAAO;AAAA,QACT;AAEA,YAAI,qBAAqB;AACzB,YAAI,sBAAsB;AAC1B,eAAO,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAGvC,cACG,CAAC,sBAAsB,KAAK,OAAO,SAASA,WAAG,MAAM,KACtD,KAAK,OAAO,SAASA,WAAG,KAAK,GAC7B;AACA,iBAAK,OAAO,YAAY;AACxB,gBAAI,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACpC,oCAAsB;AAAA,YACxB;AACA,gBACE,KAAK,OAAO,SAASA,WAAG,MAAMA,WAAG,KAAK,KACtC,KAAK,OAAO,SAASA,WAAG,MAAMA,WAAG,MAAM,KACvC,KAAK,OAAO,SAASA,WAAG,MAAMA,WAAG,MAAMA,WAAG,MAAMA,WAAG,KAAK,KACxD,KAAK,OAAO,SAASA,WAAG,MAAMA,WAAG,MAAMA,WAAG,MAAMA,WAAG,MAAM,GACzD;AACA,mCAAqB;AAAA,YACvB;AAAA,UACF;AACA,eAAK,OAAO,YAAY;AAAA,QAC1B;AACA,YAAI,KAAK,mBAAmB;AAC1B,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,8BAA8B;AACrC,iBAAO,CAAC;AAAA,QACV,WAAW,KAAK,wBAAwB;AAEtC,iBAAO,uBAAuB,CAAC;AAAA,QACjC,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEC,wBAAwB;AACvB,eAAO,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACvC,eAAK,OAAO,YAAY;AAAA,QAC1B;AAAA,MACF;AAAA,MAEC,oBAAoB;AACnB,cAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,YAAI,MAAM,eAAe;AACvB,iBAAO;AAAA,QACT;AAEA,YAAI,MAAM,mBAAmB,eAAe,iBAAiB;AAC3D,iBAAO,KAAK,uBAAuB;AAAA,QACrC;AAEA,YAAI,MAAM,mBAAmB,eAAe,QAAQ;AAClD,iBAAO;AAAA,QACT;AACA,cAAM,cAAc,KAAK,gBAAgB;AAAA,UACvC,KAAK,OAAO,uBAAuB,KAAK;AAAA,QAC1C;AACA,YAAI,CAAC,aAAa;AAChB,iBAAO;AAAA,QACT;AAGA,YAAI,yBAAyB,KAAK,OAAO,aAAa,IAAI;AAC1D,eACE,yBAAyB,KAAK,OAAO,OAAO,UAC5C,KAAK,OAAO,OAAO,sBAAsB,EAAE,SAASA,WAAG,QACvD;AACA;AAAA,QACF;AAKA,YAAI,KAAK,OAAO,OAAO,sBAAsB,EAAE,SAASA,WAAG,QAAQ;AACjE,cACE,KAAK,OAAO,qBAAqB,CAAC,EAAE,SAASA,WAAG,UAChD,KAAK,OAAO,qBAAqB,EAAE,EAAE,SAASA,WAAG,MACjD;AACA,iBAAK,OAAO,aAAa,GAAG,WAAW,gBAAgB;AAEvD,iBAAK,OAAO,YAAY;AAExB,iBAAK,gBAAgB,oBAAoB;AACzC,iBAAK,OAAO,kBAAkBA,WAAG,MAAM;AAAA,UACzC,OAAO;AAEL,iBAAK,OAAO,aAAa,OAAO,WAAW,GAAG;AAAA,UAChD;AAAA,QACF,OAAO;AACL,eAAK,OAAO,aAAa,WAAW;AAAA,QACtC;AACA,eAAO;AAAA,MACT;AAAA,MAEA,yBAAyB;AACvB,cAAM,aAAa,KAAK,OAAO,eAAe;AAC9C,cAAM,cAAc,KAAK,gBAAgB,yBAAyB,UAAU;AAC5E,YAAI,CAAC,aAAa;AAChB,iBAAO;AAAA,QACT;AACA,aAAK,OAAO,aAAa,GAAG,UAAU,KAAK,WAAW,EAAE;AACxD,eAAO;AAAA,MACT;AAAA,MAEA,gBAAgB;AACd,YACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,KAAK,KACzC,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,QAAQA,WAAG,KAAK,GACpD;AACA,eAAK,iBAAiB;AAEtB,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,QAAQ,GAAG;AACjD,cAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,KAAK,GAAG;AAC3D,iBAAK,mBAAmB;AAGxB,mBAAO;AAAA,UACT;AACA,eAAK,qBAAqB;AAC1B,iBAAO;AAAA,QACT,WAAW,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,MAAM,GAAG;AACtD,eAAK,sBAAsB;AAC3B,iBAAO;AAAA,QACT,WACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,IAAI,KACxC,KAAK,OAAO,yBAAyB,KAAK,OAAO,aAAa,IAAI,GAAG,kBAAkB,KAAK,GAC5F;AAMA,eAAK,OAAO,mBAAmB;AAC/B,eAAK,OAAO,YAAY;AACxB,cAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,mBAAO,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACvC,mBAAK,OAAO,YAAY;AAAA,YAC1B;AACA,iBAAK,OAAO,YAAY;AAAA,UAC1B,OAAO;AAEL,iBAAK,OAAO,YAAY;AACxB,gBAAI,KAAK,OAAO,SAASA,WAAG,GAAG,GAAG;AAEhC,mBAAK,OAAO,YAAY;AAExB,mBAAK,OAAO,YAAY;AAAA,YAC1B;AAAA,UACF;AAEA,cACE,KAAK,OAAO,kBAAkB,kBAAkB,KAAK,KACrD,KAAK,OAAO,gBAAgB,KAAK,OAAO,aAAa,IAAI,GAAGA,WAAG,MAAM,GACrE;AACA,iBAAK,OAAO,YAAY;AACxB,iBAAK,OAAO,YAAY;AACxB,wCAA4B,KAAK,MAAM;AAAA,UACzC;AACA,iBAAO;AAAA,QACT;AACA,aAAK,iBAAiB;AACtB,YACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,IAAI,KACxC,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,IAAI,KACxC,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,MAAM,GAC1C;AACA,eAAK,iBAAiB;AACtB,iBAAO;AAAA,QACT,WACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,SAAS;AAAA,QAE7C,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,MAAMA,WAAG,SAAS,GACtD;AACA,eAAK,sBAAsB;AAC3B,iBAAO;AAAA,QACT,WACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,MAAM,KAC1C,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,WAAWA,WAAG,MAAM,KACxD,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,EAAE,GACtC;AACA,eAAK,mBAAmB;AACxB,iBAAO;AAAA,QACT,WAAW,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,IAAI,GAAG;AACpD,eAAK,kBAAkB;AACvB,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM,IAAI,MAAM,6BAA6B;AAAA,QAC/C;AAAA,MACF;AAAA,MAEC,oBAAoB;AACnB,cAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,cAAM,kBAAkB,KAAK,OAAO,OAAO,QAAQ,CAAC;AAGpD,YAAI,gBAAgB,UAAU,gBAAgB,SAASA,WAAG,MAAM;AAC9D,iBAAO;AAAA,QACT;AACA,YAAI,gBAAgB,eAAe;AACjC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,KAAK,KAAK,OAAO,gBAAgB,QAAQ,GAAGA,WAAG,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,KAAK,CAACA,WAAG,MAAMA,WAAG,MAAMA,WAAG,MAAM,EAAE,SAAS,KAAK,OAAO,OAAO,QAAQ,CAAC,EAAE,IAAI,GAAG;AAI5F,iBAAO;AAAA,QACT;AACA,cAAM,oBAAoB,KAAK,gBAAgB;AAAA,UAC7C,KAAK,OAAO,uBAAuB,eAAe;AAAA,QACpD;AACA,YAAI,CAAC,mBAAmB;AACtB,iBAAO;AAAA,QACT;AACA,aAAK,OAAO,UAAU;AACtB,aAAK,OAAO,WAAW,IAAI,iBAAiB,IAAI;AAChD,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKC,2BAA2B;AAC1B,cAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,cAAM,kBAAkB,KAAK,OAAO,OAAO,QAAQ,CAAC;AACpD,YAAI,gBAAgB,SAASA,WAAG,MAAM;AACpC,iBAAO;AAAA,QACT;AACA,YAAI,gBAAgB,eAAe;AACjC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,KAAK,KAAK,OAAO,gBAAgB,QAAQ,GAAGA,WAAG,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AACA,cAAM,oBAAoB,KAAK,gBAAgB;AAAA,UAC7C,KAAK,OAAO,uBAAuB,eAAe;AAAA,QACpD;AACA,YAAI,CAAC,mBAAmB;AACtB,iBAAO;AAAA,QACT;AACA,aAAK,OAAO,WAAW,MAAM,iBAAiB,EAAE;AAChD,aAAK,OAAO,UAAU;AACtB,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKC,mBAAmB;AAClB,cAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,cAAM,kBAAkB,KAAK,OAAO,OAAO,QAAQ,CAAC;AACpD,YAAI,gBAAgB,SAASA,WAAG,MAAM;AACpC,iBAAO;AAAA,QACT;AACA,YAAI,gBAAgB,eAAe;AACjC,iBAAO;AAAA,QACT;AAEA,YACE,QAAQ,IAAI,KAAK,OAAO,OAAO,WAC9B,KAAK,OAAO,gBAAgB,QAAQ,GAAGA,WAAG,GAAG,KAC5C,KAAK,OAAO,gBAAgB,QAAQ,GAAGA,WAAG,QAAQ,KAClD,KAAK,OAAO,gBAAgB,QAAQ,GAAGA,WAAG,MAAM,IAClD;AACA,iBAAO;AAAA,QACT;AACA,cAAM,iBAAiB,KAAK,OAAO,uBAAuB,eAAe;AACzE,cAAM,oBAAoB,KAAK,gBAAgB,qBAAqB,cAAc;AAClF,YAAI,CAAC,mBAAmB;AACtB,iBAAO;AAAA,QACT;AACA,aAAK,OAAO,WAAW,GAAG,iBAAiB,KAAK;AAChD,aAAK,OAAO,UAAU;AACtB,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA,MAMC,oBAAoB;AACnB,cAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,cAAM,kBAAkB,KAAK,OAAO,OAAO,KAAK;AAChD,cAAM,gBAAgB,KAAK,OAAO,OAAO,QAAQ,CAAC;AAClD,YAAI,gBAAgB,SAASA,WAAG,MAAM;AACpC,iBAAO;AAAA,QACT;AACA,YAAI,gBAAgB,eAAe;AACjC,iBAAO;AAAA,QACT;AACA,YAAI,SAAS,KAAK,KAAK,OAAO,gBAAgB,QAAQ,GAAGA,WAAG,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AACA,cAAM,iBAAiB,KAAK,OAAO,uBAAuB,eAAe;AACzE,cAAM,oBAAoB,KAAK,gBAAgB,qBAAqB,cAAc;AAClF,YAAI,CAAC,mBAAmB;AACtB,iBAAO;AAAA,QACT;AACA,cAAM,eAAe,KAAK,OAAO,gBAAgB,aAAa;AAG9D,cAAMC,QAAO,KAAK,gBAAgB,yBAAyB,cAAc,KAAK;AAC9E,YAAI,iBAAiB,MAAM;AACzB,eAAK,OAAO,aAAa,IAAIA,KAAI,MAAM,iBAAiB,MAAMA,KAAI,SAASA,KAAI,OAAO;AAAA,QACxF,WAAW,iBAAiB,MAAM;AAChC,eAAK,OAAO,aAAa,IAAIA,KAAI,MAAM,iBAAiB,MAAMA,KAAI,SAASA,KAAI,OAAO;AAAA,QACxF,OAAO;AACL,gBAAM,IAAI,MAAM,wBAAwB,YAAY,EAAE;AAAA,QACxD;AACA,aAAK,OAAO,YAAY;AACxB,eAAO;AAAA,MACT;AAAA,MAEC,uBAAuB;AACtB,YAAI,uBAAuB;AAC3B,YACE,KAAK,OAAO,SAASD,WAAG,SAASA,WAAG,UAAUA,WAAG,WAAWA,WAAG,IAAI;AAAA,QAElE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,MAAMA,WAAG,WAAWA,WAAG,IAAI,KAC3E,KAAK,OAAO;AAAA,UACV,KAAK,OAAO,aAAa,IAAI;AAAA,UAC7B,kBAAkB;AAAA,QACpB,GACF;AACA,eAAK,OAAO,mBAAmB;AAC/B,eAAK,OAAO,YAAY;AAGxB,gBAAM,OAAO,KAAK,qBAAqB;AACvC,eAAK,OAAO,WAAW,sBAAsB,IAAI,GAAG;AAAA,QACtD,WACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,QAAQA,WAAG,IAAI,KAChE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,WAAWA,WAAG,QAAQA,WAAG,IAAI,KAC9E,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,EAAE,GACnD;AACA,eAAK,OAAO,mBAAmB;AAC/B,eAAK,OAAO,YAAY;AACxB,eAAK,eAAe;AACpB,cAAI,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AACtC,iBAAK,OAAO,YAAY;AAAA,UAC1B;AACA,gBAAM,OAAO,KAAK,gBAAgB,kBAAkB;AACpD,eAAK,OAAO,WAAW,sBAAsB,IAAI,GAAG;AAAA,QAEtD,WACE;AAAA,UACE,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,QACP,GACA;AAIA,iCAAuB;AACvB,eAAK,OAAO,mBAAmB;AAC/B,eAAK,OAAO,YAAY;AACxB,eAAK,OAAO,YAAY;AAAA,QAC1B,WAAW,KAAK,2BAA2B;AAGzC,gBAAM,iBAAiB,KAAK,YAAY,cAAc,UAAU;AAChE,eAAK,OAAO,aAAa,OAAO,cAAc,YAAY;AAC1D,eAAK,OAAO,UAAU;AACtB,eAAK,OAAO,WAAW,MAAM,cAAc,IAAI;AAC/C,eAAK,0BAA0B,8BAA8B,cAAc;AAAA,QAC7E,OAAO;AAEL,eAAK,OAAO,aAAa,UAAU;AACnC,eAAK,OAAO,UAAU;AACtB,eAAK,OAAO,WAAW,IAAI;AAAA,QAC7B;AACA,YAAI,sBAAsB;AACxB,eAAK,mBAAmB;AAAA,QAC1B;AAAA,MACF;AAAA,MAEC,iBAAiB;AAChB,eAAO,KAAK,OAAO,SAASA,WAAG,EAAE,GAAG;AAClC,eAAK,OAAO,UAAU;AACtB,cAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,iBAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,iBAAK,gBAAgB,oBAAoB;AACzC,iBAAK,OAAO,kBAAkBA,WAAG,MAAM;AAAA,UACzC,OAAO;AACL,iBAAK,OAAO,kBAAkBA,WAAG,IAAI;AACrC,mBAAO,KAAK,OAAO,SAASA,WAAG,GAAG,GAAG;AACnC,mBAAK,OAAO,kBAAkBA,WAAG,GAAG;AACpC,mBAAK,OAAO,kBAAkBA,WAAG,IAAI;AAAA,YACvC;AACA,gBAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,mBAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,mBAAK,gBAAgB,oBAAoB;AACzC,mBAAK,OAAO,kBAAkBA,WAAG,MAAM;AAAA,YACzC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKC,mBAAmB;AAClB,YAAI,KAAK,kBAAkB,GAAG;AAC5B,eAAK,uBAAuB;AAAA,QAC9B,OAAO;AACL,eAAK,wBAAwB;AAAA,QAC/B;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOC,oBAAoB;AACnB,YAAI,aAAa,KAAK,OAAO,aAAa;AAE1C;AAEA;AACA,YAAI,CAAC,KAAK,OAAO,gBAAgB,YAAYA,WAAG,IAAI,GAAG;AACrD,iBAAO;AAAA,QACT;AACA;AACA,eAAO,aAAa,KAAK,OAAO,OAAO,UAAU,KAAK,OAAO,OAAO,UAAU,EAAE,QAAQ;AACtF;AAAA,QACF;AACA,YAAI,CAAC,KAAK,OAAO,gBAAgB,YAAYA,WAAG,EAAE,GAAG;AACnD,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAeC,yBAAyB;AAExB,aAAK,OAAO,mBAAmB;AAE/B,aAAK,OAAO,UAAU;AACtB,cAAM,UAAU,KAAK,OAAO,eAAe;AAE3C,eAAO,CAAC,KAAK,OAAO,SAASA,WAAG,EAAE,GAAG;AACnC,eAAK,gBAAgB,aAAa;AAAA,QACpC;AACA,cAAM,WAAW,KAAK,OAAO,aAAa,EAAE;AAC5C,YAAI,YAAY,MAAM;AACpB,gBAAM,IAAI,MAAM,qCAAqC;AAAA,QACvD;AACA,eAAO,KAAK,OAAO,aAAa,IAAI,UAAU;AAC5C,eAAK,gBAAgB,aAAa;AAAA,QACpC;AACA,aAAK,OAAO,WAAW,aAAa,OAAO,MAAM,OAAO,EAAE;AAAA,MAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASC,0BAA0B;AACzB,aAAK,OAAO,mBAAmB;AAC/B,aAAK,OAAO,YAAY;AACxB,cAAM,cAAc,KAAK,OAAO,SAASA,WAAG,MAAM;AAClD,YAAI,aAAa;AACf,eAAK,OAAO,WAAW,GAAG;AAAA,QAC5B;AAEA,YAAI,QAAQ;AACZ,eAAO,MAAM;AACX,cACE,KAAK,OAAO,SAASA,WAAG,MAAM,KAC9B,KAAK,OAAO,SAASA,WAAG,YAAY,KACpC,KAAK,OAAO,SAASA,WAAG,QAAQ,GAChC;AACA;AACA,iBAAK,OAAO,UAAU;AAAA,UACxB,WAAW,KAAK,OAAO,SAASA,WAAG,MAAM,KAAK,KAAK,OAAO,SAASA,WAAG,QAAQ,GAAG;AAC/E;AACA,iBAAK,OAAO,UAAU;AAAA,UACxB,WACE,UAAU,KACV,CAAC,KAAK,OAAO,SAASA,WAAG,IAAI,KAC7B,CAAC,KAAK,OAAO,aAAa,EAAE,QAC5B;AACA;AAAA,UACF,WAAW,KAAK,OAAO,SAASA,WAAG,EAAE,GAAG;AAGtC,kBAAM,WAAW,KAAK,OAAO,aAAa,EAAE;AAC5C,gBAAI,YAAY,MAAM;AACpB,oBAAM,IAAI,MAAM,qCAAqC;AAAA,YACvD;AACA,mBAAO,KAAK,OAAO,aAAa,IAAI,UAAU;AAC5C,mBAAK,gBAAgB,aAAa;AAAA,YACpC;AAAA,UACF,OAAO;AACL,kBAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,gBAAI,cAAc,KAAK,GAAG;AACxB,oBAAM,OAAO,KAAK,OAAO,eAAe;AACxC,kBAAI,cAAc,KAAK,gBAAgB,yBAAyB,IAAI;AACpE,kBAAI,gBAAgB,MAAM;AACxB,sBAAM,IAAI,MAAM,8BAA8B,IAAI,4BAA4B;AAAA,cAChF;AACA,kBAAI,6BAA6B,KAAK,GAAG;AACvC,8BAAc,GAAG,IAAI,KAAK,WAAW;AAAA,cACvC;AACA,mBAAK,OAAO,aAAa,WAAW;AAAA,YACtC,OAAO;AACL,mBAAK,gBAAgB,aAAa;AAAA,YACpC;AAAA,UACF;AAAA,QACF;AAEA,YAAI,aAAa;AAEf,gBAAM,WAAW,KAAK,OAAO,aAAa,EAAE;AAC5C,cAAI,YAAY,MAAM;AACpB,kBAAM,IAAI,MAAM,qCAAqC;AAAA,UACvD;AACA,iBAAO,KAAK,OAAO,aAAa,IAAI,UAAU;AAC5C,iBAAK,gBAAgB,aAAa;AAAA,UACpC;AACA,eAAK,OAAO,WAAW,GAAG;AAAA,QAC5B;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQC,wBAAwB;AACvB,aAAK,OAAO,aAAa,EAAE;AAC3B,cAAM,OAAO,KAAK,qBAAqB;AACvC,aAAK,OAAO,WAAW,YAAY,IAAI,MAAM,IAAI,GAAG;AAAA,MACtD;AAAA;AAAA;AAAA;AAAA,MAKC,uBAAuB;AACtB,YAAI,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AACtC,eAAK,OAAO,UAAU;AAAA,QACxB,WAAW,KAAK,OAAO,SAASA,WAAG,MAAMA,WAAG,SAAS,GAAG;AACtD,cAAI,CAAC,KAAK,OAAO,kBAAkB,kBAAkB,MAAM,GAAG;AAC5D,kBAAM,IAAI,MAAM,4CAA4C;AAAA,UAC9D;AACA,eAAK,OAAO,UAAU;AACtB,eAAK,OAAO,UAAU;AAAA,QACxB;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,IAAI,GAAG;AACjC,eAAK,OAAO,UAAU;AAAA,QACxB;AACA,YAAI,CAAC,KAAK,OAAO,SAASA,WAAG,IAAI,GAAG;AAClC,gBAAM,IAAI,MAAM,iDAAiD;AAAA,QACnE;AACA,cAAM,OAAO,KAAK,OAAO,eAAe;AACxC,aAAK,OAAO,UAAU;AACtB,YAAI,KAAK,OAAO,aAAa,EAAE,QAAQ;AACrC,eAAK,OAAO,mBAAmB;AAC/B,iBAAO,KAAK,OAAO,aAAa,EAAE,QAAQ;AACxC,iBAAK,OAAO,YAAY;AAAA,UAC1B;AAAA,QACF;AACA,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,aAAK,gBAAgB,oBAAoB;AACzC,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,aAAK,gBAAgB,yBAAyB;AAC9C,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,aAAK,gBAAgB,oBAAoB;AACzC,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQC,qBAAqB;AACpB,aAAK,OAAO,mBAAmB;AAC/B,aAAK,eAAe;AACpB,YAAI,KAAK,OAAO,SAASA,WAAG,SAAS,GAAG;AACtC,eAAK,OAAO,YAAY;AAAA,QAC1B;AACA,cAAM,OAAO,KAAK,gBAAgB,kBAAkB;AACpD,aAAK,OAAO,WAAW,YAAY,IAAI,MAAM,IAAI,GAAG;AAAA,MACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiBC,wBAAwB;AACvB,aAAK,OAAO,mBAAmB;AAC/B,aAAK,OAAO,YAAY;AAExB,cAAM,aAAa,aAAa,KAAK,MAAM;AAE3C,cAAM,mBAAmB,CAAC;AAC1B,eAAO,MAAM;AACX,cAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,iBAAK,OAAO,YAAY;AACxB;AAAA,UACF;AAEA,gBAAM,gBAAgB,6BAA6B,KAAK,MAAM;AAE9D,iBAAO,KAAK,OAAO,aAAa,IAAI,cAAc,UAAU;AAC1D,iBAAK,OAAO,YAAY;AAAA,UAC1B;AAEA,gBAAM,qBACJ,cAAc,UACb,CAAC,cAAc,KAAK,8BAA8B,cAAc,QAAQ;AAC3E,cAAI,CAAC,oBAAoB;AACvB,kBAAM,eAAe,cAAc;AACnC,gBAAI,iBAAiB,WAAW;AAC9B,mBAAK,mBAAmB;AAAA,YAC1B,OAAO;AACL,mBAAK,iBAAiB;AAAA,YACxB;AACA,kBAAM,YAAY,cAAc;AAChC,kBAAM,eAAe,KAAK,gBAAgB,yBAAyB,SAAS;AAC5E,6BAAiB,KAAK,WAAW,YAAY,MAAM,gBAAgB,SAAS,GAAG;AAAA,UACjF;AAEA,cAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,iBAAK,OAAO,YAAY;AACxB;AAAA,UACF;AACA,cAAI,KAAK,OAAO,SAASA,WAAG,OAAOA,WAAG,MAAM,GAAG;AAC7C,iBAAK,OAAO,YAAY;AACxB,iBAAK,OAAO,YAAY;AACxB;AAAA,UACF,WAAW,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AACzC,iBAAK,OAAO,YAAY;AAAA,UAC1B,OAAO;AACL,kBAAM,IAAI,MAAM,qBAAqB,KAAK,UAAU,KAAK,OAAO,aAAa,CAAC,CAAC,EAAE;AAAA,UACnF;AAAA,QACF;AAEA,YAAI,KAAK,OAAO,kBAAkB,kBAAkB,KAAK,GAAG;AAG1D,eAAK,OAAO,YAAY;AACxB,gBAAM,OAAO,KAAK,OAAO,YAAY;AACrC,eAAK,OAAO,mCAAmC,KAAK,gBAAgB,gBAAgB,IAAI,CAAC;AACzF,sCAA4B,KAAK,MAAM;AAAA,QACzC,OAAO;AAEL,eAAK,OAAO,WAAW,iBAAiB,KAAK,GAAG,CAAC;AAAA,QACnD;AAEA,YAAI,KAAK,OAAO,SAASA,WAAG,IAAI,GAAG;AACjC,eAAK,OAAO,YAAY;AAAA,QAC1B;AAAA,MACF;AAAA,MAEC,oBAAoB;AACnB,aAAK,OAAO,mBAAmB;AAC/B,eAAO,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACvC,eAAK,OAAO,YAAY;AAAA,QAC1B;AACA,cAAM,OAAO,KAAK,OAAO,YAAY;AACrC,aAAK,OAAO,mCAAmC,KAAK,gBAAgB,gBAAgB,IAAI,CAAC;AACzF,oCAA4B,KAAK,MAAM;AACvC,YAAI,KAAK,OAAO,SAASA,WAAG,IAAI,GAAG;AACjC,eAAK,OAAO,YAAY;AAAA,QAC1B;AAAA,MACF;AAAA,MAEC,8BAA8B,MAAM;AACnC,eACE,KAAK,gCACL,CAAC,KAAK,qBACN,CAAC,KAAK,gBAAgB,kBAAkB,IAAI,IAAI;AAAA,MAEpD;AAAA,IACF;AAAA;AAAA;;;ACn5BA,IAuBqB;AAvBrB;AAAA;AAGA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AAEA;AAMA,IAAqB,uBAArB,cAAkD,YAAY;AAAA,MAK5D,YACG,QACA,aACA,eACA,2BACA,8BACA,wBACA,mBACD,SACA;AACA,cAAM;AAAE,aAAK,SAAS;AAAO,aAAK,cAAc;AAAY,aAAK,gBAAgB;AAAc,aAAK,4BAA4B;AAA0B,aAAK,+BAA+B;AAA6B,aAAK,yBAAyB;AAAuB,aAAK,oBAAoB;AAAkB;AAC3T,aAAK,qBACH,gCAAgC,CAAC,oBAC7B,sBAAsB,QAAQ,OAAO,IACrC,oBAAI,IAAI;AACd,aAAK,kBACH,gCAAgC,CAAC,oBAC7B,mBAAmB,MAAM,IACzB;AACN,aAAK,sCAAsC,QAAQ,QAAQ,mCAAmC;AAAA,MAChG;AAAA,MAEA,UAAU;AAER,YAAI,KAAK,OAAO,SAASE,WAAG,SAASA,WAAG,MAAMA,WAAG,EAAE,GAAG;AACpD,iBAAO,KAAK,oBAAoB;AAAA,QAClC;AACA,YACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,MAAMA,WAAG,MAAMA,WAAG,EAAE,KACxD,KAAK,OAAO,yBAAyB,KAAK,OAAO,aAAa,IAAI,GAAG,kBAAkB,KAAK,GAC5F;AAEA,eAAK,OAAO,mBAAmB;AAE/B,mBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,iBAAK,OAAO,YAAY;AAAA,UAC1B;AACA,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,EAAE,GAAG;AAC3C,eAAK,OAAO,aAAa,gBAAgB;AACzC,iBAAO;AAAA,QACT;AACA,YACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,SAASA,WAAG,MAAMA,WAAG,MAAMA,WAAG,EAAE,KACpE,KAAK,OAAO,yBAAyB,KAAK,OAAO,aAAa,IAAI,GAAG,kBAAkB,KAAK,GAC5F;AAEA,eAAK,OAAO,mBAAmB;AAE/B,mBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,iBAAK,OAAO,YAAY;AAAA,UAC1B;AACA,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,OAAO,GAAG;AACpC,iBAAO,KAAK,cAAc;AAAA,QAC5B;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,QAAQ,GAAG;AACjD,iBAAO,KAAK,qBAAqB;AAAA,QACnC;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,MAAM,GAAG;AAC/C,iBAAO,KAAK,oBAAoB;AAAA,QAClC;AACA,YACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,IAAI,KACxC,KAAK,OAAO,yBAAyB,KAAK,OAAO,aAAa,IAAI,GAAG,kBAAkB,KAAK,GAC5F;AAMA,eAAK,OAAO,mBAAmB;AAC/B,eAAK,OAAO,YAAY;AACxB,cAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,mBAAO,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACvC,mBAAK,OAAO,YAAY;AAAA,YAC1B;AACA,iBAAK,OAAO,YAAY;AAAA,UAC1B,OAAO;AAEL,iBAAK,OAAO,YAAY;AACxB,gBAAI,KAAK,OAAO,SAASA,WAAG,GAAG,GAAG;AAEhC,mBAAK,OAAO,YAAY;AAExB,mBAAK,OAAO,YAAY;AAAA,YAC1B;AAAA,UACF;AAEA,cACE,KAAK,OAAO,kBAAkB,kBAAkB,KAAK,KACrD,KAAK,OAAO,gBAAgB,KAAK,OAAO,aAAa,IAAI,GAAGA,WAAG,MAAM,GACrE;AACA,iBAAK,OAAO,YAAY;AACxB,iBAAK,OAAO,YAAY;AACxB,wCAA4B,KAAK,MAAM;AAAA,UACzC;AACA,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,MAEC,sBAAsB;AACrB,cAAM,aAAa,KAAK,OAAO,sBAAsB,KAAK,OAAO,aAAa,IAAI,CAAC;AACnF,YAAI,KAAK,qCAAqC,UAAU,GAAG;AAEzD,4BAAkB,KAAK,MAAM;AAAA,QAC/B,WAAW,KAAK,qCAAqC;AAInD,eAAK,OAAO,aAAa,OAAO;AAEhC,eAAK,OAAO,UAAU;AAEtB,eAAK,OAAO,UAAU;AAEtB,eAAK,OAAO,aAAa,KAAK,cAAc,cAAc,SAAS,CAAC;AAAA,QACtE,OAAO;AAEL,eAAK,OAAO,aAAa,OAAO;AAAA,QAClC;AACA,eAAO;AAAA,MACT;AAAA,MAEC,gBAAgB;AACf,YAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,MAAM,GAAG;AAE/C,iBAAO;AAAA,QACT;AAEA,cAAM,WAAW,KAAK,OAAO,SAAS;AACtC,cAAM,oBAAoB,KAAK,yBAAyB;AACxD,YAAI,mBAAmB;AACrB,eAAK,OAAO,kBAAkB,QAAQ;AACtC,iBAAO,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACvC,iBAAK,OAAO,YAAY;AAAA,UAC1B;AACA,eAAK,OAAO,YAAY;AACxB,sCAA4B,KAAK,MAAM;AACvC,cAAI,KAAK,OAAO,SAASA,WAAG,IAAI,GAAG;AACjC,iBAAK,OAAO,YAAY;AAAA,UAC1B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQC,2BAA2B;AAC1B,aAAK,OAAO,kBAAkBA,WAAG,OAAO;AACxC,YACE,KAAK,OAAO,kBAAkB,kBAAkB,KAAK,KACrD,CAAC,KAAK,OAAO,gBAAgB,KAAK,OAAO,aAAa,IAAI,GAAGA,WAAG,KAAK,KACrE,CAAC,KAAK,OAAO,yBAAyB,KAAK,OAAO,aAAa,IAAI,GAAG,kBAAkB,KAAK,GAC7F;AAEA,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAEnC,eAAK,OAAO,UAAU;AACtB,iBAAO;AAAA,QACT;AAGA,YACE,KAAK,OAAO,kBAAkB,kBAAkB,OAAO,KACvD,KAAK,OAAO,yBAAyB,KAAK,OAAO,aAAa,IAAI,GAAG,kBAAkB,KAAK,GAC5F;AACA,eAAK,OAAO,UAAU;AAAA,QACxB;AAEA,YAAI,qBAAqB;AACzB,YAAI,sBAAsB;AAC1B,YAAI,aAAa;AAGjB,YAAI,KAAK,OAAO,SAASA,WAAG,IAAI,GAAG;AACjC,cAAI,KAAK,qCAAqC,KAAK,OAAO,eAAe,CAAC,GAAG;AAC3E,iBAAK,OAAO,YAAY;AACxB,gBAAI,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AAClC,mBAAK,OAAO,YAAY;AAAA,YAC1B;AAAA,UACF,OAAO;AACL,iCAAqB;AACrB,iBAAK,OAAO,UAAU;AACtB,gBAAI,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AASlC,2BAAa;AACb,mBAAK,OAAO,YAAY;AAAA,YAC1B;AAAA,UACF;AAAA,QACF;AAEA,YAAI,KAAK,OAAO,SAASA,WAAG,IAAI,GAAG;AACjC,cAAI,KAAK,qCAAqC,KAAK,OAAO,8BAA8B,CAAC,CAAC,GAAG;AAC3F,iBAAK,OAAO,YAAY;AACxB,iBAAK,OAAO,YAAY;AACxB,iBAAK,OAAO,YAAY;AAAA,UAC1B,OAAO;AACL,gBAAI,YAAY;AACd,mBAAK,OAAO,WAAW,GAAG;AAAA,YAC5B;AACA,iCAAqB;AACrB,iBAAK,OAAO,kBAAkBA,WAAG,IAAI;AACrC,iBAAK,OAAO,kBAAkBA,WAAG,IAAI;AACrC,iBAAK,OAAO,kBAAkBA,WAAG,IAAI;AAAA,UACvC;AAAA,QACF,WAAW,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAC1C,cAAI,YAAY;AACd,iBAAK,OAAO,WAAW,GAAG;AAAA,UAC5B;AACA,eAAK,OAAO,UAAU;AACtB,iBAAO,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACvC,kCAAsB;AACtB,kBAAM,gBAAgB,6BAA6B,KAAK,MAAM;AAC9D,gBACE,cAAc,UACd,KAAK,qCAAqC,cAAc,SAAS,GACjE;AACA,qBAAO,KAAK,OAAO,aAAa,IAAI,cAAc,UAAU;AAC1D,qBAAK,OAAO,YAAY;AAAA,cAC1B;AACA,kBAAI,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AAClC,qBAAK,OAAO,YAAY;AAAA,cAC1B;AAAA,YACF,OAAO;AACL,mCAAqB;AACrB,qBAAO,KAAK,OAAO,aAAa,IAAI,cAAc,UAAU;AAC1D,qBAAK,OAAO,UAAU;AAAA,cACxB;AACA,kBAAI,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AAClC,qBAAK,OAAO,UAAU;AAAA,cACxB;AAAA,YACF;AAAA,UACF;AACA,eAAK,OAAO,kBAAkBA,WAAG,MAAM;AAAA,QACzC;AAEA,YAAI,KAAK,mBAAmB;AAC1B,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,8BAA8B;AACrC,iBAAO,CAAC;AAAA,QACV,WAAW,KAAK,wBAAwB;AAEtC,iBAAO,uBAAuB,CAAC;AAAA,QACjC,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEC,qCAAqC,MAAM;AAC1C,eACE,KAAK,gCACL,CAAC,KAAK,qBACN,CAAC,KAAK,mBAAmB,IAAI,IAAI;AAAA,MAErC;AAAA,MAEC,uBAAuB;AACtB,YACE;AAAA,UACE,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,QACP,GACA;AAIA,eAAK,OAAO,mBAAmB;AAC/B,eAAK,OAAO,YAAY;AACxB,eAAK,OAAO,YAAY;AACxB,iBAAO;AAAA,QACT;AAEA,cAAM,iBACJ,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,WAAWA,WAAG,IAAI;AAAA,QAElE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,MAAMA,WAAG,WAAWA,WAAG,IAAI,KAC3E,KAAK,OAAO;AAAA,UACV,KAAK,OAAO,aAAa,IAAI;AAAA,UAC7B,kBAAkB;AAAA,QACpB,KACF,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,QAAQA,WAAG,IAAI,KAChE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,WAAWA,WAAG,QAAQA,WAAG,IAAI;AAEhF,YAAI,CAAC,kBAAkB,KAAK,2BAA2B;AAGrD,gBAAM,iBAAiB,KAAK,YAAY,cAAc,UAAU;AAChE,eAAK,OAAO,aAAa,OAAO,cAAc,UAAU;AACxD,eAAK,OAAO,UAAU;AACtB,eAAK,OAAO,WAAW,IAAI,cAAc,IAAI;AAC7C,eAAK,0BAA0B,8BAA8B,cAAc;AAC3E,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYC,sBAAsB;AACrB,YAAI,CAAC,KAAK,8BAA8B;AACtC,iBAAO;AAAA,QACT;AACA,aAAK,OAAO,kBAAkBA,WAAG,OAAO;AACxC,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AAEvC,cAAM,aAAa,aAAa,KAAK,MAAM;AAC3C,YAAI,qBAAqB;AACzB,eAAO,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACvC,gBAAM,gBAAgB,6BAA6B,KAAK,MAAM;AAC9D,cACE,cAAc,UACb,CAAC,cAAc,KAAK,wBAAwB,cAAc,QAAQ,GACnE;AAEA,mBAAO,KAAK,OAAO,aAAa,IAAI,cAAc,UAAU;AAC1D,mBAAK,OAAO,YAAY;AAAA,YAC1B;AACA,gBAAI,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AAClC,mBAAK,OAAO,YAAY;AAAA,YAC1B;AAAA,UACF,OAAO;AAEL,iCAAqB;AACrB,mBAAO,KAAK,OAAO,aAAa,IAAI,cAAc,UAAU;AAC1D,mBAAK,OAAO,UAAU;AAAA,YACxB;AACA,gBAAI,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AAClC,mBAAK,OAAO,UAAU;AAAA,YACxB;AAAA,UACF;AAAA,QACF;AACA,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AAEvC,YAAI,CAAC,KAAK,qBAAqB,cAAc,CAAC,oBAAoB;AAGhE,eAAK,OAAO,YAAY;AACxB,eAAK,OAAO,YAAY;AACxB,sCAA4B,KAAK,MAAM;AAAA,QACzC;AAEA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOC,wBAAwB,MAAM;AAC7B,eACE,KAAK,gCACL,CAAC,KAAK,qBACN,KAAK,gBAAgB,iBAAiB,IAAI,IAAI,KAC9C,CAAC,KAAK,gBAAgB,kBAAkB,IAAI,IAAI;AAAA,MAEpD;AAAA,IACF;AAAA;AAAA;;;AC9ZA,IAMqB;AANrB;AAAA;AAAA;AACA;AAGA;AAEA,IAAqB,kBAArB,cAA6C,YAAY;AAAA,MACvD,YACG,iBACA,QACA,2BACD;AACA,cAAM;AAAE,aAAK,kBAAkB;AAAgB,aAAK,SAAS;AAAO,aAAK,4BAA4B;AAA0B;AAAA,MACjI;AAAA,MAEA,UAAU;AACR,YACE,KAAK,gBAAgB,6BAA6B,KAClD,KAAK,gBAAgB,wCAAwC,KAC7D,KAAK,gBAAgB,yBAAyB,GAC9C;AACA,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASC,WAAG,KAAK,GAAG;AAClC,eAAK,YAAY;AACjB,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,KAAK,GAAG;AAC9C,eAAK,uBAAuB;AAC5B,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,UAAUA,WAAG,KAAK,GAAG;AAC3D,eAAK,yBAAyB;AAC9B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,yBAAyB;AACvB,YAAI,KAAK,2BAA2B;AAElC,eAAK,OAAO,mBAAmB;AAC/B,gBAAM,WAAW,KAAK,OAAO,8BAA8B,CAAC;AAC5D,eAAK,YAAY;AACjB,eAAK,OAAO,WAAW,YAAY,QAAQ,MAAM,QAAQ,GAAG;AAAA,QAC9D,OAAO;AACL,eAAK,OAAO,UAAU;AACtB,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,2BAA2B;AAEzB,aAAK,OAAO,mBAAmB;AAE/B,aAAK,OAAO,YAAY;AACxB,cAAM,WAAW,KAAK,OAAO,8BAA8B,CAAC;AAC5D,aAAK,YAAY;AACjB,YAAI,KAAK,2BAA2B;AAClC,eAAK,OAAO,WAAW,sBAAsB,QAAQ,GAAG;AAAA,QAC1D,OAAO;AACL,eAAK,OAAO,WAAW,mBAAmB,QAAQ,GAAG;AAAA,QACvD;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA2CA,cAAc;AAEZ,aAAK,OAAO,aAAa,OAAO;AAChC,aAAK,OAAO,kBAAkBA,WAAG,IAAI;AAErC,YAAI,eAAe;AACnB,YAAI,KAAK,OAAO,kBAAkB,kBAAkB,GAAG,GAAG;AACxD,eAAK,OAAO,YAAY;AACxB,yBAAe,KAAK,OAAO,kBAAkB,kBAAkB,OAAO;AACtE,eAAK,OAAO,YAAY;AAAA,QAC1B;AACA,cAAM,kBAAkB,KAAK,OAAO,SAASA,WAAG,QAAQA,WAAG,MAAMA,WAAG,EAAE;AACtE,aAAK,OAAO,WAAW,kCAAkC;AAEzD,cAAM,aAAa,CAAC,gBAAgB,CAAC;AACrC,aAAK,OAAO,mCAAmC,aAAa,gBAAgB,IAAI;AAEhF,eAAO,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAEvC,cAAI,KAAK,OAAO,SAASA,WAAG,QAAQ,GAAG;AACrC,iBAAK,OAAO,YAAY;AACxB;AAAA,UACF;AACA,eAAK,mBAAmB,cAAc,eAAe;AACrD,cAAI,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AAClC,iBAAK,OAAO,UAAU;AAAA,UACxB;AAAA,QACF;AAEA,aAAK,OAAO,aAAa,aAAa,QAAQ,KAAK;AAAA,MACrD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,mBAAmB,cAAc,iBAAiB;AAChD,YAAI,cAAc;AAGhB,gBAAM,cAAc,KAAK,OAAO,eAAe;AAC/C,eAAK,OAAO,UAAU;AACtB,eAAK,OAAO,WAAW,aAAa,WAAW,IAAI;AAAA,QACrD,WAAW,iBAAiB;AAG1B,eAAK,OAAO,UAAU;AACtB,eAAK,OAAO,mCAAmC,GAAG;AAClD,eAAK,OAAO,UAAU;AAAA,QACxB,OAAO;AAGL,eAAK,OAAO,aAAa,IAAI,KAAK,OAAO,eAAe,CAAC,GAAG;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACrLC,SAAS,eAAe,KAAK;AAAE,MAAI,gBAAgB;AAAW,MAAI,QAAQ,IAAI,CAAC;AAAG,MAAI,IAAI;AAAG,SAAO,IAAI,IAAI,QAAQ;AAAE,UAAM,KAAK,IAAI,CAAC;AAAG,UAAM,KAAK,IAAI,IAAI,CAAC;AAAG,SAAK;AAAG,SAAK,OAAO,oBAAoB,OAAO,mBAAmB,SAAS,MAAM;AAAE,aAAO;AAAA,IAAW;AAAE,QAAI,OAAO,YAAY,OAAO,kBAAkB;AAAE,sBAAgB;AAAO,cAAQ,GAAG,KAAK;AAAA,IAAG,WAAW,OAAO,UAAU,OAAO,gBAAgB;AAAE,cAAQ,GAAG,IAAI,SAAS,MAAM,KAAK,eAAe,GAAG,IAAI,CAAC;AAAG,sBAAgB;AAAA,IAAW;AAAA,EAAE;AAAE,SAAO;AAAO;AAAngB,IAOM,kBACA,iBAUe;AAlBrB;AAAA;AAEA;AAGA;AAEA,IAAM,mBAAmB;AACzB,IAAM,kBAAkB,CAAC,QAAQ,UAAU,kBAAkB,iBAAiB;AAU9E,IAAqB,uBAArB,MAAqB,8BAA6B,YAAY;AAAA,MAC1D,SAAS;AAAC,aAAK,uBAAuB,CAAC;AAAA,MAAC;AAAA,MAE1C,YACG,iBACA,QACA,aACA,iBACD;AACA,cAAM;AAAE,aAAK,kBAAkB;AAAgB,aAAK,SAAS;AAAO,aAAK,cAAc;AAAY,aAAK,kBAAkB;AAAgB,8BAAqB,UAAU,OAAO,KAAK,IAAI;AAAE;AAAA,MAC7L;AAAA,MAEA,UAAU;AACR,YACE,KAAK,OAAO,aAAa,EAAE,eAAe,KAC1C,KAAK,OAAO,SAASC,WAAG,MAAMA,WAAG,KAAKA,WAAG,MAAMA,WAAG,MAAM,KACxD,KAAK,OAAO,eAAe,MAAM,kBACjC;AAGA,cAAI,eAAe,CAAC,MAAM,UAAU,OAAK,EAAE,iBAAiB,kBAAkB,QAAM,GAAG,gBAAgB,QAAQ,QAAM,GAAG,GAAG,kBAAkB,QAAM,GAAG,KAAK,QAAQ,QAAM,GAAG,gBAAgB,CAAC,CAAC,GAAG;AAC/L,mBAAO;AAAA,UACT;AACA,iBAAO,KAAK,oBAAoB;AAAA,QAClC;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,iBAAiB;AACf,YAAI,KAAK,qBAAqB,SAAS,GAAG;AAGxC,iBAAO,KAAK,qBAAqB,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,KAAK,EAAE;AAAA,QACtE;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUC,sBAAsB;AAGrB,aAAK,OAAO,YAAY;AAGxB,YAAI,4BAA4B;AAGhC,eAAO,KAAK,OAAO,SAASA,WAAG,KAAKA,WAAG,MAAMA,WAAG,MAAM,GAAG;AACvD,gBAAM,aAAa,KAAK,OAAO,sBAAsB,KAAK,OAAO,aAAa,IAAI,CAAC;AACnF,gBAAM,cAAc,gBAAgB,SAAS,UAAU;AACvD,cAAI,aAAa;AAGf,kBAAM,sBAAsB,KAAK,YAAY,cAAc,aAAa;AACxE,iBAAK,qBAAqB,KAAK,mBAAmB;AAClD,iBAAK,OAAO,aAAa,YAAY,mBAAmB,MAAM,gBAAgB,GAAG;AACjF,iBAAK,OAAO,UAAU;AACtB,iBAAK,OAAO,UAAU;AACtB,iBAAK,gBAAgB,oBAAoB;AACzC,iBAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,iBAAK,OAAO,WAAW,IAAI;AAC3B,wCAA4B;AAAA,UAC9B,OAAO;AAEL,gBAAI,2BAA2B;AAI7B,mBAAK,OAAO,UAAU;AAAA,YACxB,OAAO;AAGL,mBAAK,OAAO,aAAa,GAAG,gBAAgB,GAAG;AAAA,YACjD;AACA,iBAAK,OAAO,UAAU;AACtB,iBAAK,OAAO,UAAU;AACtB,iBAAK,gBAAgB,oBAAoB;AACzC,iBAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,wCAA4B;AAAA,UAC9B;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;AC9GA,IAIqB;AAJrB;AAAA;AAAA;AAEA;AAEA,IAAqB,8BAArB,cAAyD,YAAY;AAAA,MACnE,YAAa,QAAQ;AACnB,cAAM;AAAE,aAAK,SAAS;AAAO;AAAA,MAC/B;AAAA,MAEA,UAAU;AACR,YAAI,KAAK,OAAO,SAASC,WAAG,GAAG,GAAG;AAChC,gBAAM,OAAO,KAAK,OAAO,iBAAiB;AAC1C,cAAI,KAAK,SAAS,GAAG,GAAG;AACtB,iBAAK,OAAO,aAAa,KAAK,QAAQ,MAAM,EAAE,CAAC;AAC/C,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;ACnBA,IAKqB;AALrB;AAAA;AACA;AAEA;AAEA,IAAqB,kCAArB,cAA6D,YAAY;AAAA,MACvE,YAAa,QAAS,aAAa;AACjC,cAAM;AAAE,aAAK,SAAS;AAAO,aAAK,cAAc;AAAY;AAAA,MAC9D;AAAA,MAEA,UAAU;AACR,YAAI,KAAK,OAAO,SAASC,WAAG,QAAQA,WAAG,MAAM,GAAG;AAC9C,eAAK,OAAO,UAAU;AACtB,eAAK,OAAO,WAAW,KAAK,KAAK,YAAY,cAAc,GAAG,CAAC,GAAG;AAClE,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;AClBA,IAcqB;AAdrB;AAAA;AACA;AAEA;AAWA,IAAqB,qCAArB,cAAgE,YAAY;AAAA,MAC1E,YAAa,QAAS,aAAa;AACjC,cAAM;AAAE,aAAK,SAAS;AAAO,aAAK,cAAc;AAAY;AAAA,MAC9D;AAAA,MAEA,UAAU;AACR,YAAI,KAAK,OAAO,SAASC,WAAG,iBAAiB,GAAG;AAC9C,gBAAMC,SAAQ,KAAK,OAAO,aAAa;AACvC,cAAI,KAAK,OAAO,OAAOA,OAAM,iBAAiB,EAAE,kBAAkB;AAChE,iBAAK,OAAO,mCAAmC,iBAAiB;AAAA,UAClE,OAAO;AACL,iBAAK,OAAO,mCAAmC,WAAW;AAAA,UAC5D;AACA,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASD,WAAG,OAAO,GAAG;AACpC,gBAAME,aAAY,KAAK,OAAO,qBAAqB,CAAC;AACpD,cAAIA,WAAU,sBAAsB;AAClC,iBAAK,OAAO,mBAAmB;AAC/B,mBAAO;AAAA,UACT;AAAA,QACF;AACA,cAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,cAAM,aAAa,MAAM;AACzB,YACE,cAAc,QACd,KAAK,OAAO,OAAO,UAAU,EAAE;AAAA;AAAA,QAG/B,KAAK,OAAO,qBAAqB,EAAE,EAAE,SAASF,WAAG,QACjD;AACA,gBAAM,QAAQ,KAAK,YAAY,cAAc,GAAG;AAChD,cAAI;AACJ,cACE,aAAa,KACb,KAAK,OAAO,gBAAgB,aAAa,GAAGA,WAAG,OAAO,KACtD,KAAK,uBAAuB,GAC5B;AAIA,gCAAoB,GAAG,KAAK,cAAc,KAAK;AAAA,UACjD,OAAO;AACL,gCAAoB,GAAG,KAAK,OAAO,KAAK;AAAA,UAC1C;AACA,cAAI,KAAK,OAAO,OAAO,UAAU,EAAE,kBAAkB;AACnD,gCAAoB,SAAS,iBAAiB;AAAA,UAChD;AACA,cACE,KAAK,OAAO,SAASA,WAAG,aAAaA,WAAG,MAAM,KAC9C,KAAK,OAAO,SAASA,WAAG,aAAaA,WAAG,QAAQ,GAChD;AACA,gBAAI,KAAK,iBAAiB,GAAG;AAC3B,mBAAK,OAAO,WAAW,aAAa;AAAA,YACtC;AACA,iBAAK,OAAO,mCAAmC,qBAAqB,iBAAiB,EAAE;AAAA,UACzF,WAAW,KAAK,OAAO,SAASA,WAAG,aAAaA,WAAG,QAAQ,GAAG;AAC5D,iBAAK,OAAO,mCAAmC,uBAAuB,iBAAiB,EAAE;AAAA,UAC3F,WAAW,KAAK,OAAO,SAASA,WAAG,WAAW,GAAG;AAC/C,iBAAK,OAAO,mCAAmC,uBAAuB,iBAAiB,GAAG;AAAA,UAC5F,WAAW,KAAK,OAAO,SAASA,WAAG,GAAG,GAAG;AACvC,iBAAK,OAAO,mCAAmC,eAAe,iBAAiB,GAAG;AAAA,UACpF,WAAW,KAAK,OAAO,SAASA,WAAG,QAAQ,GAAG;AAC5C,iBAAK,OAAO,mCAAmC,eAAe,iBAAiB,GAAG;AAAA,UACpF,WAAW,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAC1C,gBAAI,KAAK,iBAAiB,GAAG;AAC3B,mBAAK,OAAO,WAAW,aAAa;AAAA,YACtC;AACA,iBAAK,OAAO,mCAAmC,aAAa,iBAAiB,GAAG;AAAA,UAClF,OAAO;AACL,kBAAM,IAAI,MAAM,kDAAkD;AAAA,UACpE;AACA,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,yBAAyB;AACvB,YAAI,QAAQ;AACZ,iBAAS,IAAI,KAAK,OAAO,aAAa,IAAI,KAAK,KAAK;AAClD,cAAI,KAAK,KAAK,OAAO,OAAO,QAAQ;AAClC,kBAAM,IAAI,MAAM,wEAAwE;AAAA,UAC1F;AACA,cAAI,KAAK,OAAO,OAAO,CAAC,EAAE,sBAAsB;AAC9C;AAAA,UACF,WAAW,KAAK,OAAO,OAAO,CAAC,EAAE,oBAAoB;AACnD;AAAA,UACF;AACA,cAAI,QAAQ,GAAG;AACb,mBAAO;AAAA,UACT;AAGA,cAAI,UAAU,KAAK,KAAK,OAAO,OAAO,CAAC,EAAE,uBAAuB,MAAM;AACpE,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,mBAAmB;AACjB,YAAI,QAAQ;AACZ,YAAI,QAAQ,KAAK,OAAO,aAAa,IAAI;AACzC,eAAO,MAAM;AACX,cAAI,QAAQ,GAAG;AACb,kBAAM,IAAI;AAAA,cACR;AAAA,YACF;AAAA,UACF;AACA,cAAI,KAAK,OAAO,OAAO,KAAK,EAAE,sBAAsB;AAClD;AAAA,UACF,WAAW,KAAK,OAAO,OAAO,KAAK,EAAE,oBAAoB;AACvD;AAAA,UACF;AACA,cAAI,QAAQ,GAAG;AACb,mBAAO;AAAA,UACT;AAGA,cAAI,UAAU,KAAK,KAAK,OAAO,OAAO,KAAK,EAAE,uBAAuB,MAAM;AACxE,mBAAO,KAAK,OAAO,OAAO,QAAQ,CAAC,EAAE,SAASA,WAAG;AAAA,UACnD;AACA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC1JA,IAYqB;AAZrB;AAAA;AAEA;AACA;AAGA;AAMA,IAAqB,8BAArB,cAAyD,YAAY;AAAA,MACnE,YACG,iBACA,QACA,iBACA,SACD;AACA,cAAM;AAAE,aAAK,kBAAkB;AAAgB,aAAK,SAAS;AAAO,aAAK,kBAAkB;AAAgB,aAAK,UAAU;AAAQ;AAAA,MACpI;AAAA,MAEA,UAAU;AACR,cAAM,aAAa,KAAK,OAAO,aAAa;AAC5C,YAAI,KAAK,OAAO,eAAe,MAAM,oBAAoB;AACvD,gBAAM,UACJ,KAAK,mBAAmB,KAAK,gBAAgB,yBAAyB,kBAAkB;AAC1F,cAAI,SAAS;AACX,iBAAK,OAAO,aAAa,OAAO,OAAO,GAAG;AAAA,UAC5C,OAAO;AACL,iBAAK,OAAO,UAAU;AAAA,UACxB;AACA,eAAK,0BAA0B,UAAU;AACzC,iBAAO;AAAA,QACT;AACA,YACE,KAAK,OAAO,SAASG,WAAG,MAAMA,WAAG,KAAKA,WAAG,IAAI,KAC7C,KAAK,OAAO,eAAe,MAAM,WACjC,KAAK,OAAO,sBAAsB,KAAK,OAAO,aAAa,IAAI,CAAC,MAAM,eACtE;AACA,gBAAM,UAAU,KAAK,kBACjB,KAAK,gBAAgB,yBAAyB,OAAO,KAAK,UAC1D;AACJ,cAAI,SAAS;AACX,iBAAK,OAAO,aAAa,OAAO;AAChC,iBAAK,OAAO,UAAU;AACtB,iBAAK,OAAO,UAAU;AAAA,UACxB,OAAO;AACL,iBAAK,OAAO,UAAU;AACtB,iBAAK,OAAO,UAAU;AACtB,iBAAK,OAAO,UAAU;AAAA,UACxB;AACA,eAAK,0BAA0B,UAAU;AACzC,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKC,0BAA0B,YAAY;AACrC,cAAM,cAAc,KAAK,gBAAgB,UAAU;AACnD,YAAI,CAAC,aAAa;AAChB;AAAA,QACF;AAEA,YAAI,KAAK,sBAAsB,GAAG;AAChC,eAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,eAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,eAAK,OAAO,WAAW,iBAAiB,WAAW,IAAI;AACvD,eAAK,gBAAgB,oBAAoB;AACzC,eAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,eAAK,OAAO,kBAAkBA,WAAG,MAAM;AAAA,QACzC;AAAA,MACF;AAAA,MAEC,gBAAgB,YAAY;AAC3B,YAAI,aAAa,GAAG;AAClB,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,gBAAgB,aAAa,GAAGA,WAAG,MAAMA,WAAG,EAAE,GAAG;AAG/D,iBAAO,KAAK,OAAO,sBAAsB,aAAa,CAAC;AAAA,QACzD;AACA,YACE,cAAc,KACd,KAAK,OAAO,OAAO,aAAa,CAAC,EAAE,mBAAmB,eAAe,WACrE;AAEA,iBAAO,KAAK,OAAO,sBAAsB,aAAa,CAAC;AAAA,QACzD;AACA,YAAI,KAAK,OAAO,gBAAgB,aAAa,GAAGA,WAAG,SAASA,WAAG,QAAQ,GAAG;AACxE,iBAAO,KAAK,2BAA2B;AAAA,QACzC;AACA,eAAO;AAAA,MACT;AAAA,MAEC,6BAA6B;AAC5B,cAAM,WAAW,KAAK,QAAQ,YAAY;AAC1C,cAAM,eAAe,SAAS,MAAM,GAAG;AACvC,cAAM,WAAW,aAAa,aAAa,SAAS,CAAC;AACrD,cAAM,WAAW,SAAS,YAAY,GAAG;AACzC,cAAM,eAAe,aAAa,KAAK,WAAW,SAAS,MAAM,GAAG,QAAQ;AAC5E,YAAI,iBAAiB,WAAW,aAAa,aAAa,SAAS,CAAC,GAAG;AACrE,iBAAO,aAAa,aAAa,SAAS,CAAC;AAAA,QAC7C,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOC,wBAAwB;AACvB,YAAI,QAAQ,KAAK,OAAO,aAAa;AACrC,YAAI,CAAC,KAAK,OAAO,SAASA,WAAG,QAAQA,WAAG,MAAM,GAAG;AAC/C,iBAAO;AAAA,QACT;AAIA,cAAM,mBAAmB,QAAQ;AACjC,cAAM,kBAAkB,KAAK,OAAO,OAAO,gBAAgB,EAAE;AAC7D,YAAI,mBAAmB,MAAM;AAC3B,gBAAM,IAAI,MAAM,oDAAoD;AAAA,QACtE;AAEA,eAAO,QAAQ,KAAK,OAAO,OAAO,QAAQ,SAAS;AACjD,gBAAM,QAAQ,KAAK,OAAO,OAAO,KAAK;AACtC,cAAI,MAAM,SAASA,WAAG,UAAU,MAAM,cAAc,iBAAiB;AACnE;AACA;AAAA,UACF;AAEA,cACE,KAAK,OAAO,sBAAsB,KAAK,MAAM,iBAC7C,KAAK,OAAO,OAAO,KAAK,EAAE,mBAAmB,eAAe,aAC5D,MAAM,cAAc,iBACpB;AAEA,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,YAAI,UAAU,KAAK,OAAO,OAAO,QAAQ;AACvC,gBAAM,IAAI,MAAM,sDAAsD;AAAA,QACxE;AAIA,eACE,KAAK,OAAO,gBAAgB,OAAOA,WAAG,MAAM,KAC5C,KAAK,OAAO,gBAAgB,OAAOA,WAAG,OAAOA,WAAG,MAAM;AAAA,MAE1D;AAAA,IACF;AAAA;AAAA;;;AC/JA,IAIqB;AAJrB;AAAA;AAAA;AAEA;AAEA,IAAqB,4BAArB,MAAqB,mCAAkC,YAAY;AAAA,MAChE,SAAS;AAAC,aAAK,6BAA6B;AAAA,MAAI;AAAA,MAEjD,YAAa,QAAS,UAAU;AAC9B,cAAM;AAAE,aAAK,SAAS;AAAO,aAAK,WAAW;AAAS,mCAA0B,UAAU,OAAO,KAAK,IAAI;AAAE;AAAA,MAC9G;AAAA,MAEA,8BAA8B,4BAA4B;AACxD,aAAK,6BAA6B;AAAA,MACpC;AAAA,MAEA,gBAAgB;AACd,eAAO;AAAA;AAAA;AAAA;AAAA,aAKJ,QAAQ,QAAQ,GAAG,EACnB,KAAK;AAAA,MACV;AAAA,MAEA,gBAAgB;AACd,cAAM,gBAAgB,oBAAI,IAAI;AAC9B,mBAAW,SAAS,KAAK,OAAO,QAAQ;AACtC,cACE,CAAC,MAAM,UACP,sBAAsB,KAAK,KAC3B,MAAM,mBAAmB,eAAe,mBACxC;AACA,0BAAc,IAAI,KAAK,OAAO,uBAAuB,KAAK,CAAC;AAAA,UAC7D;AAAA,QACF;AACA,cAAM,kBAAkB,MAAM,KAAK,aAAa,EAAE,IAAI,CAAC,UAAU;AAAA,UAC/D,cAAc;AAAA,UACd,iBAAiB;AAAA,QACnB,EAAE;AACF,YAAI,KAAK,4BAA4B;AACnC,0BAAgB,KAAK;AAAA,YACnB,cAAc,KAAK;AAAA,YACnB,iBAAiB;AAAA,UACnB,CAAC;AAAA,QACH;AACA,eAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOT,gBACC;AAAA,UACC,CAAC,EAAC,cAAc,gBAAe,MAC7B,6BAA6B,YAAY,MAAM,eAAe,MAAM,KAAK;AAAA,YACvE,KAAK,YAAY;AAAA,UACnB,CAAC;AAAA,QACL,EACC,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA,MAGX;AAAA,MAEA,UAAU;AACR,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;ACDe,SAAR,aAA8B,MAAM;AACzC,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO;AAAA,EACT;AACA,MAAI,CAAC,oBAAoB,KAAK,WAAW,CAAC,CAAC,GAAG;AAC5C,WAAO;AAAA,EACT;AACA,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,CAAC,mBAAmB,KAAK,WAAW,CAAC,CAAC,GAAG;AAC3C,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,CAAC,eAAe,IAAI,IAAI;AACjC;AAhFA,IAQM;AARN;AAAA;AAAA;AAQA,IAAM,iBAAiB,oBAAI,IAAI;AAAA;AAAA,MAE7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA;AAAA;;;AC1DD,IAOqB;AAPrB;AAAA;AACA;AAEA;AAEA;AAEA,IAAqB,wBAArB,cAAmD,YAAY;AAAA,MAC7D,YACG,iBACA,QACA,2BACD;AACA,cAAM;AAAE,aAAK,kBAAkB;AAAgB,aAAK,SAAS;AAAO,aAAK,4BAA4B;AAA0B;AAAA,MACjI;AAAA,MAEA,UAAU;AACR,YACE,KAAK,gBAAgB,6BAA6B,KAClD,KAAK,gBAAgB,wCAAwC,KAC7D,KAAK,gBAAgB,yBAAyB,GAC9C;AACA,iBAAO;AAAA,QACT;AACA,YACE,KAAK,OAAO,SAASC,WAAG,OAAO,KAC/B,KAAK,OAAO,SAASA,WAAG,UAAU,KAClC,KAAK,OAAO,SAASA,WAAG,QAAQ,KAChC,KAAK,OAAO,SAASA,WAAG,SAAS,KACjC,KAAK,OAAO,SAASA,WAAG,SAAS,KACjC,KAAK,OAAO,SAASA,WAAG,SAAS,KACjC,KAAK,OAAO,SAASA,WAAG,gBAAgB,GACxC;AACA,eAAK,OAAO,mBAAmB;AAC/B,iBAAO;AAAA,QACT;AACA,YAAI,KAAK,OAAO,SAASA,WAAG,KAAK,KAAK,KAAK,OAAO,SAASA,WAAG,QAAQA,WAAG,KAAK,GAAG;AAC/E,eAAK,YAAY;AACjB,iBAAO;AAAA,QACT;AACA,YACE,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,KAAK,KACzC,KAAK,OAAO,SAASA,WAAG,SAASA,WAAG,QAAQA,WAAG,KAAK,GACpD;AACA,eAAK,YAAY,IAAI;AACrB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,MAEA,YAAY,WAAW,OAAO;AAE5B,aAAK,OAAO,mBAAmB;AAC/B,eAAO,KAAK,OAAO,SAASA,WAAG,MAAM,KAAK,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AACxE,eAAK,OAAO,YAAY;AAAA,QAC1B;AACA,cAAM,WAAW,KAAK,OAAO,eAAe;AAC5C,aAAK,OAAO,YAAY;AACxB,YAAI,YAAY,CAAC,KAAK,2BAA2B;AAC/C,eAAK,OAAO,WAAW,SAAS;AAAA,QAClC;AACA,aAAK,OAAO,WAAW,OAAO,QAAQ,gBAAgB,QAAQ,GAAG;AACjE,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,aAAK,gBAAgB,QAAQ;AAC7B,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,YAAI,YAAY,KAAK,2BAA2B;AAC9C,eAAK,OAAO,WAAW,KAAK,QAAQ,gBAAgB,QAAQ,MAAM,QAAQ,UAAU;AAAA,QACtF,OAAO;AACL,eAAK,OAAO,WAAW,KAAK,QAAQ,QAAQ,QAAQ,UAAU;AAAA,QAChE;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,gBAAgB,UAAU;AAGxB,YAAI,oBAAoB;AACxB,eAAO,MAAM;AACX,cAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC;AAAA,UACF;AACA,gBAAM,EAAC,gBAAgB,aAAY,IAAI,KAAK,mBAAmB,KAAK,OAAO,aAAa,CAAC;AACzF,eAAK,OAAO,mBAAmB;AAE/B,cACE,KAAK,OAAO,SAASA,WAAG,IAAIA,WAAG,QAAQA,WAAG,KAAK,KAC/C,KAAK,OAAO,SAASA,WAAG,IAAIA,WAAG,QAAQA,WAAG,MAAM,GAChD;AACA,iBAAK,+BAA+B,UAAU,gBAAgB,YAAY;AAAA,UAC5E,WAAW,KAAK,OAAO,SAASA,WAAG,EAAE,GAAG;AACtC,iBAAK,+BAA+B,UAAU,gBAAgB,YAAY;AAAA,UAC5E,OAAO;AACL,iBAAK;AAAA,cACH;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,UACF;AACA,cAAI,KAAK,OAAO,SAASA,WAAG,KAAK,GAAG;AAClC,iBAAK,OAAO,YAAY;AAAA,UAC1B;AAEA,cAAI,gBAAgB,MAAM;AACxB,gCAAoB;AAAA,UACtB,OAAO;AACL,gCAAoB,GAAG,QAAQ,IAAI,cAAc;AAAA,UACnD;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAsBA,mBAAmB,WAAW;AAC5B,YAAI,UAAU,SAASA,WAAG,MAAM;AAC9B,gBAAM,OAAO,KAAK,OAAO,uBAAuB,SAAS;AACzD,iBAAO;AAAA,YACL,gBAAgB,IAAI,IAAI;AAAA,YACxB,cAAc,aAAa,IAAI,IAAI,OAAO;AAAA,UAC5C;AAAA,QACF,WAAW,UAAU,SAASA,WAAG,QAAQ;AACvC,gBAAM,OAAO,KAAK,OAAO,oBAAoB,SAAS;AACtD,iBAAO;AAAA,YACL,gBAAgB,KAAK,OAAO,KAAK,MAAM,UAAU,OAAO,UAAU,GAAG;AAAA,YACrE,cAAc,aAAa,IAAI,IAAI,OAAO;AAAA,UAC5C;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,MAAM,uDAAuD;AAAA,QACzE;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmBA,+BACE,UACA,gBACA,cACA;AACA,YAAI,gBAAgB,MAAM;AACxB,eAAK,OAAO,WAAW,SAAS,YAAY,EAAE;AAE9C,eAAK,OAAO,UAAU;AAEtB,eAAK,OAAO,UAAU;AACtB,eAAK,OAAO,WAAW,KAAK,QAAQ,IAAI,cAAc,OAAO,YAAY,GAAG;AAAA,QAC9E,OAAO;AACL,eAAK,OAAO,WAAW,GAAG,QAAQ,IAAI,cAAc,GAAG;AAEvD,eAAK,OAAO,UAAU;AAEtB,eAAK,OAAO,UAAU;AACtB,eAAK,OAAO,WAAW,GAAG;AAAA,QAC5B;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA2BA,+BACE,UACA,gBACA,cACA;AACA,cAAM,cAAc,KAAK,OAAO,aAAa,EAAE;AAC/C,YAAI,eAAe,MAAM;AACvB,gBAAM,IAAI,MAAM,sCAAsC;AAAA,QACxD;AAEA,YAAI,gBAAgB,MAAM;AACxB,eAAK,OAAO,WAAW,SAAS,YAAY,EAAE;AAC9C,eAAK,OAAO,UAAU;AACtB,iBAAO,KAAK,OAAO,aAAa,IAAI,aAAa;AAC/C,iBAAK,gBAAgB,aAAa;AAAA,UACpC;AACA,eAAK,OAAO;AAAA,YACV,KAAK,QAAQ,IAAI,QAAQ,IAAI,cAAc,OAAO,YAAY,OAAO,cAAc;AAAA,UACrF;AAAA,QACF,OAAO;AACL,eAAK,OAAO,WAAW,GAAG,QAAQ,IAAI,QAAQ,IAAI,cAAc,GAAG;AACnE,eAAK,OAAO,UAAU;AACtB,iBAAO,KAAK,OAAO,aAAa,IAAI,aAAa;AAC/C,iBAAK,gBAAgB,aAAa;AAAA,UACpC;AACA,eAAK,OAAO,WAAW,OAAO,cAAc,GAAG;AAAA,QACjD;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiBA,+BACE,UACA,gBACA,cACA,mBACA;AACA,YAAI,YAAY,qBAAqB,OAAO,GAAG,iBAAiB,SAAS;AACzE,YAAI,gBAAgB,MAAM;AACxB,eAAK,OAAO,WAAW,SAAS,YAAY,MAAM,SAAS,IAAI;AAC/D,sBAAY;AAAA,QACd;AACA,aAAK,OAAO;AAAA,UACV,GAAG,QAAQ,IAAI,QAAQ,IAAI,cAAc,OAAO,SAAS,OAAO,cAAc;AAAA,QAChF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACtRA,IA2BqB;AA3BrB;AAAA;AAGA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AASA,IAAqB,kBAArB,MAAqB,iBAAgB;AAAA,MAClC,SAAS;AAAC,aAAK,eAAe,CAAC;AAAA,MAAC;AAAA,MAGhC,UAAU;AAAC,aAAK,qBAAqB,CAAC;AAAA,MAAC;AAAA,MAMxC,YACE,gBACA,YACA,iCACA,SACA;AAAC;AAAC,yBAAgB,UAAU,OAAO,KAAK,IAAI;AAAE,yBAAgB,UAAU,QAAQ,KAAK,IAAI;AACzF,aAAK,cAAc,eAAe;AAClC,aAAK,gBAAgB,eAAe;AACpC,cAAM,EAAC,gBAAgB,gBAAe,IAAI;AAC1C,aAAK,SAAS;AACd,aAAK,4BAA4B,WAAW,SAAS,SAAS;AAC9D,aAAK,mCAAmC,WAAW,SAAS,kBAAkB;AAC9E,aAAK,sBAAsB,QAAQ,QAAQ,mBAAmB;AAE9D,YAAI,CAAC,QAAQ,qBAAqB;AAChC,eAAK,aAAa;AAAA,YAChB,IAAI,mCAAmC,gBAAgB,KAAK,WAAW;AAAA,UACzE;AACA,eAAK,aAAa,KAAK,IAAI,4BAA4B,cAAc,CAAC;AACtE,eAAK,aAAa,KAAK,IAAI,gCAAgC,gBAAgB,KAAK,WAAW,CAAC;AAAA,QAC9F;AAEA,YAAI,WAAW,SAAS,KAAK,GAAG;AAC9B,cAAI,QAAQ,eAAe,YAAY;AACrC,iBAAK,aAAa;AAAA,cAChB,IAAI,eAAe,MAAM,gBAAgB,iBAAiB,KAAK,aAAa,OAAO;AAAA,YACrF;AAAA,UACF;AACA,eAAK,aAAa;AAAA,YAChB,IAAI,4BAA4B,MAAM,gBAAgB,iBAAiB,OAAO;AAAA,UAChF;AAAA,QACF;AAEA,YAAI,4BAA4B;AAChC,YAAI,WAAW,SAAS,kBAAkB,GAAG;AAC3C,cAAI,CAAC,QAAQ,UAAU;AACrB,kBAAM,IAAI,MAAM,iEAAiE;AAAA,UACnF;AACA,sCAA4B,IAAI,0BAA0B,gBAAgB,QAAQ,QAAQ;AAC1F,eAAK,aAAa,KAAK,yBAAyB;AAAA,QAClD;AAKA,YAAI,WAAW,SAAS,SAAS,GAAG;AAClC,cAAI,oBAAoB,MAAM;AAC5B,kBAAM,IAAI,MAAM,mEAAmE;AAAA,UACrF;AACA,eAAK,aAAa;AAAA,YAChB,IAAI;AAAA,cACF;AAAA,cACA;AAAA,cACA;AAAA,cACA,KAAK;AAAA,cACL,KAAK;AAAA,cACL;AAAA,cACA;AAAA,cACA,QAAQ,QAAQ,mCAAmC;AAAA,cACnD,WAAW,SAAS,YAAY;AAAA,cAChC,WAAW,SAAS,MAAM;AAAA,cAC1B,QAAQ,QAAQ,qBAAqB;AAAA,cACrC,QAAQ,QAAQ,iBAAiB;AAAA,YACnC;AAAA,UACF;AAAA,QACF,OAAO;AACL,eAAK,aAAa;AAAA,YAChB,IAAI;AAAA,cACF;AAAA,cACA,KAAK;AAAA,cACL,KAAK;AAAA,cACL;AAAA,cACA,WAAW,SAAS,YAAY;AAAA,cAChC,WAAW,SAAS,MAAM;AAAA,cAC1B,QAAQ,QAAQ,iBAAiB;AAAA,cACjC;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI,WAAW,SAAS,MAAM,GAAG;AAC/B,eAAK,aAAa;AAAA,YAChB,IAAI,gBAAgB,MAAM,gBAAgB,WAAW,SAAS,SAAS,CAAC;AAAA,UAC1E;AAAA,QACF;AACA,YAAI,WAAW,SAAS,YAAY,GAAG;AACrC,eAAK,aAAa;AAAA,YAChB,IAAI,sBAAsB,MAAM,gBAAgB,WAAW,SAAS,SAAS,CAAC;AAAA,UAChF;AAAA,QACF;AACA,YAAI,WAAW,SAAS,MAAM,GAAG;AAC/B,eAAK,aAAa;AAAA,YAChB,IAAI,qBAAqB,MAAM,gBAAgB,KAAK,aAAa,eAAe;AAAA,UAClF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,YAAY;AACV,aAAK,OAAO,MAAM;AAClB,aAAK,oBAAoB;AACzB,cAAM,qBAAqB,KAAK;AAEhC,YAAI,SAAS,qBAAqB,kBAAkB;AACpD,mBAAW,eAAe,KAAK,cAAc;AAC3C,oBAAU,YAAY,cAAc;AAAA,QACtC;AACA,kBAAU,KAAK,cAAc,YAAY;AACzC,kBAAU,KAAK,mBAAmB,IAAI,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;AAClE,mBAAW,eAAe,KAAK,cAAc;AAC3C,oBAAU,YAAY,eAAe;AAAA,QACvC;AACA,YAAI,SAAS;AACb,mBAAW,eAAe,KAAK,cAAc;AAC3C,oBAAU,YAAY,cAAc;AAAA,QACtC;AACA,cAAM,SAAS,KAAK,OAAO,OAAO;AAClC,YAAI,EAAC,KAAI,IAAI;AACb,YAAI,KAAK,WAAW,IAAI,GAAG;AACzB,cAAI,eAAe,KAAK,QAAQ,IAAI;AACpC,cAAI,iBAAiB,IAAI;AACvB,2BAAe,KAAK;AACpB,oBAAQ;AAAA,UACV;AACA,iBAAO;AAAA,YACL,MAAM,KAAK,MAAM,GAAG,eAAe,CAAC,IAAI,SAAS,KAAK,MAAM,eAAe,CAAC,IAAI;AAAA;AAAA;AAAA,YAGhF,UAAU,KAAK,cAAc,OAAO,UAAU,OAAO,MAAM;AAAA,UAC7D;AAAA,QACF,OAAO;AACL,iBAAO;AAAA,YACL,MAAM,SAAS,OAAO;AAAA,YACtB,UAAU,KAAK,cAAc,OAAO,UAAU,OAAO,MAAM;AAAA,UAC7D;AAAA,QACF;AAAA,MACF;AAAA,MAEA,sBAAsB;AACpB,YAAI,aAAa;AACjB,YAAI,aAAa;AACjB,eAAO,CAAC,KAAK,OAAO,QAAQ,GAAG;AAC7B,cAAI,KAAK,OAAO,SAASC,WAAG,MAAM,KAAK,KAAK,OAAO,SAASA,WAAG,YAAY,GAAG;AAC5E;AAAA,UACF,WAAW,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAC1C,gBAAI,eAAe,GAAG;AACpB;AAAA,YACF;AACA;AAAA,UACF;AACA,cAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC;AAAA,UACF,WAAW,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AAC1C,gBAAI,eAAe,GAAG;AACpB;AAAA,YACF;AACA;AAAA,UACF;AACA,eAAK,aAAa;AAAA,QACpB;AAAA,MACF;AAAA,MAEA,eAAe;AACb,YAAI,KAAK,OAAO,SAASA,WAAG,MAAM,GAAG;AACnC,eAAK,aAAa;AAClB;AAAA,QACF;AACA,mBAAW,eAAe,KAAK,cAAc;AAC3C,gBAAM,eAAe,YAAY,QAAQ;AACzC,cAAI,cAAc;AAChB;AAAA,UACF;AAAA,QACF;AACA,aAAK,OAAO,UAAU;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA,MAKA,oBAAoB;AAClB,YAAI,CAAC,KAAK,OAAO,SAASA,WAAG,QAAQA,WAAG,IAAI,GAAG;AAC7C,gBAAM,IAAI,MAAM,8CAA8C;AAAA,QAChE;AACA,cAAM,OAAO,KAAK,OAAO,sBAAsB,KAAK,OAAO,aAAa,IAAI,CAAC;AAC7E,aAAK,aAAa;AAClB,eAAO;AAAA,MACT;AAAA,MAEA,eAAe;AACb,cAAM,YAAY,aAAa,MAAM,KAAK,QAAQ,KAAK,aAAa,KAAK,mBAAmB;AAI5F,cAAM,wBACH,UAAU,WAAW,gBAAgB,CAAC,UAAU,WAAW,cAC5D,UAAU,uBAAuB,SAAS,UAAU,yBAAyB,SAAS;AAExF,YAAI,YAAY,UAAU,WAAW;AACrC,YAAI,sBAAsB;AACxB,sBAAY,KAAK,YAAY,cAAc,QAAQ;AACnD,eAAK,mBAAmB,KAAK,SAAS;AACtC,eAAK,OAAO,WAAW,KAAK,SAAS,IAAI;AAAA,QAC3C;AAEA,cAAM,aAAa,KAAK,OAAO,aAAa;AAC5C,cAAM,YAAY,WAAW;AAC7B,YAAI,aAAa,MAAM;AACrB,gBAAM,IAAI,MAAM,sCAAsC;AAAA,QACxD;AACA,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,eAAO,CAAC,KAAK,OAAO,yBAAyBA,WAAG,QAAQ,SAAS,GAAG;AAClE,eAAK,aAAa;AAAA,QACpB;AAEA,aAAK,iBAAiB,WAAW,SAAS;AAE1C,cAAM,8BAA8B,UAAU,uBAAuB;AAAA,UACnE,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI;AAAA,QAChC;AACA,YAAI,sBAAsB;AACxB,eAAK,OAAO;AAAA,YACV,KAAK,4BAA4B,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS;AAAA,UAC5E;AAAA,QACF,WAAW,UAAU,uBAAuB,SAAS,GAAG;AACtD,eAAK,OAAO,WAAW,IAAI,4BAA4B,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE;AAAA,QACxF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,iBAAiB,WAAW,WAAW;AACrC,cAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,IAAI;AACJ,YAAI,aAAa;AACjB,YAAI,qBAAqB;AACzB,cAAM,iBAAiB,KAAK,OAAO,aAAa,EAAE;AAClD,YAAI,kBAAkB,MAAM;AAC1B,gBAAM,IAAI,MAAM,wCAAwC;AAAA,QAC1D;AACA,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AACvC,YAAI,KAAK,kCAAkC;AACzC,eAAK,OAAO;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAEA,cAAM,uBACJ,iCAAiC,SAAS,yBAAyB,SAAS;AAE9E,YAAI,yBAAyB,QAAQ,sBAAsB;AACzD,gBAAM,8BAA8B,KAAK;AAAA,YACvC;AAAA,YACA;AAAA,YACA;AAAA,UACF;AACA,cAAI,WAAW,eAAe;AAC5B,kBAAM,WAAW,KAAK,YAAY,cAAc,MAAM;AACtD,iBAAK,OAAO;AAAA,cACV,kBAAkB,QAAQ,gBAAgB,QAAQ,MAAM,2BAA2B;AAAA,YACrF;AAAA,UACF,OAAO;AACL,iBAAK,OAAO,WAAW,mBAAmB,2BAA2B,KAAK;AAAA,UAC5E;AAAA,QACF;AAEA,eAAO,CAAC,KAAK,OAAO,yBAAyBA,WAAG,QAAQ,cAAc,GAAG;AACvE,cAAI,aAAa,OAAO,UAAU,KAAK,OAAO,aAAa,MAAM,OAAO,UAAU,EAAE,OAAO;AACzF,gBAAI,kBAAkB;AACtB,gBAAI,KAAK,OAAO,SAASA,WAAG,QAAQ,GAAG;AACrC,mBAAK,OAAO,oBAAoB,GAAG,OAAO,UAAU,EAAE,eAAe,UAAU;AAAA,YACjF,WAAW,KAAK,OAAO,SAASA,WAAG,MAAM,KAAK,KAAK,OAAO,SAASA,WAAG,GAAG,GAAG;AAC1E,mBAAK,OAAO,oBAAoB,GAAG,OAAO,UAAU,EAAE,eAAe,WAAW;AAChF,gCAAkB;AAAA,YACpB,OAAO;AACL,mBAAK,OAAO,oBAAoB,GAAG,OAAO,UAAU,EAAE,eAAe,WAAW;AAAA,YAClF;AACA,mBAAO,KAAK,OAAO,aAAa,IAAI,OAAO,UAAU,EAAE,KAAK;AAC1D,kBAAI,mBAAmB,KAAK,OAAO,aAAa,MAAM,OAAO,UAAU,EAAE,aAAa;AACpF,qBAAK,OAAO,WAAW,GAAG;AAAA,cAC5B;AACA,mBAAK,aAAa;AAAA,YACpB;AACA,iBAAK,OAAO,WAAW,GAAG;AAC1B;AAAA,UACF,WACE,qBAAqB,eAAe,UACpC,KAAK,OAAO,aAAa,KAAK,eAAe,kBAAkB,EAAE,OACjE;AACA,gBAAI,KAAK,OAAO,aAAa,IAAI,eAAe,kBAAkB,EAAE,KAAK;AACvE,mBAAK,OAAO,mBAAmB;AAAA,YACjC;AACA,mBAAO,KAAK,OAAO,aAAa,IAAI,eAAe,kBAAkB,EAAE,KAAK;AAC1E,mBAAK,OAAO,YAAY;AAAA,YAC1B;AACA;AAAA,UACF,WAAW,KAAK,OAAO,aAAa,MAAM,sBAAsB;AAC9D,iBAAK,OAAO,UAAU;AACtB,gBAAI,sBAAsB;AACxB,mBAAK,OAAO;AAAA,gBACV,IAAI,KAAK;AAAA,kBACP;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF;AACA,iBAAK,aAAa;AAAA,UACpB,OAAO;AACL,iBAAK,aAAa;AAAA,UACpB;AAAA,QACF;AACA,aAAK,OAAO,kBAAkBA,WAAG,MAAM;AAAA,MACzC;AAAA,MAEA,wBACE,kCACA,0BACA,WACA;AACA,eAAO;AAAA,UACL,GAAG;AAAA,UACH,GAAG,yBAAyB,IAAI,CAAC,SAAS,GAAG,SAAS,cAAc,IAAI,aAAa;AAAA,QACvF,EAAE,KAAK,GAAG;AAAA,MACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,+BAA+B;AAC7B,YAAI,KAAK,OAAO,SAASA,WAAG,QAAQA,WAAG,KAAK,KAAK,KAAK,OAAO,qBAAqB,CAAC,EAAE,QAAQ;AAC3F,cAAI,mBAAmB,KAAK,OAAO,aAAa,IAAI;AAEpD,iBAAO,KAAK,OAAO,OAAO,gBAAgB,EAAE,QAAQ;AAClD;AAAA,UACF;AACA,cAAI,KAAK,OAAO,gBAAgB,kBAAkBA,WAAG,KAAK,GAAG;AAC3D,iBAAK,OAAO,mBAAmB;AAC/B,mBAAO,KAAK,OAAO,aAAa,IAAI,kBAAkB;AACpD,mBAAK,OAAO,YAAY;AAAA,YAC1B;AACA,iBAAK,OAAO,mCAAmC,MAAM;AACrD,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,0CAA0C;AACxC,YACE,CAAC,KAAK,OAAO,kBAAkB,kBAAkB,MAAM,KACvD,CAAC,KAAK,OAAO,SAASA,WAAG,MAAM,GAC/B;AACA,iBAAO;AAAA,QACT;AACA,cAAMC,aAAY,KAAK,OAAO,qBAAqB,CAAC;AACpD,YAAIA,WAAU,SAASD,WAAG,YAAY,CAACC,WAAU,QAAQ;AACvD,iBAAO;AAAA,QACT;AAEA,YAAI,mBAAmB,KAAK,OAAO,aAAa,IAAI;AAEpD,eAAO,KAAK,OAAO,OAAO,gBAAgB,EAAE,QAAQ;AAClD;AAAA,QACF;AACA,YAAI,KAAK,OAAO,gBAAgB,kBAAkBD,WAAG,MAAM,GAAG;AAC5D,eAAK,OAAO,aAAa,SAAS;AAClC,eAAK,OAAO,mBAAmB;AAC/B,iBAAO,KAAK,OAAO,aAAa,IAAI,kBAAkB;AACpD,iBAAK,OAAO,YAAY;AAAA,UAC1B;AACA,eAAK,OAAO,YAAY;AAGxB,eAAK,oBAAoB;AACzB,eAAK,aAAa;AAClB,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,MAEA,2BAA2B;AACzB,YAAI,KAAK,OAAO,aAAa,EAAE,QAAQ;AACrC,eAAK,OAAO,mBAAmB;AAC/B,iBAAO,KAAK,OAAO,aAAa,EAAE,QAAQ;AACxC,iBAAK,OAAO,YAAY;AAAA,UAC1B;AACA,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,MAEA,cACE,UACA,cACA;AACA,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,gBAAM,UAAU,SAAS,CAAC;AAC1B,cAAI,YAAY,QAAW;AACzB,qBAAS,CAAC,IAAI,UAAU;AAAA,UAC1B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA;;;AC7cA;AAAA;AAAA;AACA,YAAQ,aAAa;AACrB,YAAQ,kBAAkB;AAC1B,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAIE;AAAA;AAAA,OAAiC,WAAY;AAC7C,iBAASA,iBAAgB,QAAQ;AAC7B,eAAK,SAAS;AACd,cAAI,UAAU,CAAC,CAAC;AAChB,mBAASC,UAAS,GAAGA,UAAS,OAAO,UAAS;AAC1C,oBAAQ,OAAOA,OAAM,GAAG;AAAA,cACpB,KAAK;AACD,gBAAAA,WAAU,GAAG;AACb,wBAAQ,KAAKA,OAAM;AACnB;AAAA,cACJ,KAAK;AACD,gBAAAA,WAAU,GAAG;AACb,oBAAI,OAAOA,OAAM,MAAM,IAAI;AACvB,kBAAAA,WAAU,GAAG;AAAA,gBACjB;AACA,wBAAQ,KAAKA,OAAM;AACnB;AAAA,cACJ;AACI,gBAAAA;AACA;AAAA,YACR;AAAA,UACJ;AACA,eAAK,UAAU;AAAA,QACnB;AACA,QAAAD,iBAAgB,UAAU,mBAAmB,SAAU,OAAO;AAC1D,cAAI,QAAQ,KAAK,QAAQ,KAAK,OAAO,QAAQ;AACzC,mBAAO;AAAA,UACX;AACA,cAAI,OAAO;AACX,cAAI,UAAU,KAAK;AACnB,iBAAO,QAAQ,OAAO,CAAC,KAAK,OAAO;AAC/B;AAAA,UACJ;AACA,cAAI,SAAS,QAAQ,QAAQ,IAAI;AACjC,iBAAO,EAAE,MAAY,OAAe;AAAA,QACxC;AACA,QAAAA,iBAAgB,UAAU,mBAAmB,SAAU,UAAU;AAC7D,cAAI,OAAO,SAAS,MAAM,SAAS,SAAS;AAC5C,cAAI,OAAO,KAAK,QAAQ,KAAK,QAAQ,QAAQ;AACzC,mBAAO;AAAA,UACX;AACA,cAAI,SAAS,KAAK,SAAS,KAAK,aAAa,IAAI,GAAG;AAChD,mBAAO;AAAA,UACX;AACA,iBAAO,KAAK,QAAQ,IAAI,IAAI;AAAA,QAChC;AACA,QAAAA,iBAAgB,UAAU,eAAe,SAAU,MAAM;AACrD,cAAIC,UAAS,KAAK,QAAQ,IAAI;AAC9B,cAAI,aAAa,SAAS,KAAK,QAAQ,SAAS,IAC1C,KAAK,OAAO,SACZ,KAAK,QAAQ,OAAO,CAAC;AAC3B,iBAAO,aAAaA;AAAA,QACxB;AACA,eAAOD;AAAA,MACX,GAAE;AAAA;AACF,YAAQ,kBAAkBA;AAC1B,YAAQ,SAAS,IAAIA;AAAA;AAAA;;;AC7DrB;AAAA;AAAA;AAAA,+BAA4B;AAG5B;AAAA;AAAA;;;ACQe,SAAR,mBAAoC,QAAQ;AACjD,QAAM,gBAAgB,oBAAI,IAAI;AAC9B,WAAS,IAAI,GAAG,IAAI,OAAO,OAAO,QAAQ,KAAK;AAC7C,QACE,OAAO,gBAAgB,GAAGE,WAAG,OAAO,KACpC,CAAC,OAAO,gBAAgB,GAAGA,WAAG,SAASA,WAAG,MAAMA,WAAG,EAAE,GACrD;AACA,4BAAsB,QAAQ,GAAG,aAAa;AAAA,IAChD;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,sBACP,QACA,OACA,eACA;AACA;AAEA,MAAI,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AAE5C;AAAA,EACF;AAEA,MAAI,OAAO,gBAAgB,OAAOA,WAAG,IAAI,GAAG;AAC1C,kBAAc,IAAI,OAAO,sBAAsB,KAAK,CAAC;AACrD;AACA,QAAI,OAAO,gBAAgB,OAAOA,WAAG,KAAK,GAAG;AAC3C;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAO,gBAAgB,OAAOA,WAAG,IAAI,GAAG;AAE1C,aAAS;AACT,kBAAc,IAAI,OAAO,sBAAsB,KAAK,CAAC;AACrD;AAAA,EACF;AAEA,MAAI,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AAC5C;AACA,+BAA2B,QAAQ,OAAO,aAAa;AAAA,EACzD;AACF;AAEA,SAAS,2BACP,QACA,OACA,eACA;AACA,SAAO,MAAM;AACX,QAAI,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AAC5C;AAAA,IACF;AAEA,UAAM,gBAAgB,6BAA6B,QAAQ,KAAK;AAChE,YAAQ,cAAc;AACtB,QAAI,CAAC,cAAc,QAAQ;AACzB,oBAAc,IAAI,cAAc,SAAS;AAAA,IAC3C;AAEA,QAAI,OAAO,gBAAgB,OAAOA,WAAG,OAAOA,WAAG,MAAM,GAAG;AACtD;AAAA,IACF,WAAW,OAAO,gBAAgB,OAAOA,WAAG,MAAM,GAAG;AACnD;AAAA,IACF,WAAW,OAAO,gBAAgB,OAAOA,WAAG,KAAK,GAAG;AAClD;AAAA,IACF,OAAO;AACL,YAAM,IAAI,MAAM,qBAAqB,KAAK,UAAU,OAAO,OAAO,KAAK,CAAC,CAAC,EAAE;AAAA,IAC7E;AAAA,EACF;AACF;AAnFA;AAAA;AAAA;AAEA;AAAA;AAAA;;;ACgCO,SAAS,UAAU,MAAM,SAAS;AACvC,kBAAgB,OAAO;AACvB,MAAI;AACF,UAAM,iBAAiB,kBAAkB,MAAM,OAAO;AACtD,UAAM,cAAc,IAAI;AAAA,MACtB;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ,QAAQ,+BAA+B;AAAA,MAC/C;AAAA,IACF;AACA,UAAM,oBAAoB,YAAY,UAAU;AAChD,QAAI,SAAS,EAAC,MAAM,kBAAkB,KAAI;AAC1C,QAAI,QAAQ,kBAAkB;AAC5B,UAAI,CAAC,QAAQ,UAAU;AACrB,cAAM,IAAI,MAAM,0DAA0D;AAAA,MAC5E;AACA,eAAS;AAAA,QACP,GAAG;AAAA,QACH,WAAW;AAAA,UACT;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR;AAAA,UACA,eAAe,eAAe;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EAET,SAAS,GAAG;AACV,QAAI,QAAQ,UAAU;AACpB,QAAE,UAAU,sBAAsB,QAAQ,QAAQ,KAAK,EAAE,OAAO;AAAA,IAClE;AACA,UAAM;AAAA,EACR;AACF;AAoBA,SAAS,kBAAkB,MAAM,SAAS;AACxC,QAAMC,gBAAe,QAAQ,WAAW,SAAS,KAAK;AACtD,QAAMC,uBAAsB,QAAQ,WAAW,SAAS,YAAY;AACpE,QAAMC,iBAAgB,QAAQ,WAAW,SAAS,MAAM;AACxD,QAAM,sBAAsB,QAAQ,wBAAwB;AAC5D,QAAM,OAAOC,OAAM,MAAMH,eAAcC,sBAAqBC,cAAa;AACzE,QAAM,SAAS,KAAK;AACpB,QAAM,SAAS,KAAK;AAEpB,QAAM,cAAc,IAAI,YAAY,MAAM,MAAM;AAChD,QAAM,gBAAgB,IAAI,cAAc,WAAW;AACnD,QAAM,iBAAiB,IAAI;AAAA,IACzB;AAAA,IACA;AAAA,IACAA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,sCAAsC,QAAQ,QAAQ,mCAAmC;AAE/F,MAAI,kBAAkB;AACtB,MAAI,QAAQ,WAAW,SAAS,SAAS,GAAG;AAC1C,sBAAkB,IAAI;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,WAAW,SAAS,YAAY;AAAA,MACxC,QAAQ,QAAQ,iBAAiB;AAAA,MACjC;AAAA,IACF;AACA,oBAAgB,iBAAiB;AAGjC,4BAAwB,gBAAgB,QAAQ,gBAAgB,eAAe,CAAC;AAChF,QAAI,QAAQ,WAAW,SAAS,YAAY,KAAK,CAAC,QAAQ,mBAAmB;AAC3E,sBAAgB,qBAAqB;AAAA,IACvC;AAAA,EACF,WAAW,QAAQ,WAAW,SAAS,YAAY,KAAK,CAAC,QAAQ,mBAAmB;AAElF,4BAAwB,gBAAgB,QAAQ,mBAAmB,cAAc,CAAC;AAAA,EACpF;AACA,SAAO,EAAC,gBAAgB,QAAQ,aAAa,iBAAiB,cAAa;AAC7E;AApIA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAAA;AAAA;;;ACZA;AAAA;AAAA;AAAA;AAgBA,SAAS,YAAY,SAA4D;AAC/E,QAAM,MAAM,QAAQ;AACpB,MAAI,KAAK,SAAS,aAAa;AAC7B,WAAO,EAAE,YAAY,aAAa,iBAAiB,IAAI,cAAc,YAAY,CAAC,IAAI,YAAY;AAAA,EACpG;AACA,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,WAAW,KAAK,WAAW;AAAA,IAC3B,mBAAmB,KAAK,YAAY;AAAA,IACpC,YAAY;AAAA,EACd;AACF;AAMA,SAAS,YAAY,IAA2B;AAC9C,MAAI,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,SAAS,UAAU,EAAG,QAAO;AAC1D,MAAI;AACF,IAAAE,OAAM,IAAI,EAAE,aAAa,UAAU,YAAY,UAAU,2BAA2B,KAAK,CAAC;AAC1F,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,UAAM,MAAO,IAA0B;AACvC,QAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,QAAI,GAAG,GAAG,MAAM,IAAK,QAAO;AAC5B,QAAI,iBAAiB,KAAK,GAAG,MAAM,GAAG,GAAG,CAAC,EAAG,QAAO;AACpD,WAAO;AAAA,EACT;AACF;AA7CA,IAcM,MAgBA,WAiBO;AA/Cb;AAAA;AAAA;AAUA;AACA;AACA;AAEA,IAAM,OAAO;AAgBb,IAAM,YAAY;AAiBX,IAAM,aAA2B,CAAC,MAAM,SAAS,cAAc;AACpE,UAAI,UAAU,KAAK,IAAI,GAAG;AACxB,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAGA,UAAI;AACJ,iBAAW,cAAc,CAAC,CAAC,cAAc,KAAK,GAAG,CAAC,YAAY,CAAC,GAAY;AACzE,YAAI;AACF,gBAAM,SAAS,UAAU,MAAM;AAAA,YAC7B,YAAY,CAAC,GAAG,UAAU;AAAA,YAC1B,GAAG,YAAY,OAAO;AAAA;AAAA,YAEtB,mBAAmB;AAAA,YACnB,qBAAqB;AAAA,YACrB,UAAU;AAAA,YACV,GAAI,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,KAAK,EAAE,IAAI,CAAC;AAAA,UACtE,CAAC;AACD,gBAAM,SAAS,YAAY,OAAO,IAAI;AACtC,cAAI,WAAW,KAAM,OAAM,IAAI,gBAAgB,MAAM;AACrD,iBAAO,EAAE,MAAM,OAAO,MAAM,UAAU,OAAO,WAAW,YAAY,GAAG;AAAA,QACzE,SAAS,KAAK;AACZ,cAAI,eAAe,gBAAiB,OAAM;AAC1C,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,YAAM,UAAU,sBAAsB,QAAQ,WAAW,UAAU,OAAO,UAAU;AACpF,YAAM,IAAI,gBAAgB,QAAQ,QAAQ,sBAAsB,IAAI,MAAM,EAAE,CAAC;AAAA,IAC/E;AAAA;AAAA;;;AC7EO,SAAS,gBAAgB;AAAE,QAAM,IAAI,MAAM,kEAAoE;AAAG;AAAzH;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA,oBAAAC;AAAA;AAOA,SAASC,aAAY,KAA+C;AAClE,MAAI,KAAK,SAAS,aAAa;AAC7B,WAAO,EAAE,KAAK,aAAa,iBAAiB,IAAI,cAAc,QAAQ,IAAI,YAAY;AAAA,EACxF;AACA,SAAO,EAAE,KAAK,aAAa,YAAY,KAAK,SAAS,aAAa,KAAK,SAAS;AAClF;AAZA,IAcaD;AAdb;AAAA;AAAA;AAIA;AACA;AASO,IAAMA,cAA2B,CAAC,MAAM,SAAS,cAAc;AACpE,YAAM,kBAAkB;AAAA,QACtB,sBAAsB;AAAA,QACtB,GAAI,QAAQ,yBAAyB,EAAE,wBAAwB,KAAK,IAAI,CAAC;AAAA,MAC3E;AAEA,UAAI;AACJ,iBAAW,UAAU,CAAC,OAAO,IAAI,GAAY;AAC3C,YAAI;AACF,gBAAM,SAAS,cAAc,MAAM;AAAA,YACjC;AAAA,YACA,QAAQ;AAAA;AAAA;AAAA,YAGR,WAAW,EAAE,YAAY,MAAM;AAAA,YAC/B,GAAGC,aAAY,QAAQ,GAAG;AAAA,YAC1B,aAAa,EAAE,gBAAgB;AAAA,YAC/B,UAAU;AAAA,YACV,GAAI,YAAY,EAAE,WAAW,WAAoB,IAAI,CAAC;AAAA,UACxD,CAAC;AACD,gBAAM,MAAe,YAAY,KAAK,MAAM,OAAO,GAAG,IAAI;AAC1D,gBAAM,WAAW,OAAQ,KAAuC,aAAa,WACxE,IAA6B,WAC9B;AACJ,iBAAO,EAAE,MAAM,OAAO,MAAM,SAAS;AAAA,QACvC,SAAS,KAAK;AACZ,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,YAAM,UAAU,sBAAsB,QAAQ,WAAW,UAAU,OAAO,UAAU;AACpF,YAAM,IAAI,gBAAgB,QAAQ,QAAQ,yCAAyC,EAAE,CAAC;AAAA,IACxF;AAAA;AAAA;;;AC+CA,eAAsB,iBAAiB,MAA+C;AACpF,MAAI,WAAW,UAAU,IAAI,IAAI;AACjC,MAAI,aAAa,QAAW;AAC1B,QAAI;AACF,iBAAW,SAAS,aACf,MAAM,6EAA8B,cACpC,MAAM,6EAA8B;AAAA,IAC3C,SAAS,KAAK;AACZ,YAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC9D,YAAM,IAAI,MAAM,mBAAmB,IAAI,0BAA0B,IAAI,yBAAyB,MAAM,EAAE;AAAA,IACxG;AACA,cAAU,IAAI,MAAM,QAAQ;AAAA,EAC9B;AACA,SAAO;AACT;AAEA,SAAS,aAAa,SAA0C,WAAyB;AACvF,MAAI,OAAO,WAAW,WAAY,QAAO;AACzC,QAAM,WAAW,UAAU,IAAI,MAAM;AACrC,MAAI,aAAa,OAAW,OAAM,IAAI,MAAM,OAAO,MAAM,oDAAoD;AAC7G,SAAO;AACT;AAOA,SAAS,iBAAiB,MAAc,SAA+B,WAAwD;AAC7H,MAAI,eAAe,KAAK,IAAI,GAAG;AAC7B,UAAM,IAAI,gBAAgB,2EAA2E;AAAA,EACvG;AACA,SAAO,aAAa,QAAQ,SAAS,EAAE,MAAM,SAAS,SAAS;AACjE;AAEA,SAASC,YAAW,MAAc,SAAuC;AACvE,SAAO,iBAAiB,MAAM,SAAS,KAAK,EAAE;AAChD;AAmCA,SAAS,aAAa,MAAmC;AACvD,QAAM,WAAW,KAAK;AACtB,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,SAAS,SAAS,YAAY,OAAO,SAAS,KAAK,IAAI,OAAO,SAAS,IAAI;AACpF;AAEA,SAAS,cAAc,MAAc,MAA6B,OAAuB;AACvF,QAAM,SAAS,KAAK,UAAU,KAAK,OAAO,KAAK;AAC/C,QAAM,QAAQ,KAAK,cAAc,KAAK,WAAW,SAAS,IACtD,eAAe,KAAK,WAAW,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,SAChF;AACJ,QAAM,OAAO,SAAS,IAAI,WAAW,MAAM,GAAG,KAAK;AAEnD,MAAI,KAAK,WAAW,WAAW,EAAG,QAAO,QAAQ,IAAI;AACrD,QAAM,KAAK,GAAG,IAAI,KAAK,KAAK;AAC5B,QAAM,WAAW,KAAK,WAAW,IAAI,CAAC,SAAS;AAC7C,UAAM,QAAQ,OAAO,KAAK,MAAM,IAAI;AACpC,QAAI,KAAK,SAAS,2BAA4B,QAAO,GAAG,KAAK,MAAM,EAAE;AACrE,WAAO,GAAG,KAAK,MAAM,EAAE,IAAI,KAAK,UAAU,aAAa,IAAI,CAAC,CAAC;AAAA,EAC/D,CAAC;AACD,SAAO,OAAO,EAAE,MAAM,IAAI,SAAS,SAAS,KAAK,IAAI,CAAC;AACxD;AAEA,SAAS,UAAU,IAAqB;AACtC,MAAI;AACF,WAAOC,OAAM,IAAI;AAAA,MACf,aAAa;AAAA,MACb,YAAY;AAAA,MACZ,2BAA2B;AAAA,MAC3B,4BAA4B;AAAA,IAC9B,CAAC;AAAA,EACH,SAAS,KAAK;AACZ,UAAM,IAAI,gBAAgB,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AAAA,EAC5E;AACF;AAGO,SAAS,oBAAoB,IAAoB;AACtD,QAAM,UAAU,UAAU,EAAE;AAE5B,QAAM,QAAgB,CAAC;AACvB,MAAI,cAAc;AAClB,OAAK,SAAS,CAAC,SAAS;AACtB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAK,qBAAqB;AACxB,cAAM,OAAO;AACb,cAAM,KAAK,EAAE,OAAO,KAAK,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,IAAI,MAAM,aAAa,EAAE,CAAC;AAC7F;AAAA,MACF;AAAA,MACA,KAAK;AAEH,cAAM,KAAK,EAAE,OAAO,KAAK,OAAO,KAAK,KAAK,QAAQ,SAAS,QAAQ,MAAM,GAAG,IAAI,UAAU,CAAC;AAC3F;AAAA,MACF,KAAK;AACH,YAAI,GAAG,MAAM,KAAK,OAAO,KAAK,GAAG,EAAE,WAAW,QAAQ,GAAG;AACvD,gBAAM,KAAK,EAAE,OAAO,KAAK,OAAO,KAAK,KAAK,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC;AAAA,QACvE;AACA;AAAA,MACF,KAAK,0BAA0B;AAC7B,cAAM,OAAO;AACb,YAAI,KAAK,aAAa;AACpB,gBAAM,KAAK,EAAE,OAAO,KAAK,OAAO,KAAK,KAAK,YAAY,OAAO,MAAM,GAAG,CAAC;AAAA,QACzE,WAAW,CAAC,KAAK,QAAQ;AACvB,gBAAM,KAAK,EAAE,OAAO,KAAK,OAAO,KAAK,KAAK,KAAK,MAAM,GAAG,CAAC;AAAA,QAC3D,OAAO;AACL,gBAAM,IAAI,gBAAgB,0DAA0D;AAAA,QACtF;AACA;AAAA,MACF;AAAA,MACA,KAAK,4BAA4B;AAC/B,cAAM,OAAO;AACb,cAAM,aAAa,KAAK,YAAY,SAAS,yBAAyB,KAAK,YAAY,SAAS,uBAC7F,KAAK,YAAuC,OAAO;AAGtD,cAAM,KAAK,EAAE,OAAO,KAAK,OAAO,KAAK,KAAK,YAAY,OAAO,MAAM,YAAY,MAAM,GAAG,CAAC;AACzF,YAAI,UAAW,OAAM,KAAK,EAAE,OAAO,KAAK,YAAY,KAAK,KAAK,KAAK,YAAY,KAAK,MAAM,KAAK,CAAC;AAChG;AAAA,MACF;AAAA,MACA,KAAK;AACH,cAAM,IAAI,gBAAgB,wDAAwD;AAAA,IACtF;AAAA,EACF,CAAC;AAID,SAAO,WAAW,IAAI,KAAK;AAC7B;AAEA,SAAS,SAAS,MAAsB;AACtC,MAAI,QAAQ;AACZ,aAAW,QAAQ,KAAM,KAAI,SAAS,KAAM;AAC5C,SAAO;AACT;AAEA,SAAS,WAAW,IAAY,OAAuB;AAErD,QAAM,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG;AACvD,MAAI,MAAM;AACV,aAAW,QAAQ,OAAO;AAIxB,UAAM,OAAO,SAAS,GAAG,MAAM,KAAK,OAAO,KAAK,GAAG,CAAC,IAAI,SAAS,KAAK,IAAI;AAC1E,UAAM,OAAO,OAAO,IAAI,KAAK,OAAO,KAAK,OAAO,IAAI,IAAI,KAAK;AAC7D,UAAM,IAAI,MAAM,GAAG,KAAK,KAAK,IAAI,OAAO,IAAI,MAAM,KAAK,GAAG;AAAA,EAC5D;AACA,SAAO;AACT;AAGA,SAAS,aAAa,SAAkB,OAA0B;AAChE,UAAQ,QAAQ,MAAM;AAAA,IACpB,KAAK;AACH,YAAM,IAAI,QAAQ,IAAI;AACtB;AAAA,IACF,KAAK;AACH,iBAAW,QAAQ,QAAQ,WAAY,cAAa,KAAK,SAAS,aAAa,KAAK,QAAQ,MAAM,KAAK;AACvG;AAAA,IACF,KAAK;AACH,iBAAW,WAAW,QAAQ,SAAU,KAAI,QAAS,cAAa,SAAS,KAAK;AAChF;AAAA,IACF,KAAK;AACH,mBAAa,QAAQ,UAAU,KAAK;AACpC;AAAA,IACF,KAAK;AACH,mBAAa,QAAQ,MAAM,KAAK;AAChC;AAAA,EACJ;AACF;AAoBA,SAAS,aAAa,IAAoB;AACxC,QAAM,UAAU,UAAU,EAAE;AAC5B,QAAM,QAAQ,oBAAI,IAAY;AAC9B,QAAM,YAAsB,CAAC;AAC7B,QAAM,QAAgB,CAAC;AACvB,QAAM,MAAM,CAAC,SAAe,GAAG,MAAM,KAAK,OAAO,KAAK,GAAG;AACzD,QAAM,UAAU,CAAC,MAAY,SAAiB,MAAM,KAAK,EAAE,OAAO,KAAK,OAAO,KAAK,KAAK,KAAK,KAAK,CAAC;AAInG,QAAM,cAAc,CAAC,SACnB,KAAK,aAAa,QAAQ,CAAC,MAAM;AAC/B,iBAAa,EAAE,IAAI,KAAK;AACxB,QAAI,EAAE,KAAM,QAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,EAAE;AACnD,WAAO,KAAK,SAAS,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,cAAc;AAAA,EAC/D,CAAC;AACH,QAAM,YAAY,CAAC,SAA8B;AAC/C,UAAM,QAAQ,YAAY,IAAI;AAC9B,YAAQ,MAAM,MAAM,SAAS,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,GAAG;AAAA,EACjE;AACA,QAAM,QAAQ,CAAC,SACb,MAAM,SAAS,yBAA0B,KAA6B,SAAS;AACjF,QAAM,WAAW,CAAC,SAAe;AAC/B,QAAI,CAAC,MAAM,IAAI,EAAG;AAClB,UAAM,KAAK,KAAK,aAAa,CAAC,EAAE;AAChC,iBAAa,IAAI,KAAK;AACtB,YAAQ,MAAM,IAAI,EAAE,CAAC;AAAA,EACvB;AAGA,QAAM,aAAa,CAAC,SAClB,UAAU,MAAM,MAAM;AAAA,IACpB,WAAW;AAAA,IAAC;AAAA,IACZ,QAAQ;AAAA,IAAC;AAAA,IACT,oBAAoB,MAAM;AACxB,UAAI,KAAK,SAAS,MAAO,WAAU,IAAI;AAAA,IACzC;AAAA,IACA,aAAa,MAAMC,QAAO,MAAM;AAC9B,UAAI,MAAM,KAAK,IAAI,EAAG,SAAQ,KAAK,MAAM,YAAY,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC;AAC1E,WAAK,KAAK,MAAMA,MAAK;AAAA,IACvB;AAAA,IACA,eAAe,MAAMA,QAAO,MAAM;AAChC,eAAS,KAAK,IAAI;AAClB,WAAK,KAAK,MAAMA,MAAK;AAAA,IACvB;AAAA,IACA,eAAe,MAAMA,QAAO,MAAM;AAChC,eAAS,KAAK,IAAI;AAClB,WAAK,KAAK,MAAMA,MAAK;AAAA,IACvB;AAAA,EACF,CAAC;AAEH,UAAQ,KAAK,QAAQ,CAAC,MAAM,MAAM;AAChC,QAAI,KAAK,SAAS,0BAA0B,KAAK,SAAS,SAAS,KAAK,SAAS,SAAS,KAAK,SAAS,UAAU;AAChH,gBAAU,IAAI;AAAA,IAChB,WAAW,KAAK,SAAS,uBAAuB;AAC9C,YAAM,IAAI,KAAK,GAAG,IAAI;AACtB,gBAAU,KAAK,KAAK,GAAG,IAAI;AAAA,IAC7B,WAAW,KAAK,SAAS,oBAAoB;AAC3C,YAAM,IAAI,KAAK,GAAG,IAAI;AACtB,YAAM,KAAK,EAAE,OAAO,KAAK,OAAO,KAAK,KAAK,OAAO,MAAM,GAAG,KAAK,GAAG,IAAI,MAAM,CAAC;AAC7E,YAAM,KAAK,EAAE,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,IAAI,CAAC;AAAA,IAC1D,WAAW,KAAK,SAAS,yBAAyB,MAAM,QAAQ,KAAK,SAAS,GAAG;AAE/E,cAAQ,MAAM,YAAY,IAAI,KAAK,UAAU,CAAC,KAAK;AAAA,IACrD,OAAO;AACL,iBAAW,IAAI;AAAA,IACjB;AAAA,EACF,CAAC;AAID,QAAM,UAAU,MAAM,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,OAAO;AACpE,QAAM,UAAU,UAAU,IAAI,CAAC,SAAS,eAAe,IAAI,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE;AACjF,SAAO,GAAG,OAAO,+BAA+B,OAAO;AAAA,EAAK,WAAW,IAAI,KAAK,CAAC;AAAA;AACnF;AAWO,SAAS,uBAAuB,MAAc,UAAgC,CAAC,GAAuC;AAC3H,QAAM,WAAW,iBAAiB,MAAM,SAAS,IAAI;AACrD,SAAO,EAAE,QAAQ,UAAU,oBAAoB,SAAS,IAAI,IAAI,QAAQ,OAAO,IAAI,QAAQ,SAAS,UAAU,SAAS,OAAO,GAAG,SAAS,IAAI,EAAE;AAClJ;AAOO,SAAS,qBAAqB,MAAc,UAAgC,CAAC,GAAW;AAC7F,SAAO,aAAa,oBAAoBF,YAAW,MAAM,OAAO,CAAC,CAAC;AACpE;AAOO,SAAS,uBAAuB,MAA6B;AAClE,SAAO,KAAK,UAAU,EAAE,WAAW,GAAG,KAAK,CAAC,KAAK,QAAQ,EAAE,SAAS,GAAG,IAAI,IAAI,IAAI,MAAM;AAC3F;AAnaA,IAqBa,MAaA,OACP,SAUO,QAEA,iBAsCP,WAgCA;AArHN;AAAA;AAAA;AAiBA;AACA;AACA;AAEO,IAAM,OAAO;AAab,IAAM,QAAQ,SAAS,IAAI;AAAA;AAClC,IAAM,UAAU,iBAAiB,KAAK;AAU/B,IAAM,SAAS;AAAA,OAAU,IAAI,oBAAoB,IAAI;AAErD,IAAM,kBAAN,cAA8B,MAAM;AAAA,MAChC,OAAe;AAAA,IAC1B;AAoCA,IAAM,YAAY,oBAAI,IAAoC;AAgC1D,IAAM,iBAAiB;AAAA;AAAA;;;ACjHhB,IAAM,mBAAmB;AAqCzB,SAAS,WAAW,SAAiB,SAAyB;AACnE,SAAO;AAAA,IACL,QAAQ,OAAO,WAAW;AAAA,IAC1B;AAAA,IACA,OAAM,oBAAI,KAAK,GAAE,YAAY;AAAA,IAC7B,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AACF;;;ACgBO,SAAS,gBAAgB,OAAwC;AACtE,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,QAAM,OAAQ,MAA6B;AAC3C,UAAQ,SAAS,WAAW,SAAS,oBACnC,OAAQ,MAAgC,YAAY;AACxD;AASO,IAAM,cAAN,cAA0B,MAAM;AAAA,EAC5B,OAAO;AAClB;;;ACnEA;;;ACJA,IAAM,mBAAmB,oBAAI,IAAI;AAAA,EAC/B;AAAA,EAAU;AAAA,EAAU;AAAA,EAAc;AAAA,EAAM;AAAA,EAAM;AAAA,EAAO;AAAA,EAAU;AAAA,EAAQ;AAAA,EACvE;AAAA,EAAQ;AAAA,EAAM;AAAA,EAAQ;AAAA,EAAS;AACjC,CAAC;AAQD,SAAS,YAAY,MAAc,GAAoB;AACrD,MAAI,IAAI,IAAI;AACZ,SAAO,KAAK,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,EAAG;AACrC,MAAI,IAAI,EAAG,QAAO;AAClB,QAAM,OAAO,KAAK,CAAC;AACnB,MAAI,QAAQ,KAAK,IAAI,GAAG;AACtB,UAAM,OAAO,UAAU,KAAK,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;AAC1D,WAAO,iBAAiB,IAAI,IAAI;AAAA,EAClC;AACA,SAAO,CAAC,YAAY,KAAK,IAAI;AAC/B;AAGA,SAAS,SAAS,MAAc,GAAmB;AACjD,MAAI,UAAU;AACd,WAAS,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACxC,UAAM,IAAI,KAAK,CAAC;AAChB,QAAI,MAAM,KAAM,QAAO;AACvB,QAAI,MAAM,KAAM;AAAA,aACP,MAAM,IAAK,WAAU;AAAA,aACrB,MAAM,IAAK,WAAU;AAAA,aACrB,MAAM,OAAO,CAAC,QAAS,QAAO,IAAI;AAAA,EAC7C;AACA,SAAO;AACT;AAOO,SAAS,gBAAgB,MAA+B;AAC7D,QAAM,QAAkB,CAAC;AACzB,QAAM,UAAkC,EAAE,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI;AACvE,MAAI,IAAI;AACR,SAAO,IAAI,KAAK,QAAQ;AACtB,UAAM,KAAK,KAAK,CAAC;AACjB,QAAI,OAAO,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK;AACrC,aAAO,IAAI,KAAK,UAAU,KAAK,CAAC,MAAM,KAAM;AAC5C;AAAA,IACF;AACA,QAAI,OAAO,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK;AACrC,YAAM,MAAM,KAAK,QAAQ,MAAM,IAAI,CAAC;AACpC,UAAI,QAAQ,GAAI,QAAO,EAAE,QAAQ,cAAc,QAAQ,GAAG;AAC1D,UAAI,MAAM;AACV;AAAA,IACF;AACA,QAAI,OAAO,OAAO,YAAY,MAAM,CAAC,GAAG;AACtC,YAAM,MAAM,SAAS,MAAM,CAAC;AAC5B,UAAI,QAAQ,IAAI;AACd,YAAI;AACJ;AAAA,MACF;AAAA,IACF;AACA,QAAI,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAC1C;AACA,UAAI,SAAS;AACb,aAAO,IAAI,KAAK,QAAQ;AACtB,YAAI,KAAK,CAAC,MAAM,MAAM;AACpB,eAAK;AACL;AAAA,QACF;AACA,YAAI,KAAK,GAAG,MAAM,IAAI;AACpB,mBAAS;AACT;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC,OAAQ,QAAO,EAAE,QAAQ,cAAc,QAAQ,GAAG;AACvD;AAAA,IACF;AACA,QAAI,OAAO,OAAO,OAAO,OAAO,OAAO,IAAK,OAAM,KAAK,EAAE;AAAA,aAChD,MAAM,WAAW,MAAM,IAAI,MAAM,QAAQ,EAAE,EAAG,QAAO,EAAE,QAAQ,UAAU;AAClF;AAAA,EACF;AACA,SAAO,MAAM,WAAW,IAAI,EAAE,QAAQ,WAAW,IAAI,EAAE,QAAQ,cAAc,QAAQ,KAAK;AAC5F;AAGO,SAAS,aAAa,MAAc,QAAwB;AACjE,QAAM,IAAI,WAAW,KAAK,KAAK,MAAM,GAAG,MAAM,CAAC;AAC/C,SAAO,IAAI,EAAE,CAAC,IAAI;AACpB;AAOO,SAAS,cAAc,MAAc,QAA+B;AACzE,MAAI,MAAM;AAEV,QAAM,SAAS,KAAK,MAAM,GAAG,MAAM;AACnC,QAAM,OAAO,kBAAkB,KAAK,MAAM;AAC1C,MAAI,KAAM,OAAM,UAAU,OAAO,SAAS,OAAO,YAAY,KAAK,MAAM;AACxE,QAAM,OAAO,WAAW,KAAK,KAAK,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK;AACzD,QAAM,OAAO,OAAO,KAAM,UAAU,KAAK,KAAK,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK;AAClE,QAAM,QAAQ,OAAO,MAAM,QAAQ,OAAO,EAAE;AAC5C,SAAO,4CAA4C,KAAK,IAAI,IAAI,OAAO;AACzE;AAIO,SAAS,sBAAsB,KAAa,UAA0B;AAC3E,MAAI,QAAQ;AACZ,WAAS,KAAK,GAAG,KAAK,YAAY,QAAQ,IAAI,QAAQ,MAAM;AAC1D,cAAU,IAAI,YAAY,KAAK,KAAK,KAAK,QAAS,IAAI;AAAA,EACxD;AACA,SAAO;AACT;AAEO,SAAS,sBAAsB,KAAa,aAA6B;AAC9E,MAAI,KAAK;AACT,WAAS,QAAQ,GAAG,QAAQ,eAAe,QAAQ,IAAI,QAAQ,MAAM;AACnE,cAAU,IAAI,YAAY,KAAK,KAAK,KAAK,QAAS,IAAI;AAAA,EACxD;AACA,SAAO;AACT;;;AC9HO,IAAM,UAAU;AAGvB,SAAS,aAAa,SAAyB;AAC7C,QAAM,UAAU,QAAQ,QAAQ,qBAAqB,MAAM,EAAE,QAAQ,OAAO,WAAW,EAAE,QAAQ,OAAO,UAAU;AAClH,SAAO,IAAI,OAAO,IAAI,OAAO,GAAG;AAClC;AAUO,SAAS,aAAa,SAAkC,SAAoD;AACjH,QAAM,QAAQ,QAAQ,IAAI,CAAC,MAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC;AACxE,QAAM,IAAI,OAAO,QAAQ,MAAM,YAAY,QAAQ,IAAI,IAAI,QAAQ,IAAI;AACvE,UAAQ,QAAQ,kBAAkB;AAAA,IAChC,KAAK;AACH,aAAO,MAAM,SAAY,QAAQ,MAAM,MAAM,CAAC,CAAC;AAAA,IACjD,KAAK,SAAS;AACZ,YAAM,UAAU,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU;AACxE,UAAI,YAAY,WAAW,YAAY,EAAG,QAAO,CAAC;AAClD,YAAM,QAAQ,OAAO,QAAQ,UAAU,WAAW,QAAQ,QAAQ;AAClE,YAAM,OAAO,OAAO,QAAQ,SAAS,WAAW,QAAQ,OAAO;AAC/D,aAAO,MAAM,OAAO,CAAC,CAAC,EAAE,IAAI,MAAM,QAAQ,SAAS,OAAO,IAAI;AAAA,IAChE;AAAA,IACA,KAAK,UAAU;AACb,YAAM,UAAU,aAAa,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU,GAAG;AACxF,UAAI,QAAQ,MAAM,OAAO,CAAC,CAAC,EAAE,EAAEG,MAAK,MAAM,QAAQ,KAAKA,MAAK,CAAC;AAC7D,UAAI,QAAQ,WAAW,MAAM;AAC3B,cAAM,OAAO,oBAAI,IAAY;AAE7B,gBAAQ,MAAM,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,EAAEA,MAAK,MAAM,CAAC,KAAK,IAAIA,MAAK,KAAK,KAAK,IAAIA,MAAK,MAAM,MAAS,EAAE,QAAQ;AAAA,MAC7G;AACA,aAAO,MAAM,SAAY,QAAQ,MAAM,MAAM,CAAC,CAAC;AAAA,IACjD;AAAA,IACA;AACE,aAAO,CAAC;AAAA,EACZ;AACF;;;AC9CA,IAAM,IAAI;AACV,IAAM,UAAU,IAAI,YAAY;AAGhC,SAAS,IAAI,GAAmB;AAC9B,UAAQ,IAAI,SAAU,OAAQ,MAAM,MAAM,IAAK,UAAW;AAC5D;AAGO,SAAS,QAAQ,KAAa,MAAsB;AACzD,QAAMC,QAAO,QAAQ,OAAO,GAAG;AAC/B,MAAI,MAAMA,MAAK;AACf,MAAI,IAAI,OAAO;AACf,MAAI,IAAI;AACR,SAAO,OAAO,GAAG;AACf,QAAI,IAAIA,MAAK,CAAC,IAAKA,MAAK,IAAI,CAAC,KAAK,IAAMA,MAAK,IAAI,CAAC,KAAK,KAAOA,MAAK,IAAI,CAAC,KAAK;AAC7E,QAAI,IAAI,CAAC;AACT,SAAK,MAAM;AACX,QAAI,IAAI,CAAC;AACT,QAAI,IAAI,CAAC,IAAI;AACb,WAAO;AACP,SAAK;AAAA,EACP;AACA,MAAI,QAAQ,EAAG,MAAKA,MAAK,IAAI,CAAC,KAAK;AACnC,MAAI,OAAO,EAAG,MAAKA,MAAK,IAAI,CAAC,KAAK;AAClC,MAAI,OAAO,GAAG;AACZ,SAAKA,MAAK,CAAC;AACX,QAAI,IAAI,CAAC;AAAA,EACX;AACA,OAAK,MAAM;AACX,MAAI,IAAI,CAAC;AACT,OAAK,MAAM;AACX,SAAO,MAAM;AACf;;;ACtBO,IAAM,iBAAiB;AAG9B,IAAM,iBAAiB;AACvB,IAAM,gBAAgB;AAEtB,IAAM,cAAc;AACpB,IAAM,cAAc;AAGb,SAAS,SAAS,MAAsB;AAC7C,SAAO,cAAc,QAAQ,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;AACpD;AA0CA,IAAM,WAAW;AAEjB,IAAM,WAAW;AAGV,SAAS,WAAW,MAAiC;AAC1D,QAAM,KAAK,UAAU,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI;AACxD,MAAI,IAAI;AACN,UAAM,QAAQ,GAAG,CAAC,MAAM;AACxB,UAAM,OAAO,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC;AACjC,UAAM,SAAS,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC;AACnC,WAAO;AAAA,MACL,MAAM,QAAQ,GAAG,CAAC,IAAI;AAAA,MACtB,MAAM,QAAQ,GAAG,CAAC,IAAI,GAAG,CAAC;AAAA,MAC1B,MAAM,SAAS,SAAY,OAAO,OAAO,IAAI;AAAA,MAC7C,QAAQ,WAAW,SAAY,OAAO,OAAO,MAAM;AAAA,IACrD;AAAA,EACF;AACA,QAAMC,MAAK,CAAC,MAAM,KAAK,IAAI,KAAK,KAAK,SAAS,GAAG,IAAI,SAAS,KAAK,IAAI,IAAI;AAC3E,MAAIA,KAAI;AACN,WAAO;AAAA,MACL,MAAMA,IAAG,CAAC;AAAA,MACV,MAAMA,IAAG,CAAC;AAAA,MACV,MAAMA,IAAG,CAAC,MAAM,SAAY,OAAO,OAAOA,IAAG,CAAC,CAAC;AAAA,MAC/C,QAAQA,IAAG,CAAC,MAAM,SAAY,OAAO,OAAOA,IAAG,CAAC,CAAC;AAAA,IACnD;AAAA,EACF;AACA,SAAO;AACT;AAMO,SAAS,cAAc,MAAc,cAAiC,CAAC,GAAY;AACxF,MAAI,CAAC,IAAI,eAAe,UAAU,iBAAiB,SAAS,EAAE,SAAS,IAAI,EAAG,QAAO;AACrF,MAAI,2CAA2C,KAAK,IAAI,EAAG,QAAO;AAClE,MAAI,6EAA6E,KAAK,IAAI,EAAG,QAAO;AACpG,QAAM,OAAO,KAAK,WAAW,MAAM,GAAG;AACtC,MAAI,KAAK,SAAS,gBAAgB,KAAK,KAAK,SAAS,0BAA0B,EAAG,QAAO;AACzF,SAAO,YAAY,KAAK,CAAC,WAAW,KAAK,WAAW,MAAM,CAAC;AAC7D;AAkBA,SAAS,OAAO,QAAgB,MAA4B;AAC1D,QAAM,MAAM,OAAO,MAAM,IAAI;AAC7B,MAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,GAAI,KAAI,IAAI;AAC1D,QAAM,MAAoB,CAAC;AAC3B,WAAS,IAAI,KAAK,IAAI,GAAG,OAAO,cAAc,GAAG,KAAK,KAAK,IAAI,IAAI,QAAQ,OAAO,aAAa,GAAG,KAAK;AACrG,UAAM,QAAoB,EAAE,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,EAAE,QAAQ,OAAO,EAAE,EAAE;AAC7E,QAAI,MAAM,KAAM,OAAM,YAAY;AAClC,QAAI,KAAK,KAAK;AAAA,EAChB;AACA,SAAO;AACT;AAGA,SAAS,UAAU,MAA0B;AAC3C,SAAO,KAAK,mBAAmB,OAAO,SAAS,MAAM,KAAK,cAAc;AAC1E;AAQO,SAAS,eACd,OACA,SACA,WACW;AACX,QAAM,MAAM,MAAM,SAAS,GAAG,MAAM,KAAK,KAAK,MAAM,MAAM;AAC1D,QAAM,QAAkB,CAAC;AACzB,QAAM,SAA2B,CAAC;AAClC,QAAM,aAAa,MAAM,cAAc,CAAC;AACxC,MAAIC,QAAO;AACX,aAAW,QAAQ,IAAI,MAAM,IAAI,GAAG;AAClC,UAAM,SAAS,WAAW,IAAI;AAC9B,QAAI,WAAW,MAAM;AACnB,YAAM,KAAK,IAAI;AACf;AAAA,IACF;AACA,QAAI,OAAO,OAAO;AAClB,QAAI,OAAO,SAAS,MAAM;AAExB,YAAMD,MAAK,WAAW;AAAA,QAAU,CAACE,QAAO,MACtC,KAAKD,SAAQC,OAAM,aAAa,MAAM,OAAO,QAAQA,OAAM,eAAe,MAAM,OAAO;AAAA,MACzF;AACA,UAAIF,QAAO,IAAI;AACb,QAAAC,QAAOD,MAAK;AACZ,YAAI,SAAS,iBAAiB,WAAWA,GAAE,EAAE,IAAK,QAAO,WAAWA,GAAE,EAAE;AAAA,MAC1E;AAAA,IACF;AACA,UAAM,OAAO,QAAQ,KAAK,IAAI;AAC9B,QAAI,SAAS,UAAa,OAAO,SAAS,MAAM;AAE9C,YAAM,SAAS,KAAK,QAAQ,KAAK,MAAM,WAAW,OAAO,OAAO,CAAC,IAAI,IAAI,OAAO;AAChF,YAAME,SAAwB;AAAA,QAC5B,UAAU,UAAU,IAAI;AAAA,QACxB;AAAA,QACA,MAAM,OAAO;AAAA,QACb,SAAS;AAAA,QACT,OAAO,OAAO,KAAK,MAAM,MAAM;AAAA,MACjC;AACA,UAAI,KAAK,mBAAmB,KAAM,CAAAA,OAAM,kBAAkB,KAAK;AAC/D,UAAI,KAAK,WAAW,KAAM,CAAAA,OAAM,UAAU,KAAK;AAC/C,MAAAA,OAAM,aAAa;AAAA,QACjB,MAAM;AAAA,QACN,GAAI,KAAK,mBAAmB,OAAO,EAAE,iBAAiB,KAAK,eAAe,IAAI,CAAC;AAAA,QAC/E,GAAI,KAAK,WAAW,OAAO,EAAE,SAAS,KAAK,OAAO,IAAI,CAAC;AAAA,MACzD;AACA,aAAO,KAAKA,MAAK;AACjB,YAAM,WAAW,GAAG,UAAU,IAAI,CAAC,IAAI,MAAM;AAC7C,YAAM,KAAK,gBAAgB,MAAM,QAAQ,QAAQ,CAAC;AAClD;AAAA,IACF;AACA,UAAM,KAAK,IAAI;AACf,UAAM,UAAU,cAAc,MAAM,QAAQ,WAAW;AACvD,UAAM,QAAwB;AAAA,MAC5B,UAAU;AAAA,MACV,QAAQ,OAAO,QAAQ;AAAA,MACvB,MAAM,OAAO;AAAA,MACb;AAAA,MACA,OAAO,CAAC;AAAA,IACV;AACA,QAAI,OAAO,WAAW,KAAM,OAAM,QAAQ,OAAO;AACjD,QAAI,CAAC,WAAW,OAAO,SAAS,MAAM;AACpC,YAAM,SAAS,QAAQ,WAAW,IAAI;AACtC,UAAI,WAAW,OAAW,OAAM,QAAQ,OAAO,QAAQ,OAAO,IAAI;AAAA,IACpE;AACA,WAAO,KAAK,KAAK;AAAA,EACnB;AAGA,QAAM,WAAW,OAAO,cAAc,CAAC,UAAU,MAAM,eAAe,MAAS;AAC/E,MAAI,MAAM,OAAO;AACjB,SAAO,MAAM,WAAW,KAAK,aAAa,MAAM,OAAO,MAAM,CAAC,EAAE,QAAS;AACzE,QAAM,OAAO,KAAK,OAAO,MAAM,GAAG,GAAG,CAAC;AACtC,QAAM,UAAmC;AAAA,IACvC,OAAO,MAAM;AAAA,IACb,QAAQ,MAAM;AAAA,IACd,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM,MAAM,KAAK,IAAI;AAAA,IACrB,UAAU;AAAA,EACZ;AACA,MAAI,UAAU,mBAAmB,QAAQ,UAAU,WAAW,MAAM;AAClE,YAAQ,YAAY;AAAA,MAClB,GAAI,UAAU,mBAAmB,OAAO,EAAE,iBAAiB,UAAU,eAAe,IAAI,CAAC;AAAA,MACzF,GAAI,UAAU,WAAW,OAAO,EAAE,SAAS,UAAU,OAAO,IAAI,CAAC;AAAA,IACnE;AAAA,EACF;AACA,SAAO,EAAE,OAAO,QAAQ;AAC1B;AAEA,SAAS,gBAAgB,MAAc,OAAmB,UAA0B;AAClF,QAAM,WAAW,GAAG,MAAM,IAAI,IAAI,MAAM,IAAI,GAAG,MAAM,WAAW,OAAO,KAAK,IAAI,MAAM,MAAM,EAAE;AAC9F,QAAMF,MAAK,KAAK,YAAY,QAAQ;AACpC,SAAOA,QAAO,KAAK,OAAO,KAAK,MAAM,GAAGA,GAAE,IAAI,WAAW,KAAK,MAAMA,MAAK,SAAS,MAAM;AAC1F;AAEA,SAAS,KAAK,QAA4C;AACxD,MAAI,OAAO,UAAU,cAAc,YAAa,QAAO;AACvD,QAAM,UAAU,OAAO,SAAS,cAAc;AAC9C,SAAO;AAAA,IACL,GAAG,OAAO,MAAM,GAAG,WAAW;AAAA,IAC9B,EAAE,UAAU,IAAI,QAAQ,GAAG,MAAM,UAAK,OAAO,0BAAqB,SAAS,MAAM,OAAO,CAAC,EAAE;AAAA,IAC3F,GAAG,OAAO,MAAM,CAAC,WAAW;AAAA,EAC9B;AACF;;;AJ5KA,SAAS,WAAW,MAA0B;AAC5C,SAAO,WAAW,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC3D;AAMA,IAAM,0BAA0B;AAQhC,IAAM,WAAwB,EAAE,OAAO,MAAM,aAAa,MAAM;AAGhE,IAAM,YAAY;AASlB,IAAM,gBAAwC;AAAA,EAC5C,qBAAqB;AAAA,EACrB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,mBAAmB;AACrB;AAGA,SAAS,iBAAiB,MAAsB;AAC9C,SAAO,KAAK,MAAM,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,wBAAwB,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AACzF;AAGA,SAAS,YAAY,MAAkC;AACrD,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,IAAM,aAAN,MAAiB;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACT;AAAA,EACA,kBAAuC;AAAA;AAAA,EAE9B;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA,WAA2B,CAAC;AAAA;AAAA,EAE5B,SAAS,oBAAI,IAAwB;AAAA,EACrC,WAAW,OAAO,WAAW;AAAA,EACtC,UAA+B;AAAA,EAC/B,kBAAgD;AAAA,EAChD,kBAAkB;AAAA,EAClB,UAAsB,CAAC;AAAA,EACvB,cAAc;AAAA,EACd,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,eAAe;AAAA,EACf,YAAY;AAAA;AAAA,EAEZ,SAA0E;AAAA;AAAA,EAE1E,gBAAgB;AAAA;AAAA,EAEhB,YAAsE;AAAA;AAAA,EAE7D,SAAS,oBAAI,IAAoB;AAAA,EAC1C,gBAAgB;AAAA,EAEhB,YAAY,MAAkB;AAC5B,SAAK,QAAQ;AACb,SAAK,YAAY,KAAK;AACtB,SAAK,WAAW,KAAK;AACrB,SAAK,aAAa,KAAK,aAAa;AACpC,SAAK,kBAAkB,KAAK,WAAW;AACvC,SAAK,SAAS,KAAK,SAAS;AAC5B,SAAK,YAAY,KAAK,iBAAiB,CAAC,UAAU,KAAK,SAAS,eAAe,KAAK,GAAG,MAAM,KAAK,kBAAkB,CAAC,KAAK;AAAA,EAC5H;AAAA,EAEA,MAAM,MAAqB;AAEzB,SAAK,cAAc,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK,2BAA2B,GAAG,EAAE,CAAC;AAE/E,QAAI,OAAO,KAAK,eAAe,SAAU,OAAM,iBAAiB,KAAK,UAAU;AAC/E,UAAM,QAAQ,IAAI;AAAA,MAAC,KAAK,MAAM,SAAS,CAAC,GAAG,MAAM,KAAK,aAAa,GAAG,CAAC,CAAC;AAAA,MACtE,KAAK,MAAM,WAAW,CAAC,GAAG,MAAM,KAAK,eAAe,GAAG,CAAC,CAAC;AAAA,MACzD,KAAK,MAAM,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;AAAA,IAAC,CAAC;AAAA,EACrD;AAAA;AAAA,EAGA,YAA2B;AACzB,WAAO,KAAK,WAAW;AAAA,EACzB;AAAA;AAAA,EAGA,WAAiB;AACf,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,KAAK,MAAoB;AACvB,SAAK,MAAM,IAAI,IAAI;AAAA,EACrB;AAAA;AAAA,EAGA,MAAM,WAA0B;AAC9B,UAAM,WAAW,KAAK;AACtB,UAAM,SAAS,KAAK;AACpB,QAAI,cAAuB,WAAW,OAAQ,KAAK,oBAAoB,OAAO,OAAO,aAAc,OAAO;AAC1G,QAAI,QAAQ,SAAU,eAAc,MAAM,OAAO,SAAS,EAAE,MAAM,CAAC,QAAQ,oBAAoB,GAAG,EAAE;AACpG,SAAK,KAAK,UAAU,KAAK,UAAU;AAAA,MACjC,OAAO,YAAY,EAAE,SAAS,SAAS,SAAS,OAAO,SAAS,OAAO,IAAI,KAAK,IAAI,IAAI,SAAS,MAAM;AAAA,MACvG,QAAQ,KAAK,UAAU,YAAY;AAAA,MACnC,WAAW,KAAK;AAAA,MAChB,cAAc,KAAK;AAAA,MACnB,eAAe,KAAK,WAAW;AAAA,MAC/B,QAAQ;AAAA,IACV,CAAC,CAAC,EAAE;AAAA,EACN;AAAA,EAEA,oBAA0C;AACxC,WAAO,EAAE,GAAG,KAAK,MAAM,WAAW,WAAW,KAAK,WAAW;AAAA,EAC/D;AAAA;AAAA,EAIA,WAAW,SAAiB,SAA2B;AACrD,UAAM,SAAS,OAAO,QAAQ,YAAY,WAAW,QAAQ,UAAU;AACvE,QAAI,WAAW,KAAM;AACrB,QAAI,YAAY,eAAe,OAAO,QAAQ,gBAAgB,SAAU,MAAK,OAAO,IAAI,QAAQ,QAAQ,WAAW;AAAA,aAC1G,YAAY,aAAc,MAAK,OAAO,OAAO,MAAM;AAAA,EAC9D;AAAA,EAEA,UAAU,SAAiC;AACzC,UAAM,SAAS,OAAO,QAAQ,gBAAgB,WAAW,QAAQ,cAAc;AAC/E,UAAM,QAAoB,CAAC;AAC3B,eAAW,CAAC,QAAQ,UAAU,KAAK,KAAK,QAAQ;AAC9C,UAAI,WAAW,QAAQ,WAAW,WAAY,OAAM,MAAM,IAAI,EAAE,aAAa,WAAW;AAAA,IAC1F;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,YAAY,KAAmC;AACnD,UAAM,OAAO,IAAI,OAAO;AACxB,UAAM,SAAS,OAAO,IAAI,QAAQ,WAAW,EAAE;AAC/C,UAAM,SAAS,MAAM,KAAK,cAAc;AAExC,SAAK,UAAU,IAAI;AACnB,SAAK,cAAc;AACnB,SAAK,aAAa;AAClB,QAAI,UAAU;AACd,QAAI;AACF,YAAM,SAAS,MAAM,OAAO,aAAa,MAAM,IAAI,SAAS,IAAI,UAAU,IAAI,OAAO;AACrF,UAAI,WAAW,QAAQ;AACrB,cAAM,EAAE,MAAM,SAAS,MAAM,IAAI,OAAO;AACxC,aAAK,SAAS,UAAU,EAAE,MAAM,UAAU,MAAM,YAAY,IAAI,aAAa,SAAS,GAAG,IAAI,KAAK,OAAO,EAAE;AAAA,EAAK,CAAC;AAAA,MACnH,OAAO;AACL,kBAAU,OAAO;AAAA,MACnB;AAAA,IACF,SAAS,KAAK;AACZ,UAAI,EAAE,eAAe,aAAc,OAAM;AACzC,WAAK,SAAS,UAAU,EAAE,MAAM,UAAU,MAAM,GAAG,IAAI;AAAA,EAAyB,CAAC;AAAA,IACnF,UAAE;AACA,WAAK,aAAa;AAAA,IACpB;AACA,UAAM,OAAO,MAAM,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AACnC,QAAI,SAAS,aAAa;AACxB,UAAI,SAAS;AACX,aAAK,OAAO,IAAI,QAAQ,OAAO,IAAI,QAAQ,eAAe,EAAE,CAAC;AAAA,MAC/D,OAAO;AAGL,aAAK,SAAS,cAAc,EAAE,SAAS,QAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,MAC3D;AAAA,IACF,WAAW,SAAS,cAAc;AAChC,WAAK,OAAO,OAAO,MAAM;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA,EAIA,gBAAuC;AACrC,QAAI,KAAK,QAAS,QAAO,QAAQ,QAAQ,KAAK,OAAO;AAIrD,SAAK,oBAAoB,KAAK,UAAU,MAAM,KAAK,MAAM,KAAK,MAAM,aAAa,KAAK,cAAc,CAAC,CAAC,EAAE,KAAK,OAAO,WAAW;AAE7H,YAAM,KAAK,WAAW,aAAa,OAAO,SAAS,IAAI;AACvD,WAAK,UAAU;AACf,WAAK,kBAAkB;AACvB,aAAO;AAAA,IACT,GAAG,CAAC,QAAQ;AACV,WAAK,kBAAkB;AACvB,YAAM;AAAA,IACR,CAAC;AACD,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,gBAA8B;AAC5B,WAAO;AAAA,MACL,QAAQ,CAAC,MAAM,SAAS,KAAK,SAAS,UAAU,EAAE,MAAM,KAAK,CAAC;AAAA,MAC9D,SAAS,CAAC,QAAQ,KAAK,KAAK,iBAAiB,GAAG,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK,kCAAkC,GAAG,EAAE,CAAC;AAAA,MACnH,MAAM,CAAC,MAAM,SAAS;AACpB,aAAK,UAAU;AAEf,aAAK,QAAQ,MAAM;AAEnB,aAAK,SAAS;AACd,aAAK,KAAK,WAAW,aAAa,IAAI;AACtC,YAAI,CAAC,KAAK,eAAe;AACvB,gBAAM,OAAO,QAAQ,gBAAgB,KAAK,QAAQ,YAAY,IAAI;AAClE,eAAK,SAAS,UAAU,EAAE,MAAM,UAAU,MAAM;AAAA,EAAK,IAAI;AAAA,EAAK,CAAC;AAAA,QACjE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,iBAAiB,KAAmC;AACxD,QAAI,IAAI,SAAS,SAAS;AACxB,WAAK,WAAW,IAAI,UAAU,IAAI,OAAO;AACzC,WAAK,SAAS,IAAI,UAAU,IAAI,SAAS;AAAA,QACvC,UAAU,IAAI;AAAA,QACd,SAAS,IAAI,QAAQ,IAAI,UAAU;AAAA,MACrC,CAAC;AACD;AAAA,IACF;AAEA,UAAM,SAAS,KAAK;AACpB,QAAI,SAAS;AACb,QAAI;AACF,eAAS,MAAM,KAAK,cAAc,IAAI,QAAQ,IAAI,QAAQ;AAAA,IAC5D,UAAE;AAEA,UAAI,WAAW,QAAQ,WAAW,KAAK,QAAS,QAAO,WAAW,OAAO,OAAO,OAAO,WAAW;AAAA,IACpG;AAAA,EACF;AAAA,EAEA,MAAM,aAA4B;AAIhC,UAAMG,SAAQ,KAAK;AACnB,QAAIA,WAAU,MAAM;AAClB,WAAK,SAAS;AACd,MAAAA,OAAM,OAAO,EAAE,OAAO,MAAM,aAAa,KAAK,CAAC;AAC/C;AAAA,IACF;AACA,QAAI,CAAC,KAAK,WAAW,CAAC,KAAK,WAAY;AACvC,SAAK,gBAAgB;AACrB,QAAI;AACF,YAAM,KAAK,QAAQ,UAAU;AAAA,IAC/B,UAAE;AACA,WAAK,gBAAgB;AAAA,IACvB;AAAA,EACF;AAAA;AAAA,EAIA,SACE,SACA,SACA,cACA,QAA4E,CAAC,GAC5D;AACjB,WAAO;AAAA,MACL,QAAQ,MAAM,UAAU,WAAW,KAAK,UAAU,OAAO;AAAA,MACzD;AAAA,MACA,UAAU,MAAM,YAAY,CAAC;AAAA,MAC7B;AAAA,MACA,SAAS,MAAM,WAAW,CAAC;AAAA,IAC7B;AAAA,EACF;AAAA,EAEA,SAAS,SAAiB,SAAqB,QAAgF,CAAC,GAAS;AACvI,SAAK,UAAU,QAAQ,KAAK,SAAS,SAAS,SAAS,MAAM,UAAU,KAAK,SAAS,KAAK,CAAC;AAAA,EAC7F;AAAA,EAEA,QAAQC,QAAwB,QAA0B;AACxD,SAAK,SAAS,UAAU,EAAE,iBAAiBA,OAAM,GAAG,EAAE,OAAO,CAAC;AAAA,EAChE;AAAA,EAEA,OAAO,SAAsB,MAAc,SAAwB,SAAiB,SAA2B;AAC7G,SAAK,UAAU,MAAM,SAAS,MAAM,KAAK,SAAS,SAAS,SAAS,QAAQ,MAAM,CAAC;AAAA,EACrF;AAAA,EAEA,MAAM,MAAM,SAAsB,QAA4E;AAC5G,WAAO,CAAC,KAAK,eAAe;AAC1B,YAAM,WAAW,MAAM,KAAK,UAAU,KAAK,OAAO;AAClD,UAAI,YAAY,SAAS;AACvB,aAAK,YAAY,KAAK,eAAe;AACrC,YAAI,KAAK,UAAW,MAAK;AAAA,MAC3B;AAEA,UAAI,aAAa,KAAM;AACvB,YAAM,EAAE,MAAM,IAAI,IAAI;AACtB,UAAI;AACF,YAAI,YAAY,QAAS,MAAK,YAAY,EAAE,SAAS,IAAI,OAAO,UAAU,OAAO,IAAI,OAAO,QAAQ,OAAO,KAAK,IAAI,EAAE;AACtH,cAAM,OAAO,KAAK,IAAI;AAAA,MACxB,SAAS,KAAK;AACZ,aAAK,KAAK,2BAA2B,eAAe,QAAQ,IAAI,QAAQ,GAAG,EAAE;AAAA,MAC/E,UAAE;AACA,YAAI,YAAY,QAAS,MAAK,YAAY;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,cAA0B;AACxB,UAAM,WAAW,KAAK,SAAS;AAC/B,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,wBAAwB,KAAK,MAAM;AAAA,MACnC,eAAe;AAAA,QACb,MAAM;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,iBAAiB;AAAA,QACjB,oBAAoB;AAAA,MACtB;AAAA;AAAA,MAEA,QAAQ,WAAW,iBAAiB,KAAK,QAAQ,IAAI,SAAS,OAAO,KAAK,SAAS,UAAU,GAAG,MAAM,iBAAiB,KAAK,QAAQ;AAAA,MACpI,YAAY,CAAC;AAAA,MACb,UAAU,KAAK,cAAc;AAAA;AAAA;AAAA,MAG7B,oBAAoB,KAAK,cAAc,OAAO,CAAC,UAAU,IAAI,CAAC;AAAA,IAChE;AAAA,EACF;AAAA;AAAA,EAIA,MAAM,eAAe,KAAoB,MAA6B;AAIpE,SAAK,QAAQ,QAAQ,IAAI,MAAM;AAC/B,QAAI;AACF,YAAM,KAAK,gBAAgB,WAAW,KAAK,IAAI;AAAA,IACjD,UAAE;AACA,WAAK,QAAQ,QAAQ,IAAI,MAAM;AAAA,IACjC;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,gBAAgB,SAAsB,KAAoB,MAA6B;AAC3F,YAAQ,IAAI,OAAO,UAAU;AAAA,MAC3B,KAAK;AACH,aAAK,OAAO,SAAS,MAAM,KAAK,qBAAqB,KAAK,YAAY,CAAC;AACvE;AAAA,MACF,KAAK;AAEH,cAAM,QAAQ,KAAK;AAAA,UACjB,KAAK,WAAW,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK,qBAAqB,GAAG,EAAE,CAAC;AAAA,UACtE,IAAI,QAAQ,CAAC,MAAM,WAAW,GAAG,uBAAuB,CAAC;AAAA,QAC3D,CAAC;AACD,aAAK,OAAO,SAAS,MAAM,KAAK,mBAAmB,EAAE,QAAQ,KAAK,CAAC;AACnE;AAAA,MACF,KAAK,iBAAiB;AACpB,YAAI;AACJ,YAAI,KAAK,cAAc,MAAM;AAC3B,kBAAQ,EAAE,MAAM,YAAY,aAAa,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,SAAS,SAAS,OAAO,SAAS,GAAG,KAAK,QAAQ,6BAA6B,MAAM,CAAC,EAAE;AAAA,QACzK,OAAO;AAEL,cAAI,IAAI,QAAQ,YAAY,YAAa,OAAM,KAAK,cAAc,EAAE,MAAM,MAAM,IAAI;AACpF,kBAAQ,MAAM,KAAK,UAAU,OAAO,IAAI,OAAO;AAAA,QACjD;AACA,aAAK,OAAO,SAAS,MAAM,KAAK,eAAe,KAAK;AACpD;AAAA,MACF;AAAA,MACA,KAAK,oBAAoB;AACvB,cAAM,UAAU,IAAI,QAAQ,YAAY;AACxC,aAAK,OAAO,SAAS,MAAM,KAAK,kBAAkB,EAAE,QAAQ,MAAM,QAAQ,CAAC;AAC3E,aAAK,gBAAgB;AACrB,aAAK,SAAS,KAAK;AAGnB,mBAAW,MAAM,KAAK,MAAM,KAAK,GAAG,GAAG;AACvC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAIA,MAAM,aAAa,KAAoB,MAA6B;AAClE,UAAM,OAAO,IAAI,OAAO;AACxB,QAAI,SAAS,kBAAmB,QAAO,KAAK,SAAS,KAAK,IAAI;AAC9D,SAAK,QAAQ,QAAQ,IAAI,MAAM;AAC/B,QAAI;AACF,cAAQ,MAAM;AAAA,QACZ,KAAK;AAGH,eAAK,OAAO,SAAS,MAAM,KAAK,qBAAqB,KAAK,YAAY,CAAC;AACvE;AAAA,QACF,KAAK;AACH,eAAK,OAAO,SAAS,MAAM,KAAK,kBAAkB,MAAM,KAAK,UAAU,GAAG,CAAC;AAC3E;AAAA,QACF,KAAK;AACH,eAAK,OAAO,SAAS,MAAM,KAAK,qBAAqB,gBAAgB,OAAO,IAAI,QAAQ,QAAQ,EAAE,CAAC,CAAC;AACpG;AAAA,QACF,KAAK;AACH,eAAK,OAAO,SAAS,MAAM,KAAK,iBAAiB,MAAM,KAAK,SAAS,GAAG,CAAC;AACzE;AAAA,QACF,KAAK;AACH,eAAK,OAAO,SAAS,MAAM,KAAK,iBAAiB,EAAE,QAAQ,MAAM,SAAS,aAAa,KAAK,UAAU,IAAI,OAAO,EAAE,CAAC;AACpH;AAAA,QACF,KAAK;AACH,eAAK,OAAO,SAAS,MAAM,KAAK,mBAAmB,EAAE,QAAQ,MAAM,OAAO,KAAK,UAAU,IAAI,OAAO,EAAE,CAAC;AACvG;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,gBAAM,KAAK,YAAY,GAAG;AAC1B;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAEH,gBAAM,KAAK,gBAAgB,SAAS,KAAK,IAAI;AAC7C;AAAA,QACF;AACE,eAAK,KAAK,kCAAkC,IAAI,EAAE;AAAA,MACtD;AAAA,IACF,SAAS,KAAK;AAGZ,YAAM,YAAY,cAAc,IAAI;AACpC,UAAI,cAAc,QAAW;AAC3B,cAAM,OAAO,eAAe,QAAQ,IAAI,OAAO;AAC/C,cAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC/D,cAAM,QAAsB,EAAE,OAAO,MAAM,QAAQ,SAAS,WAAW,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,EAAE;AAC/F,aAAK,OAAO,SAAS,MAAM,KAAK,WAAW,EAAE,QAAQ,SAAS,GAAG,MAAM,CAAC;AAAA,MAC1E;AACA,YAAM;AAAA,IACR,UAAE;AACA,WAAK,QAAQ,QAAQ,IAAI,MAAM;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,SAAS,KAAyC;AACtD,UAAM,OAAO,OAAO,IAAI,QAAQ,QAAQ,EAAE;AAC1C,UAAM,WAAW,OAAO,IAAI,QAAQ,eAAe,WAC/C,IAAI,QAAQ,aACZ,sBAAsB,MAAM,KAAK,MAAM;AAC3C,UAAM,SAAS,sBAAsB,MAAM,QAAQ;AACnD,UAAM,OAAO,cAAc,MAAM,MAAM;AACvC,UAAM,SAAS,IAAI,QAAQ,iBAAiB,IAAI,IAAI;AACpD,UAAM,CAAC,SAAS,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,MACzC,SAAS,OAAO,QAAQ,aAAa,MAAM,KAAK,cAAc,GAAG,QAAQ,MAAM,MAAM,GAAG;AAAA,MACxF,KAAK,QAAQ,UAAU,MAAM,MAAM,KAAK;AAAA,IAC1C,CAAC;AACD,UAAM,OAAO,UAAU,OAAO,UAAU,YAAY,OAAO,QAAQ,GAAG,KAAK;AAAA;AAAA,EAAO,iBAAiB,OAAO,CAAC;AAC3G,WAAO,SAAS,OACZ,EAAE,QAAQ,MAAM,OAAO,OAAO,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,IACrD,EAAE,QAAQ,MAAM,OAAO,MAAM,MAAM,EAAE,cAAc,KAAK,GAAG,UAAU,CAAC,EAAE;AAAA,EAC9E;AAAA,EAEA,MAAM,UAAU,KAAyC;AACvD,UAAM,OAAO,OAAO,IAAI,QAAQ,QAAQ,EAAE;AAC1C,UAAM,WAAW,OAAO,IAAI,QAAQ,eAAe,WAC/C,IAAI,QAAQ,aACZ,sBAAsB,MAAM,KAAK,MAAM;AAC3C,UAAM,SAAS,sBAAsB,MAAM,QAAQ;AAEnD,UAAM,CAAC,SAAS,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,MACzC,KAAK,oBAAoB,MAAM,MAAM;AAAA,MACrC,KAAK,QAAQ,SAAS,MAAM,MAAM,KAAK;AAAA,IACzC,CAAC;AAGD,QAAI,UAAU,QAAQ;AACtB,QAAI,QAAQ,QAAQ;AACpB,UAAM,QAAQ,oBAAI,IAAoB;AACtC,QAAI,UAAU,QAAQ,MAAM,UAAU,QAAQ,OAAO;AACnD,iBAAW,SAAS,MAAM,QAAS,OAAM,IAAI,MAAM,MAAM,MAAM,IAAI;AACnE,gBAAU,CAAC,GAAG,MAAM,KAAK,GAAG,GAAG,QAAQ,QAAQ,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;AAAA,IACnF,WAAW,UAAU,QAAQ,MAAM,QAAQ,SAAS,KAAK,QAAQ,QAAQ,WAAW,GAAG;AAErF,iBAAW,SAAS,MAAM,QAAS,OAAM,IAAI,MAAM,MAAM,MAAM,IAAI;AACnE,gBAAU,CAAC,GAAG,MAAM,KAAK,CAAC;AAC1B,cAAQ,MAAM;AAAA,IAChB;AACA,UAAM,cAAc,sBAAsB,MAAM,KAAK;AACrD,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,MACA,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU,MAAM,SAAS,IAAI,CAAC,IAAI;AAAA;AAAA,QAEhC,6BAA6B,QAAQ,IAAI,CAAC,UAAU;AAAA,UAClD,OAAO;AAAA,UACP,KAAK;AAAA,UACL;AAAA,UACA,MAAM,YAAY,MAAM,IAAI,IAAI,CAAC;AAAA,QACnC,EAAE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAGA,MAAM,oBAAoB,MAAc,QAA+D;AACrG,UAAM,OAAO,aAAa,MAAM,MAAM;AACtC,UAAM,SAAS,MAAM,KAAK,cAAc;AACxC,UAAM,MAAM,KAAK,YAAY,GAAG;AAChC,QAAI,QAAQ,IAAI;AACd,YAAM,SAAS,KAAK,MAAM,MAAM,CAAC;AACjC,YAAMC,YAAW,MAAM,OAAO,cAAc,KAAK,MAAM,GAAG,GAAG,CAAC,GAC3D,OAAO,CAAC,SAAS,KAAK,WAAW,MAAM,KAAK,CAAC,KAAK,WAAW,SAAS,CAAC;AAC1E,aAAO,EAAE,SAAAA,UAAS,OAAO,SAAS,OAAO,OAAO;AAAA,IAClD;AACA,UAAM,QAAQ,oBAAI,IAAI,CAAC,GAAI,MAAM,OAAO,cAAc,YAAY,GAAI,GAAI,MAAM,OAAO,aAAa,CAAE,CAAC;AACvG,UAAM,UAAU,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,WAAW,QAAQ,CAAC,EAAE,KAAK;AACtG,WAAO,EAAE,SAAS,OAAO,SAAS,KAAK,OAAO;AAAA,EAChD;AAAA,EAEA,MAAM,cAAc,QAAgB,UAAyC;AAE3E,QAAI,KAAK,cAAe,QAAO,EAAE,OAAO,MAAM,aAAa,KAAK;AAChE,UAAM,SAAS,KAAK;AACpB,QAAI,CAAC,KAAK,eAAe,OAAO,OAAO,WAAW,SAAU,QAAO;AACnE,QAAI,KAAK,UAAU,WAAW,MAAM,EAAG,OAAM,IAAI,QAAQ,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAClF,QAAI,KAAK,UAAU,WAAW,MAAM,EAAG,QAAO;AAC9C,UAAM,SAAS,WAAW,KAAK,UAAU,eAAe;AACxD,UAAM,SAAS,IAAI,QAAqB,CAAC,WAAY,KAAK,SAAS,EAAE,OAAO,OAAO,QAAQ,OAAO,CAAE;AACpG,SAAK,UAAU,UAAU,KAAK,SAAS,iBAAiB,EAAE,QAAQ,SAAS,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjG,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,MAAM,aAAa,OAAqC;AACtD,QAAI,MAAM,OAAO,aAAa,cAAe;AAC7C,UAAMF,SAAQ,KAAK;AAMnB,QAAIA,WAAU,KAAM;AACpB,UAAM,WAAW,MAAM,aAAa;AACpC,QAAI,OAAO,aAAa,YAAY,aAAa,MAAM,aAAaA,OAAM,MAAO;AACjF,SAAK,SAAS;AACd,IAAAA,OAAM,OAAO,EAAE,OAAO,OAAO,MAAM,QAAQ,UAAU,WAAW,MAAM,QAAQ,QAAQ,MAAM,aAAa,MAAM,CAAC;AAAA,EAClH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,qBAAqB,OAAqB,OAAe,YAAqC,MAAqC;AACjI,QAAI;AACF,YAAM,YAAY,eAAe,EAAE,OAAO,MAAM,OAAO,QAAQ,MAAM,QAAQ,OAAO,WAAW,GAAG;AAAA,QAChG,MAAM,CAAC,SAAS;AACd,gBAAM,SAAS,KAAK,OAAO,IAAI,IAAI;AACnC,cAAI,WAAW,OAAW,QAAO;AACjC,cAAI,QAAQ;AACZ,cAAI;AACF,oBAAQ,uBAAuB,OAAO,MAAM,KAAK,kBAAkB,CAAC,EAAE;AAAA,UACxE,QAAQ;AAAA,UAER;AACA,iBAAO,EAAE,GAAG,QAAQ,MAAM;AAAA,QAC5B;AAAA,QACA,UAAU,CAAC,SAAS,KAAK,MAAM,aAAa,IAAI;AAAA,QAChD,aAAa,KAAK,MAAM;AAAA,MAC1B,GAAG,IAAI;AACP,YAAM,YAAY,UAAU;AAC5B,aAAO,UAAU;AAAA,IACnB,SAAS,KAAK;AACZ,WAAK,MAAM,IAAI,gCAAgC,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,EAAE;AACjG,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA,EAGA,UAAU,MAAc,MAAwB;AAC9C,SAAK,OAAO,OAAO,IAAI;AACvB,SAAK,OAAO,IAAI,MAAM,IAAI;AAC1B,QAAI,KAAK,OAAO,OAAO,UAAW,MAAK,OAAO,OAAO,KAAK,OAAO,KAAK,EAAE,KAAK,EAAE,KAAM;AAAA,EACvF;AAAA,EAEA,MAAM,cAAc,QAAsB,MAA2C;AACnF,UAAM,OAAO,KAAK;AAKlB,UAAM,YAAY,KAAK,WAAW,YAAY,QAAQ,OAAO,UAAU;AAGvE,UAAM,OAAO,aAAa,KAAK,YAAY,KAAK,UAAU,QAAQ,IAAI,IAAI,SAAS,IAAI;AACvF,SAAK,UAAU,MAAM,IAAI;AACzB,UAAMG,aAAY,CAAC,WACjB,aAAa,KAAK,YACd,KAAK,UAAU,WAAW,MAAM,MAAM,IACtC,GAAG,OAAO,UAAU,QAAQ,KAAK,kBAAkB,CAAC,CAAC;AAAA,gBAAmB,IAAI;AAClF,UAAM,UAAU,uBAAuB,IAAI;AAC3C,QAAI,YAAY,MAAM;AACpB,UAAI;AACF,cAAM,SAAS,MAAM,OAAO,SAASA,WAAU,OAAO,CAAC;AACvD,YAAI,CAAC,OAAO,iBAAkB,QAAO;AAAA,MACvC,SAAS,KAAK;AACZ,YAAI,EAAE,eAAe,iBAAkB,OAAM;AAAA,MAC/C;AAAA,IACF;AACA,WAAO,OAAO,SAASA,WAAU,IAAI,CAAC;AAAA,EACxC;AAAA,EAEA,MAAM,SAAS,KAAoB,MAA6B;AAC9D,UAAM,SAAS,IAAI;AACnB,QAAI,KAAK,WAAW;AAElB,WAAK,QAAQ,QAAQ,MAAM;AAC3B,WAAK,OAAO,SAAS,MAAM,KAAK,iBAAiB,EAAE,QAAQ,UAAU,CAAC;AACtE,WAAK,QAAQ,QAAQ,MAAM;AAC3B;AAAA,IACF;AACA,UAAM,OAAO,OAAO,IAAI,QAAQ,QAAQ,EAAE;AAC1C,UAAM,SAAS,IAAI,QAAQ,WAAW;AACtC,QAAI,CAAC,UAAU,IAAI,QAAQ,kBAAkB,OAAO;AAClD,WAAK;AACL,WAAK,SAAS,KAAK,EAAE,MAAM,KAAK,iBAAiB,OAAO,KAAK,CAAC;AAAA,IAChE;AACA,UAAM,QAAQ,KAAK;AACnB,SAAK,UAAU;AACf,SAAK,cAAc,IAAI,QAAQ,gBAAgB;AAC/C,SAAK,QAAQ,QAAQ,MAAM;AAE3B,QAAI,CAAC,OAAQ,MAAK,SAAS,iBAAiB,EAAE,MAAM,iBAAiB,MAAM,CAAC;AAC5E,QAAI,KAAK,oBAAoB,MAAM;AAEjC,WAAK,SAAS,UAAU,EAAE,MAAM,UAAU,MAAM,gBAAgB,KAAK,eAAe;AAAA,EAAK,CAAC;AAC1F,WAAK,kBAAkB;AAAA,IACzB;AAEA,QAAI,QAA6B;AAEjC,QAAI,aAAgC;AACpC,SAAK,aAAa;AAClB,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,cAAc;AACxC,UAAI,OAAO,WAAW,UAAa,KAAK,oBAAoB,QAAQ;AAElE,aAAK,kBAAkB;AACvB,aAAK,SAAS,UAAU,EAAE,MAAM,UAAU,MAAM,GAAG,OAAO,MAAM;AAAA,EAAK,CAAC;AAAA,MACxE;AACA,YAAM,OAAmB;AAAA,QACvB;AAAA,QACA,gBAAgB,UAAU,IAAI,QAAQ,kBAAkB,QAAQ,OAAO;AAAA,QACvE,QAAQ,OAAO,IAAI,SAAS,WAAW,WAAW,IAAI,SAAS,SAAS;AAAA,MAC1E;AACA,YAAM,SAAS,MAAM,KAAK,cAAc,QAAQ,IAAI;AAEpD,WAAK,QAAQ,QAAQ,IAAI;AACzB,UAAI,OAAO,kBAAkB;AAC3B,cAAM,YAAY,OAAO,iBAAiB;AAC1C,cAAM,YAAY,YACd,MAAM,OAAO,cAAc,SAAS,IACpC,EAAE,MAAM,SAAS,SAAS,OAAO,iBAAiB,MAAM,OAAO,GAAG;AACtE,gBAAQ;AAAA,UACN,OAAO,UAAU,QAAQ;AAAA,UACzB,QAAQ,UAAU;AAAA,UAClB,YAAY,UAAU,SAAS,GAAG,UAAU,IAAI,KAAK,UAAU,OAAO,IAAI,MAAM,IAAI;AAAA,QACtF;AACA,qBAAa,KAAK,qBAAqB,OAAO,UAAU,OAAO,OAAO,iBAAiB,YAAY,YAAY,IAAI;AAAA,MACrH,WAAW,CAAC,UAAU,OAAO,OAAO,SAAS,aAAa;AACxD,cAAM,OAAO,gBAAgB,OAAO,OAAO,MAAM;AAAA,MACnD;AACA,YAAM,OAAO,MAAM;AAAA,IACrB,SAAS,KAAK;AACZ,UAAI,eAAe,iBAAiB;AAElC,gBAAQ,EAAE,OAAO,eAAe,QAAQ,IAAI,SAAS,WAAW,CAAC,gBAAgB,IAAI,OAAO,EAAE,EAAE;AAAA,MAClG,WAAW,eAAe,aAAa;AACrC,gBAAQ,EAAE,OAAO,eAAe,QAAQ,yBAAyB,WAAW,CAAC,uBAAuB,EAAE;AACtG,cAAM,KAAK,SAAS,MAAM,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AAAA,MAC5C,OAAO;AACL,cAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC/D,gBAAQ,EAAE,OAAO,eAAe,QAAQ,SAAS,WAAW,CAAC,OAAO,EAAE;AAAA,MACxE;AAAA,IACF,UAAE;AACA,WAAK,aAAa;AAAA,IACpB;AAEA,UAAM,KAAK,SAAS,iBAAiB;AAErC,QAAI,OAAO;AACT,UAAI,CAAC,UAAU,IAAI,QAAQ,kBAAkB,OAAO;AAIlD,cAAM,IAAI,QAAQ,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AACzC,aAAK,eAAe,KAAK,UAAU,YAAY;AAAA,MACjD;AACA,WAAK,SAAS,SAAS,OAAO,aAAa,EAAE,UAAU,EAAE,CAAC,cAAc,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC;AAC9F,WAAK,OAAO,SAAS,MAAM,KAAK,iBAAiB,EAAE,QAAQ,SAAS,iBAAiB,OAAO,GAAG,MAAM,CAAC;AAAA,IACxG,OAAO;AACL,WAAK,OAAO,SAAS,MAAM,KAAK,iBAAiB;AAAA,QAC/C,QAAQ;AAAA,QACR,iBAAiB;AAAA,QACjB,SAAS,CAAC;AAAA,QACV,kBAAkB,CAAC;AAAA,MACrB,CAAC;AAAA,IACH;AACA,SAAK,QAAQ,QAAQ,MAAM;AAAA,EAC7B;AACF;;;AKn0BO,IAAM,UAAU;;;ACuBvB,IAAM,OAAO;AAEb,IAAM,QAAN,MAAe;AAAA,EACb,SAAc,CAAC;AAAA,EACf,WAAkC,CAAC;AAAA,EACnC,IAAI,OAAe;AACjB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EACA,KAAK,MAAe;AAClB,UAAM,SAAS,KAAK,SAAS,MAAM;AACnC,QAAI,OAAQ,QAAO,IAAI;AAAA,QAClB,MAAK,OAAO,KAAK,IAAI;AAAA,EAC5B;AAAA,EACA,MAAkB;AAChB,UAAM,OAAO,KAAK,OAAO,MAAM;AAC/B,QAAI,SAAS,OAAW,QAAO,QAAQ,QAAQ,IAAI;AACnD,WAAO,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,KAAK,OAAO,CAAC;AAAA,EAC7D;AACF;AAEA,SAAS,MAAM,QAAmD;AAChE,SAAO,kBAAkB,cAAc,IAAI,WAAW,MAAM,IAAI,IAAI,WAAW,OAAO,QAAQ,OAAO,YAAY,OAAO,UAAU;AACpI;AAEA,SAAS,SAAS,OAA4C;AAC5D,SAAO,OAAO,MAAM,WAAW,YAAY,OAAO,MAAM,aAAa;AACvE;AAEA,SAAS,SAAS,OAAqC;AACrD,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEO,IAAM,eAAN,MAA6C;AAAA,EACzC,QAA0B,QAAQ,QAAQ;AAAA,EAC1C,UAAuD,EAAE,OAAO,IAAI,MAAM,GAAG,SAAS,IAAI,MAAM,GAAG,OAAO,IAAI,MAAM,EAAE;AAAA,EACtH,aAAa,oBAAI,IAAqB;AAAA;AAAA,EAG/C,QAAQ,SAAsB,KAA2B;AACvD,UAAM,EAAE,QAAQ,eAAe,cAAc,UAAU,QAAQ,IAAI;AACnE,UAAM,QAAQ,SAAS,MAAM,KAAK,SAAS,MAAM,KAAK,SAAS,OAAO;AACtE,SAAK,QAAQ,OAAO,EAAE,KAAK,QACvB;AAAA,MACA,MAAM;AAAA,MACN,KAAK;AAAA,QACH;AAAA,QACA,cAAc,SAAS,YAAY,IAAI,eAAe,CAAC;AAAA,QACvD,UAAU,SAAS,QAAQ,IAAI,WAAW,CAAC;AAAA,QAC3C;AAAA,QACA,UAAU,IAAI,WAAW,CAAC,GAAG,IAAI,KAAK;AAAA,MACxC;AAAA,IACF,IACE,IAAI;AAAA,EACV;AAAA,EAEA,UAAU,UAAuC;AAC/C,SAAK,WAAW,IAAI,QAAQ;AAC5B,WAAO,MAAM,KAAK,WAAW,OAAO,QAAQ;AAAA,EAC9C;AAAA,EAEA,MAAM,SAAkB,KAA4B;AAClD,UAAM,MAAsB;AAAA,MAC1B;AAAA,MACA,QAAQ,IAAI;AAAA,MACZ,eAAe,IAAI;AAAA,MACnB,UAAU,IAAI;AAAA,MACd,SAAS,IAAI;AAAA,MACb,SAAS,IAAI;AAAA,IACf;AACA,eAAW,YAAY,KAAK,WAAY,UAAS,SAAS,GAAG;AAAA,EAC/D;AAAA,EAEA,KAAK,SAAgD;AACnD,WAAO,KAAK,QAAQ,OAAO,EAAE,IAAI;AAAA,EACnC;AAAA,EAEA,cAAsB;AACpB,WAAO,KAAK,QAAQ,MAAM;AAAA,EAC5B;AAAA,EAEA,MAAM,SAAsB,OAAe,KAA4B;AACrE,SAAK,MAAM,SAAS,GAAG;AAAA,EACzB;AAAA,EAEA,QAAQ,KAA4B;AAClC,SAAK,MAAM,SAAS,GAAG;AAAA,EACzB;AAAA,EAEA,aAAqB;AACnB,WAAO;AAAA,EACT;AAAA,EAEA,UAAU,KAA4B;AACpC,SAAK,MAAM,SAAS,GAAG;AAAA,EACzB;AACF;;;ACwBO,SAAS,SAAS,OAAoC;AAC3D,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEO,SAAS,eAAe,OAAuC;AACpE,SAAO,SAAS,KAAK,KAAK,OAAO,MAAM,SAAS;AAClD;AAMO,SAAS,iBAAiB,KAAgC;AAC/D,QAAM,UAAU,IAAI;AACpB,MAAI,YAAY,SAAY,CAAC,SAAS,OAAO,KAAK,OAAO,QAAQ,SAAS,WAAW,CAAC,eAAe,IAAI,MAAM,GAAG;AAChH,UAAM,IAAI,MAAM,gDAAgD,KAAK,UAAU,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,EAAE;AAAA,EACrG;AACA,QAAM,SAAS,eAAe,IAAI,MAAM,IAAI,IAAI,SAAS,EAAE,MAAM,YAAY;AAC7E,SAAO,YAAY,SAAY,EAAE,OAAO,IAAI,EAAE,QAAQ,kBAAkB,QAAuC;AACjH;;;ACxJA;AAGO,IAAM,qBAAqB;AAE3B,IAAM,eAAe;AAqB5B,IAAM,YAAN,cAAwB,MAAM;AAAC;AAIxB,IAAM,gBAAN,MAAM,eAAsC;AAAA,EACxC,UAAU;AAAA,EACV,WAAgD,EAAE,SAAS,IAAI,QAAQ,GAAG;AAAA,EAC1E,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,WAAW,oBAAI,IAAqB;AAAA;AAAA,EAEpC,iBAAiB,oBAAI,IAAY;AAAA,EAC1C,UAAU;AAAA,EACV,eAAe;AAAA,EACf;AAAA,EACA,UAAU;AAAA,EAEF,YAAY,QAAoB,QAAsB;AAC5D,SAAK,UAAU;AACf,SAAK,UAAU;AACf,WAAO,iBAAiB,WAAW,CAAC,UAAU,KAAK,SAAS,MAAM,IAAI,CAAC;AAEvE,WAAO,iBAAiB,SAAS,CAAC,UAAU;AAC1C,WAAK,QAAQ,OAAO,UAAU,sCAAsC,MAAM,WAAW,SAAS;AAAA,CAAI;AAClG,WAAK,MAAM,IAAI;AAAA,IACjB,CAAC;AAAA,EACH;AAAA,EAEA,aAAa,OAAO,QAAsB,SAAuD;AAC/F,UAAM,SAAS,IAAI,eAAc,QAAQ,aAAa,GAAG,MAAM;AAC/D,UAAMC,QAAO,QAAQ,QAAQ,WAAW,UAAU,QAAQ;AAC1D,QAAI;AACF,YAAM,EAAE,UAAU,IAAI,MAAM,OAAO,SAAS,QAAQ,EAAE,MAAAA,OAAM,KAAK,QAAQ,IAAI,CAAC;AAC9E,UAAI,OAAO,cAAc,SAAU,QAAO,SAAS,UAAU,YAAY,SAAS;AAClF,aAAO,SAAS,SAAS,WAAW,OAAO,cAAc,WAAW,YAAY,EAAE;AAAA,IACpF,SAAS,KAAK;AACZ,aAAO,KAAK;AACZ,YAAM;AAAA,IACR;AACA,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,KAAoB;AAC3B,QAAI,SAAS,GAAG,KAAK,IAAI,SAAS,UAAU;AAC1C,WAAK,QAAQ,OAAO,IAAI,SAAS,WAAW,WAAW,UAAU,OAAO,IAAI,IAAI,CAAC;AAAA,IACnF,WAAW,gBAAgB,GAAG,GAAG;AAC/B,WAAK,QAAQ,QAAQ,GAAG;AAAA,IAC1B,WAAW,SAAS,GAAG,KAAK,IAAI,SAAS,SAAS;AAChD,YAAM,KAAK,OAAO,IAAI,EAAE;AACxB,YAAM,UAAU,KAAK,SAAS,IAAI,EAAE;AACpC,UAAI,CAAC,QAAS;AACd,WAAK,SAAS,OAAO,EAAE;AACvB,WAAK,eAAe,OAAO,EAAE;AAC7B,UAAI,OAAO,IAAI,YAAY,SAAU,SAAQ,OAAO,IAAI,MAAM,IAAI,OAAO,CAAC;AAAA,UACrE,SAAQ,QAAQ,GAAG;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,MAA2B;AAC/B,QAAI,KAAK,QAAS;AAClB,SAAK,UAAU;AACf,SAAK,QAAQ,UAAU;AAGvB,SAAK,QAAQ,KAAK,MAAM,KAAK,SAAS;AACtC,eAAW,WAAW,KAAK,SAAS,OAAO,EAAG,SAAQ,OAAO,IAAI,UAAU,4BAA4B,CAAC;AACxG,SAAK,SAAS,MAAM;AAAA,EACtB;AAAA,EAEA,SAAS,IAAY,SAAoB,CAAC,GAAG,gBAAgB,OAA2B;AACtF,QAAI,KAAK,QAAS,QAAO,QAAQ,OAAO,IAAI,UAAU,4BAA4B,CAAC;AACnF,UAAM,KAAK,EAAE,KAAK;AAClB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,SAAS,IAAI,IAAI,EAAE,SAAS,OAAO,CAAC;AACzC,UAAI,cAAe,MAAK,eAAe,IAAI,EAAE;AAC7C,WAAK,QAAQ,YAAY,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC;AAAA,IAChD,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,eAAe,IAAY,QAAmB,MAAkC;AACpF,SAAK,eAAe;AACpB,QAAI;AACF,aAAO,MAAM,KAAK,SAAS,IAAI,QAAQ,IAAI;AAAA,IAC7C,SAAS,KAAK;AACZ,UAAI,eAAe,aAAa,KAAK,aAAc,OAAM,IAAI,YAAY,GAAG,IAAI,cAAc;AAC9F,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,QAAyC;AACtD,WAAO,iBAAiB,MAAM,KAAK,eAAe,QAAQ,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC;AAAA,EAC1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,YAA2B;AAC/B,SAAK,eAAe;AACpB,UAAM,UAAU,CAAC,GAAG,KAAK,cAAc;AACvC,UAAM,WAAW,MAAM,QAAQ,KAAK;AAAA,MAClC,KAAK,SAAS,MAAM,EAAE,KAAK,MAAM,MAAM,MAAM,KAAK;AAAA,MAClD,IAAI,QAAiB,CAAC,YAAY,WAAW,MAAM,QAAQ,KAAK,GAAG,kBAAkB,CAAC;AAAA,IACxF,CAAC;AACD,QAAI,UAAU;AACZ,iBAAW,MAAM,SAAS;AACxB,aAAK,SAAS,IAAI,EAAE,GAAG,OAAO,IAAI,UAAU,aAAa,CAAC;AAC1D,aAAK,SAAS,OAAO,EAAE;AACvB,aAAK,eAAe,OAAO,EAAE;AAAA,MAC/B;AACA;AAAA,IACF;AACA,SAAK,YAAY;AACjB,SAAK,MAAM,IAAI;AAAA,EACjB;AAAA;AAAA,EAGA,QAAuB;AACrB,WAAO,QAAQ,QAAQ;AAAA,EACzB;AAAA,EAEA,MAAM,gBAAgB,gBAAwB,QAAqC;AACjF,QAAI,OAAO,aAAa,OAAW;AACnC,UAAM,KAAK,SAAS,aAAa,EAAE,OAAO,gBAAgB,QAAQ,OAAO,SAAS,CAAC;AAAA,EACrF;AAAA,EAEA,MAAM,aACJ,SACA,SACA,UACA,SAC6F;AAC7F,UAAM,QAAQ,MAAM,KAAK,eAAe,QAAQ,EAAE,SAAS,SAAS,UAAU,SAAS,QAAQ,IAAI,QAAQ,EAAE,GAAG,cAAc;AAC9H,QAAI,SAAS,MAAM,KAAK,GAAG;AACzB,YAAM,EAAE,MAAM,SAAS,MAAM,IAAI,MAAM;AACvC,aAAO,EAAE,OAAO,EAAE,MAAM,OAAO,IAAI,GAAG,SAAS,OAAO,OAAO,GAAG,OAAO,OAAO,KAAK,EAAE,EAAE;AAAA,IACzF;AACA,WAAO,EAAE,SAAS,MAAM,YAAY,KAAK;AAAA,EAC3C;AAAA,EAEA,MAAM,cAAc,WAAoF;AACtG,QAAI,UAAU,aAAa,OAAW,QAAO,EAAE,MAAM,SAAS,SAAS,UAAU,eAAe,IAAI,OAAO,GAAG;AAC9G,UAAM,EAAE,MAAM,IAAI,MAAM,KAAK,SAAS,YAAY,EAAE,QAAQ,UAAU,SAAS,CAAC;AAChF,WAAO,KAAK,MAAM,OAAO,UAAU,WAAW,QAAQ,0CAA0C;AAAA,EAClG;AAAA,EAEA,MAAM,cAAc,YAAuC;AACzD,UAAM,QAAQ,MAAM,KAAK,SAAS,SAAS,EAAE,MAAM,WAAW,CAAC,EAAE,MAAM,MAAM,IAAI;AACjF,WAAO,MAAM,QAAQ,OAAO,KAAK,IAAI,MAAM,MAAM,OAAO,CAAC,MAAmB,OAAO,MAAM,QAAQ,IAAI,CAAC;AAAA,EACxG;AAAA;AAAA,EAGA,MAAM,QAAQ,MAAc,QAAwC;AAClE,UAAM,QAAQ,MAAM,KAAK,SAAS,WAAW,EAAE,MAAM,OAAO,CAAC,EAAE,MAAM,MAAM,IAAI;AAC/E,WAAO,OAAO,OAAO,SAAS,WAAW,MAAM,OAAO;AAAA,EACxD;AAAA;AAAA,EAGA,eAAkC;AAChC,WAAO,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAC3B;AAAA;AAAA,EAGA,aAAmB;AAAA,EAAC;AAAA,EAEpB,OAAa;AACX,SAAK,MAAM,IAAI;AAAA,EACjB;AACF;AAEA,SAAS,SAASC,QAA2B;AAC3C,MAAI,SAAS;AACb,WAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK,MAAQ,WAAU,OAAO,aAAa,GAAGA,OAAM,SAAS,GAAG,IAAI,KAAM,CAAC;AAC7G,SAAO,KAAK,MAAM;AACpB;AAGO,SAAS,YAAY,WAA2B;AACrD,aAAW,CAAC,MAAM,EAAE,KAAK;AAAA,IACvB,CAAC,QAAQ,cAAc;AAAA,IACvB,CAAC,WAAW,kBAAkB;AAAA,IAC9B,CAAC,UAAU,8BAA8B;AAAA,IACzC,CAAC,UAAU,mCAAmC;AAAA,EAChD,GAAY;AACV,UAAM,IAAI,GAAG,KAAK,SAAS;AAC3B,QAAI,EAAG,QAAO,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;AAAA,EAC/B;AACA,SAAO;AACT;AAEA,SAAS,WAAW,WAA2B;AAC7C,MAAI,cAAc,KAAK,SAAS,EAAG,QAAO;AAC1C,MAAI,8BAA8B,KAAK,SAAS,EAAG,QAAO;AAC1D,MAAI,aAAa,KAAK,SAAS,EAAG,QAAO;AACzC,SAAO;AACT;;;ACnMO,SAAS,mBAAmB,SAA8C;AAC/E,QAAM,WAAW,IAAI,aAAa;AAClC,QAAM,MAAM,QAAQ,QAAQ,CAAC,SAAiB,QAAQ,MAAM,gBAAgB,IAAI,EAAE;AAClF,MAAI;AACJ,QAAM,gBAAgB,IAAI,QAAc,CAAC,YAAa,SAAS,OAAQ;AACvE,QAAM,OAAO,IAAI,WAAW;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,IACT;AAAA,IACA,cAAc,CAAC,WAAW,cAAc,OAAO,QAAQ,OAAO;AAAA,IAC9D,WAAW,QAAQ,aAAa;AAAA,IAChC;AAAA,IACA,MAAM,MAAM,OAAO;AAAA,EACrB,CAAC;AACD,OAAK,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,mBAAmB,eAAe,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1F,SAAO;AAAA,IACL,MAAM,CAAC,SAAS,QAAQ,SAAS,QAAQ,SAAS,GAAG;AAAA,IACrD,WAAW,CAAC,aAAa,SAAS,UAAU,QAAQ;AAAA,IACpD,QAAQ;AAAA,EACV;AACF;",
|
|
6
|
+
"names": ["next", "input", "offset", "opt", "array", "parse", "TokenType", "Position", "SourceLocation", "Parser", "ref", "match", "DestructuringErrors", "TokContext", "base", "Scope", "Node", "BranchID", "self", "RegExpValidationState", "current", "state", "Token", "next2", "state", "node", "override", "offset", "generated", "ContextualKeyword", "TokenType", "comma", "at", "Scope", "TokenType", "charCodes", "comma", "semicolon", "TokenType", "eat", "skipWhiteSpace", "TokenType", "next", "TokenType", "Token", "TokenType", "eat", "skipWhiteSpace", "IdentifierRole", "JSXRole", "TokenType", "base", "isHexDigit", "isDecimalDigit", "TokenType", "TokenType", "TokenType", "importedName", "semicolon", "input", "match", "url", "base", "array", "cast", "current", "TokenType", "TokenType", "d", "b", "VError", "NoopContext", "DetailContext", "DetailUnionResolver", "d", "b", "TType", "name", "TName", "lit", "TLiteral", "array", "TArray", "_i", "t", "TTuple", "union", "TUnion", "TIntersection", "TEnumType", "TEnumLiteral", "iface", "TIface", "opt", "TOptional", "TProp", "TFunc", "TParam", "TParamList", "param", "BasicType", "array_1", "createCheckers", "Checker", "TokenType", "eat", "TokenType", "eat", "FunctionType", "TokenType", "eat", "Token", "TokenType", "init_types", "TokenType", "eat", "Scope", "init_types", "lookahead", "TokenType", "eat", "TokenType", "Scope", "eat", "lookahead", "parse", "input", "isJSXEnabled", "isTypeScriptEnabled", "isFlowEnabled", "isFlowEnabled", "TokenType", "TokenType", "TokenType", "TokenType", "TokenType", "TokenType", "TokenType", "TokenType", "base", "TokenType", "TokenType", "TokenType", "TokenType", "TokenType", "TokenType", "token", "nextToken", "TokenType", "TokenType", "TokenType", "nextToken", "LinesAndColumns", "offset", "TokenType", "isJSXEnabled", "isTypeScriptEnabled", "isFlowEnabled", "parse", "parse", "stripTypes", "jsxSettings", "stripTypes", "parse", "state", "input", "data", "at", "next", "frame", "input", "state", "matches", "transform", "base", "bytes"]
|
|
7
|
+
}
|